UNPKG

825 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 46a605e6b57b3667c897","webpack:///./bin.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/core.js","webpack:///delegated ../node_modules/bluebird/js/browser/bluebird.js from dll-reference vendor","webpack:///delegated ../node_modules/ramda/index.js from dll-reference vendor","webpack:///./defer.js","webpack:///./service/time-manager.js","webpack:///external \"vendor\"","webpack:///./store.js","webpack:///./smart-timeout.js","webpack:///./crypto.js","webpack:///./http.js","webpack:///./service/secure-random.js","webpack:///./service/api-manager/index.js","webpack:///../~/detect-node/index.js","webpack:///delegated ../node_modules/jsbn/index.js from dll-reference vendor","webpack:///./for-each.js","webpack:///./service/dc-configurator.js","webpack:///./service/networker.js","webpack:///delegated ../node_modules/webpack/buildin/global.js from dll-reference vendor","webpack:///../~/@goodmind/node-cryptojs-aes/cryptojs.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/aes.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/cipher-core.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/enc-base64.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/evpkdf.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/jsonformatter.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/md5.js","webpack:///../~/@goodmind/node-cryptojs-aes/lib/sha256.js","webpack:///./error.js","webpack:///./leemon.js","webpack:///./service/api-manager/error-cases.js","webpack:///./service/authorizer/index.js","webpack:///./service/authorizer/send-plain-req.js","webpack:///./service/rsa-keys-manger.js","webpack:///./switch.js","webpack:///./tl.js","webpack:///../~/eventemitter2/lib/eventemitter2.js","webpack:///../~/rusha/rusha.js","webpack:///./worker.js","webpack:///../schema/api-57.json","webpack:///../schema/mtproto-57.json","webpack:///delegated ../node_modules/axios/index.js from dll-reference vendor","webpack:///delegated ../node_modules/pako/lib/inflate.js from dll-reference vendor","webpack:///./index.js"],"names":["CryptoJS","rushaInstance","bigint","num","toString","bigStringInt","strNum","dHexDump","bytes","arr","i","length","push","console","log","join","bytesToHex","bytesFromHex","hexString","len","start","parseInt","charAt","substr","bytesToBase64","mod3","result","nLen","nUint24","nIdx","String","fromCharCode","uint6ToBase64","replace","nUint6","bytesCmp","bytes1","bytes2","bytesXor","bytesToWords","ArrayBuffer","Uint8Array","words","lib","WordArray","init","bytesFromWords","wordArray","sigBytes","bytesFromBigInt","bigInt","toByteArray","padding","needPadding","bufferConcat","concat","slice","bytesFromLeemonBigInt","str","bigInt2str","bytesToArrayBuffer","b","buffer","convertToArrayBuffer","undefined","byteLength","BYTES_PER_ELEMENT","convertToUint8Array","convertToByteArray","Array","isArray","newBytes","bytesFromArrayBuffer","byteView","from","buffer1","buffer2","l1","l2","tmp","set","longToInts","sLong","divRem","divideAndRemainder","intValue","longToBytes","reverse","longFromInts","high","low","shiftLeft","add","intToUint","val","uintToInt","sha1HashSync","hashBytes","rawDigest","sha1BytesSync","sha256HashSync","hashWords","SHA256","rsaEncrypt","publicKey","addPadding","N","modulus","E","exponent","X","encryptedBigInt","modPowInt","encryptedBytes","blockSize","zeroes","nextBytes","aesEncryptSync","keyBytes","ivBytes","encryptedWords","AES","encrypt","iv","pad","NoPadding","mode","IGE","ciphertext","aesDecryptSync","decryptedWords","decrypt","gzipUncompress","inflate","nextRandomInt","maxValue","Math","floor","random","pqPrimeFactorization","pqBytes","what","pqPrimeLeemon","str2bigInt","ceil","pqPrimeJsbn","it","g","q","x","y","clone","lim","j","a","c","equals","BigInteger","ZERO","and","ONE","compareTo","subtract","shiftRight","z","gcd","f","divide","P","Q","minBits","minLen","copyInt_","copy_","isZero","add_","greater","sub_","rightShift_","eGCD_","equalsInt","divide_","bytesModPow","m","xBigInt","yBigInt","mBigInt","resBigInt","powMod","e","error","modPow","blueDefer","resolve","reject","promise","rs","rj","tsNow","seconds","t","Date","window","tsOffset","logTimer","getTime","dTime","toFixed","lastMessageID","timerOffset","offset","TimeOffset","get","generateMessageID","timeTicks","timeSec","timeMSec","messageID","applyServerTime","serverTime","localTime","newTimeOffset","changed","abs","ValueStore","newVal","ValueStoreMap","Map","key","dcList","flatProps","pipe","flip","AsyncStorage","store","flatGet","obj","remove","keys","omit","clr","Promise","clear","noPrefix","PureStorage","cancelToken","Symbol","timeoutRefs","WeakSet","pause","delay","r","setTimeout","smartTimeout","fn","args","newToken","checkRun","has","delete","then","cancel","token","immediate","require","convertIfArray","when","is","webWorker","taskID","awaiting","webCrypto","isNode","crypto","subtle","webkitSubtle","msCrypto","useWebCrypto","digest","useSha1Crypto","useSha256Crypto","finalizeTask","deferred","isCryptoTask","both","workerEnable","Worker","tmpWorker","onmessage","data","info","onerror","stack","postMessage","performTaskWorker","task","params","embed","sha1Hash","bytesTyped","name","sha256Hash","identity","aesEncrypt","aesDecrypt","factorize","CryptoWorker","httpClient","axios","create","defaults","headers","post","common","api57","mtproto57","hasPath","pathSatisfies","complement","defDc","unless","Number","always","withoutNil","baseDcID","Ln","propEq","ApiManager","constructor","server","api","app","debug","storage","schema","mtSchema","emitter","wildcard","on","bind","emit","cache","uploader","downloader","auth","servers","mtpGetNetworker","dcID","options","isUpload","fileUpload","fileDownload","Error","isNil","akk","ssk","dcUrl","chooseServer","networkGetter","authKeyHex","serverSaltHex","authKey","serverSalt","networkFabric","createNetworker","type","code","onDcAuth","storeObj","netError","mtpClearStorage","saveKeys","tap","values","restoreObj","forEach","value","serverConfig","mtpInvokeApi","setUserAuth","TL","keyManager","KeyManager","Serialization","Auth","apiConfig","NetworkerFabric","method","rejectPromise","Object","message","noErrorBox","input","cachedNetworker","cachedNetThunk","performRequest","requestThunk","waitTime","defError","networker","wrapApiCall","deferResolve","apiSavedNet","apiRecall","switchErrors","getDcNetworker","catch","userAuth","fullUserAuth","dc","user_auth","invokeWithLayer","layer","NaN","initConnection","api_id","device_model","system_version","app_version","lang_code","indexedMap","addIndex","func","ifElse","mapObjIndexed","sslSubdomains","devDC","id","host","port","prodDC","portString","findById","chosenServers","dev","webogram","upload","choosen","prop","chosenServer","subdomain","path","dcOption","updatesProcessor","iii","offlineInited","akStopped","appConfig","Deserialization","NetworkerThread","authKeyUint8","authKeyBuffer","authKeyID","updateSession","lastServerMessages","currentRequests","checkConnectionPeriod","sentMessages","clientMessages","pendingMessages","pendingAcks","pendingResends","connectionInited","pendingTimeouts","setInterval","checkLongPoll","seqNo","prevSessionID","sessionID","MtpSecureRandom","updateSentMessage","sentMessageID","sentMessage","container","newInner","updateInner","innerSentMessageID","innerSentMessage","msg_id","inner","generateID","seq_no","generateSeqNo","notContentRelated","wrapMtpCall","serializer","mtproto","storeMethod","body","getBytes","pushMessage","wrapMtpMessage","object","storeObject","storeIntString","afterMessageID","storeInt","storeLong","resultType","isAPI","noShedule","sheduleRequest","pushResend","innerMap","innerMsg","getMsgKeyIv","msgKey","isOut","sha1aText","sha1bText","sha1cText","sha1dText","promises","subarray","sha1a","sha1b","sha1c","sha1d","onAll","aesKey","aesIv","all","toggleOffline","enabled","offline","nextReqPromise","nextReq","checkConnectionPromise","checkConnection","min","onOnlineCb","longPollPending","getEncryptedMessage","f1","f2","bytesHash","f3","keyIv","f4","encryptFlow","pipeP","getDecryptedMessage","encryptedData","getKeyCurry","cryptoAesCurry","decryptFlow","parseResponse","responseBuffer","deserializer","fetchIntBytes","fetchRawBytes","getOffset","afterDecrypt","dataWithPadding","salt","fetchLong","isInvalidSession","warn","fetchInt","totalLength","messageBodyLength","messageBody","paddingLength","hashData","afterShaHash","dataHash","deserializerOptions","getDeserializeOpts","getMsgById","response","fetchObject","applyServerSalt","newServerSalt","performSheduledRequest","ackMessage","msgID","reqResendMessage","cleanupSent","notEmpty","cleanMessages","processError","rawError","matches","error_message","match","error_code","description","originalError","processMessage","msgidInt","_","messages","bad_msg_id","bad_msg_seqno","new_server_salt","badMessage","indexOf","shift","processMessageAck","first_msg_id","server_salt","onBaseDc","updateCond","msg_ids","answer_msg_id","spliceCond","lastResendReq","req_msg_id","resend_msg_ids","spliceMessage","dRes","checkLongPollCond","checkLongPollAfterDcCond","isClean","baseDc","sleepAfter","force","afterGetDc","sendLongPoll","onHttpWait","maxWait","max_delay","wait_after","max_wait","noResponse","longPoll","event","pingID","ping_id","pingMessage","sendEncryptedRequest","timeout","onNoResponseMsg","onNoResponseMsgReject","resetPendingMessage","ackMsgIDs","resendMsgIDs","resendOpts","messagesByteLen","currentTime","hasApiCall","hasHttpWait","lengthOverflow","singlesCount","onPendingMessage","messageByteLength","cond1","cond2","singleInRequest","noResponseMsgs","startMaxLength","onloads","innerMessages","storeRawBytes","containerSentMessage","afterSendRequest","afterResponseParse","max","sqrt","onRequestFail","getRequestUrl","storeIntBytes","url","baseError","afterRequestData","afterRequestReject","onEncryptedResult","encryptedResult","request","requestData","getArray","responseType","getBuffer","acked","badMsgID","pos","splice","msgGetter","override","mt_message","field","seqno","mt_rpc_result","startAll","stopAll","setUpdatesProcessor","callback","MTError","getMessage","fullMessage","ErrorBadResponse","ErrorNotFound","err","config","bpe","mask","radix","digitsStr","one","int2bigInt","ss","s0","s1","s2","s3","s4","s5","s6","s7","T","sa","mr_x1","mr_r","mr_a","eg_v","eg_u","eg_A","eg_B","eg_C","eg_D","md_q1","md_q2","md_q3","md_r","md_r1","md_r2","md_tt","primes","pows","s_i","s_i2","s_R","s_rm","s_q","s_n1","s_a","s_r2","s_n","s_b","s_d","s_x1","s_x2","s_aa","rpprb","k","buff","findPrimes","n","s","p","ans","millerRabinInt","dup","millerRabin","addInt_","powMod_","squareMod_","bitSize","w","expand","randTruePrime","randTruePrime_","trim","randProbPrime","randProbPrimeRounds","divisible","B","randBigInt_","modInt","mod","mod_","addInt","mult","mult_","sub","inverseMod","inverseMod_","multMod","multMod_","pm","dd","zz","recSize","pow","recLimit","carry_","multInt_","GCD_","randBigInt","GCD","xc","yc","xp","yp","A","C","D","sing","qp","linComb_","halve_","negative","inverseModInt","inverseModInt_","v","leftShift_","greaterShift","kx","ky","y1","y2","subShift_","linCombShift_","addShift_","bits","minSize","base","d","kk","substring","divInt_","ys","kn","k1","k2","np","mont_","ui","ks","cachedExportPromise","protect","errR","patterns","noBaseAuth","noDcAuth","migrate","floodWait","waitFail","matchProtect","matched","invoke","throwNext","getNet","importAuth","exportDeferred","dc_id","newDcID","now","stopTime","propOr","def","Switch","primeHex","select","prepare","sendPlainReq","SendPlainReq","mtpSendReqPQ","nonce","keyFoundCheck","factorizeThunk","pq","factDone","mtpSendReqDhParams","factFail","factorizer","serverNonce","server_nonce","fingerprints","server_public_key_fingerprints","sendPlainThunk","newNonce","new_nonce","dataWithHash","public_key_fingerprint","fingerprint","encrypted_data","newNonceHash","new_nonce_hash","mtpDecryptServerDhDataAnswer","encrypted_answer","mtpSendSetClientDhParams","encryptedAnswer","tmpAesKey","tmpAesIv","answerWithHash","hash","answerWithPadding","dhPrime","dh_prime","gA","g_a","server_time","retry","mtpVerifyDhParams","dhPrimeHex","gABigInt","dhPrimeBigInt","two","fromInt","twoPow","gBytes","afterPlainRequest","authKeyHash","authKeyAux","newNonceHash1","new_nonce_hash1","newNonceHash2","new_nonce_hash2","newNonceHash3","new_nonce_hash3","gB","retry_id","g_b","mtpAuth","cached","is404","pathEq","notError","allPass","SendPlain","onlySendPlainReq","requestBuffer","requestLength","requestArray","Int32Array","header","storeLongP","headerBuffer","headerArray","headerLength","resultBuffer","resultArray","reqPromise","props","req","onlySendPlainErr","onlySendPlainRes","auth_key_id","msg_len","publisKeysHex","publicKeysParsed","prepared","mapPrepare","RSAPublicKey","storeBytes","fingerprintBytes","setPrepared","prepareRsaKeys","map","selectRsaKey","fingerprintHex","foundKey","selectRsaKeyByFingerPrint","protector","mProtector","keyList","normalized","toUint32","buf","ln","res","Uint32Array","readUInt32LE","DataView","getUint32","mtApi","valType","rType","storeString","writeInt","maxLength","createBuffer","intView","typed","checkLength","needBytes","trace","previousBuffer","previousArray","storeBool","iHigh","iLow","storeDouble","doubleView","Float64Array","sUTF8","unescape","encodeURIComponent","charCodeAt","methodName","methodData","methods","param","condType","fieldBit","split","itemType","toLowerCase","predicate","isBare","constructorData","constructors","readInt","fetchDouble","longDec","fetchBool","fetchString","decodeURIComponent","escape","fetchBytes","fallback","subpart","constructorCmp","compressed","uncompressed","newDeserializer","checkType","index","constructorsIndex","schemaFallback","overrideKey","apply","isCond","pFlags","fetchEnd"],"mappings":"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ACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kBAAkB,MAAM;AACxB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA,aAAa;AACb;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;;;;;ACzsBA,+C;;;;;;ACAA,+C;;;;;;;;;ACAA;AACA;;;;;AAKO,MAAMS,YAAY,MAAM;AAC7B,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CA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sC;;;;;;ACVA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,mBAAmB;AACrD;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACtND;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,6EAA6E,kBAAkB;AAC/F;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,6EAA6E,kBAAkB;AAC/F;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA,uGAAuG,kBAAkB;AACzH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;;AAGA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B,kBAAkB,UAAU;AAC5B,kBAAkB,UAAU;AAC5B,kBAAkB,UAAU;AAC5B,kBAAkB,OAAO;AACzB,kBAAkB,KAAK;AACvB,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC,qCAAqC;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,iBAAiB;AACpC,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,SAAS;AACzH,gHAAgH,0CAA0C;AAC1J;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,oBAAoB;AACvC,mBAAmB,UAAU;AAC7B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,qHAAqH,0CAA0C;AAC/J,kHAAkH,0CAA0C;AAC5J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,4BAA4B;;AAEjE;AACA;AACA;;AAEA;AACA,wCAAwC,+BAA+B;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,iBAAiB;AACpC,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH,kCAAkC;AAC1J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,oBAAoB;AACvC,mBAAmB,OAAO;AAC1B,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,6HAA6H,kCAAkC;AAC/J,0HAA0H,kCAAkC;AAC5J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;AC98BD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;;AAEA;;AAEA,+BAA+B,sCAAsC;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,CAAC;;;;;;;AC9GD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B,sBAAsB,OAAO;AAC7B,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA,sDAAsD,aAAa;AACnE,sDAAsD,+BAA+B;AACrF;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC,mBAAmB,iBAAiB;AACpC;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC,eAAe,OAAO;AACtB;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,aAAa;AACnE,sDAAsD,+BAA+B;AACrF;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACvHD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sC;;;;;;AC7CA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,OAAO;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;AC/PD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,QAAQ;AACnC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,Q;;;;;;;;ACnLM,MAAM6S,OAAN,SAAsB/U,KAAtB,CAA4B;AACjC,SAAOgV,UAAP,CAAkBlU,IAAlB,EAAwBD,IAAxB,EAA8ByB,OAA9B,EAAuC;AACrC,WAAQ,MAAKxB,IAAK,KAAID,IAAK,KAAIyB,OAAQ,EAAvC;AACD;AACD9D,cAAYsC,IAAZ,EAAkBD,IAAlB,EAAwByB,OAAxB,EAAiC;AAC/B,UAAM2S,cAAcF,QAAQC,UAAR,CAAmBlU,IAAnB,EAAyBD,IAAzB,EAA+ByB,OAA/B,CAApB;AACA,UAAM2S,WAAN;AACA,SAAKnU,IAAL,GAAYA,IAAZ;AACA,SAAKD,IAAL,GAAYA,IAAZ;AACD;AATgC;AAAA;AAAA;;AAY5B,MAAMqU,gBAAN,SAA+BH,OAA/B,CAAuC;AAC5CvW,cAAY8U,GAAZ,EAAiB3E,gBAAgB,IAAjC,EAAuC;AACrC,UAAM,GAAN,EAAW,sBAAX,EAAmC2E,GAAnC;AACA,QAAI3E,aAAJ,EACE,KAAKA,aAAL,GAAqBA,aAArB;AACH;AAL2C;AAAA;AAAA;;AAQvC,MAAMwG,aAAN,SAA4BJ,OAA5B,CAAoC;AACzCvW,cAAY4W,GAAZ,EAAiB;AACf,UAAM,GAAN,EAAW,gBAAX,EAA6BA,IAAIC,MAAJ,CAAW/B,GAAxC;AACA,SAAK3E,aAAL,GAAqByG,GAArB;AACD;AAJwC,C;;;;;;;;;;;;;;;;;;;;;;;ACrB3C;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACO,IAAIE,MAAI,CAAR,C,CAAmB;AAC1B,IAAIC,OAAK,CAAT,C,CAAmB;AACnB,IAAIC,QAAMD,OAAK,CAAf,C,CAAmB;;AAEnB;AACA,IAAIE,YAAU,oGAAd;;AAEA;AACA,KAAKH,MAAI,CAAT,EAAa,KAAIA,MAAI,CAAT,GAAgB,KAAGA,GAA/B,EAAqCA,KAArC,CAA2C,C,CAAG;AAC9CA,QAAM,CAAN,C,CAA2B;AAC3BC,OAAK,CAAC,KAAGD,GAAJ,IAAS,CAAd,C,CAA2B;AAC3BE,QAAMD,OAAK,CAAX,C,CAA2B;AACpB,IAAIG,MAAIC,WAAW,CAAX,EAAa,CAAb,EAAe,CAAf,CAAR,C,CAA+B;;AAEtC;AACA;AACA,IAAInf,IAAE,IAAInI,KAAJ,CAAU,CAAV,CAAN;AACA,IAAIunB,KAAGpf,CAAP,C,CAAgB;AAChB,IAAIqf,KAAGrf,CAAP,C,CAAgB;AAChB,IA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B,EAAP;AACD,CAzqBM;AAAA;AAAA;;AA2qBP,wDAAepE,EAAf,C;;;;;;ACnsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,kDAAkD,uBAAuB;AACzE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,2BAA2B;AAC3B,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,wCAAwC,iCAAiC;AACzE;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,4CAA4C;AAC5C,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;;AAEA,iDAAiD,YAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AAAA;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACjtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC,aAAa;AACb,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAiC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,CAAC,I;;;;;;;AC7eD;AACA;AACA,E;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACxzUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACvsBA,+C;;;;;;ACAA,+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA/W,QAAQqR,IAAR,CAAa,eAAb;;AAEA;AACA,8DAAe,iFAAf,C","file":"mtproto2-browser.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vendor\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"vendor\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mtproto\"] = factory(require(\"vendor\"));\n\telse\n\t\troot[\"mtproto\"] = factory(root[\"vendor\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\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\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\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 46a605e6b57b3667c897","import { BigInteger, SecureRandom } from 'jsbn'\r\nimport Rusha from 'rusha'\r\nimport * as CryptoJSlib from '@goodmind/node-cryptojs-aes'\r\nconst { CryptoJS } = CryptoJSlib\r\n\r\nimport { inflate } from 'pako/lib/inflate'\r\n\r\n// import Int from 'big-integer'\r\n\r\n// import BN from 'bn.js'\r\n\r\nimport { eGCD_, greater, divide_, str2bigInt, equalsInt,\r\n isZero, bigInt2str, copy_, copyInt_, rightShift_,\r\n sub_, add_, powMod, bpe, one } from './leemon'\r\n\r\n// import { bigInt2str } from 'BigInt'\r\n\r\n// const { BigInteger } = jsbn\r\n\r\nconst rushaInstance = new Rusha(1024 * 1024)\r\n\r\nexport function bigint(num) {\r\n return new BigInteger(num.toString(16), 16)\r\n}\r\n\r\nexport function bigStringInt(strNum) {\r\n return new BigInteger(strNum, 10)\r\n}\r\n\r\nexport function dHexDump(bytes) {\r\n const arr = []\r\n for (let i = 0; i < bytes.length; i++) {\r\n if (i && !(i % 2)) {\r\n if (!(i % 16)) {\r\n arr.push('\\n')\r\n } else if (!(i % 4)) {\r\n arr.push(' ')\r\n } else {\r\n arr.push(' ')\r\n }\r\n }\r\n arr.push((bytes[i] < 16 ? '0' : '') + bytes[i].toString(16))\r\n }\r\n\r\n console.log(arr.join(''))\r\n}\r\n\r\nexport function bytesToHex(bytes = []) {\r\n const arr = []\r\n for (let i = 0; i < bytes.length; i++) {\r\n arr.push((bytes[i] < 16 ? '0' : '') + (bytes[i] || 0).toString(16))\r\n }\r\n return arr.join('')\r\n}\r\n\r\nexport function bytesFromHex(hexString) {\r\n const len = hexString.length\r\n let start = 0\r\n const bytes = []\r\n\r\n if (hexString.length % 2) {\r\n bytes.push(parseInt(hexString.charAt(0), 16))\r\n start++\r\n }\r\n\r\n for (let i = start; i < len; i += 2) {\r\n bytes.push(parseInt(hexString.substr(i, 2), 16))\r\n }\r\n\r\n return bytes\r\n}\r\n\r\nexport function bytesToBase64(bytes) {\r\n let mod3\r\n let result = ''\r\n\r\n for (let nLen = bytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n mod3 = nIdx % 3\r\n nUint24 |= bytes[nIdx] << (16 >>> mod3 & 24)\r\n if (mod3 === 2 || nLen - nIdx === 1) {\r\n result += String.fromCharCode(\r\n uint6ToBase64(nUint24 >>> 18 & 63),\r\n uint6ToBase64(nUint24 >>> 12 & 63),\r\n uint6ToBase64(nUint24 >>> 6 & 63),\r\n uint6ToBase64(nUint24 & 63)\r\n )\r\n nUint24 = 0\r\n }\r\n }\r\n\r\n return result.replace(/A(?=A$|$)/g, '=')\r\n}\r\n\r\nexport function uint6ToBase64(nUint6) {\r\n return nUint6 < 26\r\n ? nUint6 + 65\r\n : nUint6 < 52\r\n ? nUint6 + 71\r\n : nUint6 < 62\r\n ? nUint6 - 4\r\n : nUint6 === 62\r\n ? 43\r\n : nUint6 === 63\r\n ? 47\r\n : 65\r\n}\r\n\r\n// export function base64ToBlob(base64str, mimeType) {\r\n// const sliceSize = 1024\r\n// const byteCharacters = atob(base64str)\r\n// const bytesLength = byteCharacters.length\r\n// const slicesCount = Math.ceil(bytesLength / sliceSize)\r\n// const byteArrays = new Array(slicesCount)\r\n\r\n// for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\r\n// const begin = sliceIndex * sliceSize\r\n// const end = Math.min(begin + sliceSize, bytesLength)\r\n\r\n// const bytes = new Array(end - begin)\r\n// for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\r\n// bytes[i] = byteCharacters[offset].charCodeAt(0)\r\n// }\r\n// byteArrays[sliceIndex] = new Uint8Array(bytes)\r\n// }\r\n\r\n// return blobConstruct(byteArrays, mimeType)\r\n// }\r\n\r\n// export function dataUrlToBlob(url) {\r\n// // var name = 'b64blob ' + url.length\r\n// // console.time(name)\r\n// const urlParts = url.split(',')\r\n// const base64str = urlParts[1]\r\n// const mimeType = urlParts[0].split(':')[1].split(';')[0]\r\n// const blob = base64ToBlob(base64str, mimeType)\r\n// // console.timeEnd(name)\r\n// return blob\r\n// }\r\n\r\n// export function blobConstruct(blobParts, mimeType) {\r\n// let blob\r\n// try {\r\n// blob = new Blob(blobParts, { type: mimeType })\r\n// } catch (e) {\r\n// const bb = new BlobBuilder\r\n// angular.forEach(blobParts, function(blobPart) {\r\n// bb.append(blobPart)\r\n// })\r\n// blob = bb.getBlob(mimeType)\r\n// }\r\n// return blob\r\n// }\r\n\r\nexport function bytesCmp(bytes1, bytes2) {\r\n const len = bytes1.length\r\n if (len !== bytes2.length) {\r\n return false\r\n }\r\n\r\n for (let i = 0; i < len; i++) {\r\n if (bytes1[i] !== bytes2[i])\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport function bytesXor(bytes1, bytes2) {\r\n const len = bytes1.length\r\n const bytes = []\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = bytes1[i] ^ bytes2[i]\r\n }\r\n\r\n return bytes\r\n}\r\n\r\nexport function bytesToWords(bytes) {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n const len = bytes.length\r\n const words = []\r\n let i\r\n for (i = 0; i < len; i++) {\r\n words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8)\r\n }\r\n\r\n return new CryptoJS.lib.WordArray.init(words, len)\r\n}\r\n\r\nexport function bytesFromWords(wordArray) {\r\n const words = wordArray.words\r\n const sigBytes = wordArray.sigBytes\r\n const bytes = []\r\n\r\n for (let i = 0; i < sigBytes; i++) {\r\n bytes.push((words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)\r\n }\r\n\r\n return bytes\r\n}\r\n\r\nexport function bytesFromBigInt(bigInt, len) {\r\n let bytes = bigInt.toByteArray()\r\n\r\n if (len && bytes.length < len) {\r\n const padding = []\r\n for (let i = 0, needPadding = len - bytes.length; i < needPadding; i++) {\r\n padding[i] = 0\r\n }\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = bufferConcat(padding, bytes)\r\n } else {\r\n bytes = padding.concat(bytes)\r\n }\r\n } else {\r\n while (!bytes[0] && (!len || bytes.length > len)) {\r\n bytes = bytes.slice(1)\r\n }\r\n }\r\n\r\n return bytes\r\n}\r\n\r\nexport function bytesFromLeemonBigInt(bigInt, len) {\r\n const str = bigInt2str(bigInt, 16)\r\n return bytesFromHex(str)\r\n}\r\n\r\nexport function bytesToArrayBuffer(b) {\r\n return (new Uint8Array(b)).buffer\r\n}\r\n\r\nexport function convertToArrayBuffer(bytes) {\r\n // Be careful with converting subarrays!!\r\n if (bytes instanceof ArrayBuffer) {\r\n return bytes\r\n }\r\n if (bytes.buffer !== undefined &&\r\n bytes.buffer.byteLength == bytes.length * bytes.BYTES_PER_ELEMENT) {\r\n return bytes.buffer\r\n }\r\n return bytesToArrayBuffer(bytes)\r\n}\r\n\r\nexport function convertToUint8Array(bytes) {\r\n if (bytes.buffer !== undefined) {\r\n return bytes\r\n }\r\n return new Uint8Array(bytes)\r\n}\r\n\r\nexport function convertToByteArray(bytes) {\r\n if (Array.isArray(bytes)) {\r\n return bytes\r\n }\r\n bytes = convertToUint8Array(bytes)\r\n const newBytes = []\r\n for (let i = 0, len = bytes.length; i < len; i++) {\r\n newBytes.push(bytes[i])\r\n }\r\n return newBytes\r\n}\r\n\r\nexport function bytesFromArrayBuffer(buffer) {\r\n const byteView = new Uint8Array(buffer)\r\n const bytes = Array.from( byteView )\r\n return bytes\r\n}\r\n\r\nexport function bufferConcat(buffer1, buffer2) {\r\n const l1 = buffer1.byteLength || buffer1.length\r\n const l2 = buffer2.byteLength || buffer2.length\r\n const tmp = new Uint8Array(l1 + l2)\r\n tmp.set(\r\n buffer1 instanceof ArrayBuffer\r\n ? new Uint8Array(buffer1)\r\n : buffer1,\r\n 0)\r\n tmp.set(\r\n buffer2 instanceof ArrayBuffer\r\n ? new Uint8Array(buffer2)\r\n : buffer2,\r\n l1)\r\n\r\n return tmp.buffer\r\n}\r\n\r\nexport function longToInts(sLong) {\r\n const divRem = bigStringInt(sLong).divideAndRemainder(bigint(0x100000000))\r\n\r\n return [divRem[0].intValue(), divRem[1].intValue()]\r\n}\r\n\r\nexport function longToBytes(sLong) {\r\n return bytesFromWords({ words: longToInts(sLong), sigBytes: 8 }).reverse()\r\n}\r\n\r\nexport function longFromInts(high, low) {\r\n return bigint(high)\r\n .shiftLeft(32)\r\n .add(bigint(low))\r\n .toString(10)\r\n}\r\n\r\nexport function intToUint(val) {\r\n val = parseInt(val)\r\n if (val < 0) {\r\n val = val + 4294967296\r\n }\r\n return val\r\n}\r\n\r\nexport function uintToInt(val) {\r\n if (val > 2147483647) {\r\n val = val - 4294967296\r\n }\r\n return val\r\n}\r\n\r\nexport function sha1HashSync(bytes) {\r\n // console.log(dT(), 'SHA-1 hash start', bytes.byteLength || bytes.length)\r\n const hashBytes = rushaInstance.rawDigest(bytes).buffer\r\n // console.log(dT(), 'SHA-1 hash finish')\r\n\r\n return hashBytes\r\n}\r\n\r\nexport function sha1BytesSync(bytes) {\r\n return bytesFromArrayBuffer(sha1HashSync(bytes))\r\n}\r\n\r\nexport function sha256HashSync(bytes) {\r\n // console.log(dT(), 'SHA-2 hash start', bytes.byteLength || bytes.length)\r\n const hashWords = CryptoJS.SHA256(bytesToWords(bytes))\r\n // console.log(dT(), 'SHA-2 hash finish')\r\n\r\n const hashBytes = bytesFromWords(hashWords)\r\n\r\n return hashBytes\r\n}\r\n\r\nexport function rsaEncrypt(publicKey, bytes) {\r\n bytes = addPadding(bytes, 255)\r\n\r\n // console.log('RSA encrypt start')\r\n const N = new BigInteger(publicKey.modulus, 16)\r\n const E = new BigInteger(publicKey.exponent, 16)\r\n const X = new BigInteger(bytes)\r\n const encryptedBigInt = X.modPowInt(E, N),\r\n encryptedBytes = bytesFromBigInt(encryptedBigInt, 256)\r\n // console.log('RSA encrypt finish')\r\n\r\n return encryptedBytes\r\n}\r\n\r\nexport function addPadding(bytes, blockSize, zeroes) {\r\n blockSize = blockSize || 16\r\n const len = bytes.byteLength || bytes.length\r\n const needPadding = blockSize - (len % blockSize)\r\n if (needPadding > 0 && needPadding < blockSize) {\r\n const padding = new Array(needPadding)\r\n if (zeroes) {\r\n for (let i = 0; i < needPadding; i++) {\r\n padding[i] = 0\r\n }\r\n } else {\r\n (new SecureRandom()).nextBytes(padding)\r\n }\r\n\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = bufferConcat(bytes, padding)\r\n } else {\r\n bytes = bytes.concat(padding)\r\n }\r\n }\r\n\r\n return bytes\r\n}\r\n\r\nexport function aesEncryptSync(bytes, keyBytes, ivBytes) {\r\n const len = bytes.byteLength || bytes.length\r\n\r\n // console.log(dT(), 'AES encrypt start', len/*, bytesToHex(keyBytes), bytesToHex(ivBytes)*/)\r\n bytes = addPadding(bytes)\r\n\r\n const encryptedWords = CryptoJS.AES.encrypt(bytesToWords(bytes), bytesToWords(keyBytes), {\r\n iv : bytesToWords(ivBytes),\r\n padding: CryptoJS.pad.NoPadding,\r\n mode : CryptoJS.mode.IGE\r\n }).ciphertext\r\n\r\n const encryptedBytes = bytesFromWords(encryptedWords)\r\n // console.log(dT(), 'AES encrypt finish')\r\n\r\n return encryptedBytes\r\n}\r\n\r\nexport function aesDecryptSync(encryptedBytes, keyBytes, ivBytes) {\r\n\r\n // console.log(dT(), 'AES decrypt start', encryptedBytes.length)\r\n const decryptedWords = CryptoJS.AES.decrypt({ ciphertext: bytesToWords(encryptedBytes) }, bytesToWords(keyBytes), {\r\n iv : bytesToWords(ivBytes),\r\n padding: CryptoJS.pad.NoPadding,\r\n mode : CryptoJS.mode.IGE\r\n })\r\n\r\n const bytes = bytesFromWords(decryptedWords)\r\n // console.log(dT(), 'AES decrypt finish')\r\n\r\n return bytes\r\n}\r\n\r\nexport function gzipUncompress(bytes) {\r\n // console.log('Gzip uncompress start')\r\n const result = inflate(bytes)\r\n // console.log('Gzip uncompress finish')\r\n return result\r\n}\r\n\r\nexport function nextRandomInt(maxValue) {\r\n return Math.floor(Math.random() * maxValue)\r\n}\r\n\r\n// const bytesToInt = bytes => Int(bytesToHex(bytes), 16)\r\n// const bytesFromInt = int => bytesFromHex(int.toString(16))\r\n\r\nexport function pqPrimeFactorization(pqBytes) {\r\n const what = new BigInteger(pqBytes)\r\n // const whatInt = bytesToInt(pqBytes)\r\n // const whatBn = new BN(bytesToHex(pqBytes), 16)\r\n let result = false\r\n // let intRes = []\r\n // const bnRes = []\r\n // console.log(dT(), 'PQ start', pqBytes, what.toString(16), what.bitLength())\r\n\r\n // try {\r\n // console.time('pq leemon')\r\n // const toHex = bytesToHex(pqBytes)\r\n result = pqPrimeLeemon(str2bigInt(what.toString(16), 16, Math.ceil(64 / bpe) + 1))\r\n // console.timeEnd('pq leemon')\r\n // } catch (e) {\r\n // console.error('Pq leemon Exception', e)\r\n // }\r\n\r\n /*if (result === false && what.bitLength() <= 64) {\r\n // console.time('PQ long')\r\n try {\r\n result = pqPrimeLong(goog.math.Long.fromString(what.toString(16), 16))\r\n } catch (e) {\r\n console.error('Pq long Exception', e)\r\n }\r\n // console.timeEnd('PQ long')\r\n }*/\r\n // console.log(result)\r\n\r\n // if (result === false) {\r\n // console.time('pq BigInt')\r\n // intRes = pqPrimeJsbn(what)\r\n // console.timeEnd('pq BigInt')\r\n\r\n // console.time('pq bn')\r\n // bnRes = pqPrimeBN(whatBn)\r\n // console.timeEnd('pq bn')\r\n // }\r\n // console.log(...result, ...bnRes)\r\n // console.log(dT(), 'PQ finish')\r\n\r\n return result\r\n //intRes//result//bnRes\r\n}\r\n\r\n/*export function pqPrimeBN(what) {\r\n let it = 0,\r\n g\r\n const nOne = new BN(1)\r\n for (let i = 0; i < 3; i++) {\r\n const q = (nextRandomInt(128) & 15) + 17\r\n let x = new BN(nextRandomInt(1000000000) + 1)\r\n let y = x.clone()\r\n const lim = 1 << (i + 18)\r\n\r\n for (let j = 1; j < lim; j++) {\r\n ++it\r\n let a = x.clone()\r\n let b = x.clone()\r\n let c = new BN(q)\r\n\r\n while (!b.isZero()) {\r\n if (!b.and(nOne).isZero()) {\r\n c = c.add(a)\r\n if (c.gt(what)) {\r\n c = c.sub(what)\r\n }\r\n }\r\n a = a.add(a)\r\n if (a.gt(what)) {\r\n a = a.sub(what)\r\n }\r\n b = b.shrn(1)\r\n }\r\n\r\n x = c.clone()\r\n const z = x.lt(y)\r\n ? y.sub(x)\r\n : x.sub(y)\r\n g = z.gcd(what)\r\n if (!g.eq(nOne)) {\r\n break\r\n }\r\n if ((j & (j - 1)) == 0) {\r\n y = x.clone()\r\n }\r\n }\r\n if (g.gt(nOne)) {\r\n break\r\n }\r\n }\r\n\r\n let f = what.div(g), P, Q\r\n\r\n if (g.gt(f)) {\r\n P = f\r\n Q = g\r\n } else {\r\n P = g\r\n Q = f\r\n }\r\n\r\n return [P.toArray(), Q.toArray(), it]\r\n}*/\r\n\r\nexport function pqPrimeJsbn(what) {\r\n let it = 0,\r\n g\r\n for (let i = 0; i < 3; i++) {\r\n const q = (nextRandomInt(128) & 15) + 17\r\n let x = bigint(nextRandomInt(1000000000) + 1)\r\n let y = x.clone()\r\n const lim = 1 << (i + 18)\r\n\r\n for (let j = 1; j < lim; j++) {\r\n ++it\r\n let a = x.clone()\r\n let b = x.clone()\r\n let c = bigint(q)\r\n\r\n while (!b.equals(BigInteger.ZERO)) {\r\n if (!b.and(BigInteger.ONE).equals(BigInteger.ZERO)) {\r\n c = c.add(a)\r\n if (c.compareTo(what) > 0) {\r\n c = c.subtract(what)\r\n }\r\n }\r\n a = a.add(a)\r\n if (a.compareTo(what) > 0) {\r\n a = a.subtract(what)\r\n }\r\n b = b.shiftRight(1)\r\n }\r\n\r\n x = c.clone()\r\n const z = x.compareTo(y) < 0 ? y.subtract(x) : x.subtract(y)\r\n g = z.gcd(what)\r\n if (!g.equals(BigInteger.ONE)) {\r\n break\r\n }\r\n if ((j & (j - 1)) == 0) {\r\n y = x.clone()\r\n }\r\n }\r\n if (g.compareTo(BigInteger.ONE) > 0) {\r\n break\r\n }\r\n }\r\n\r\n let f = what.divide(g), P, Q\r\n\r\n if (g.compareTo(f) > 0) {\r\n P = f\r\n Q = g\r\n } else {\r\n P = g\r\n Q = f\r\n }\r\n\r\n return [bytesFromBigInt(P), bytesFromBigInt(Q), it]\r\n}\r\n\r\n/*export function pqPrimeBigInteger(what) {\r\n let it = 0,\r\n g\r\n for (let i = 0; i < 3; i++) {\r\n const q = (nextRandomInt(128) & 15) + 17\r\n let x = Int(nextRandomInt(1000000000) + 1)\r\n let y = Int(x)\r\n const lim = 1 << (i + 18)\r\n\r\n for (let j = 1; j < lim; j++) {\r\n ++it\r\n let a = Int(x)\r\n let b = Int(x)\r\n let c = Int(q)\r\n\r\n while (!b.isZero()) {\r\n if (!b.and(Int.one).isZero()) {\r\n c = c.add(a)\r\n if (c.greater(what))\r\n c = c.subtract(what)\r\n }\r\n a = a.add(a)\r\n if (a.greater(what))\r\n a = a.subtract(what)\r\n b = b.shiftRight(1)\r\n }\r\n\r\n x = Int(c)\r\n const z = x.lesser(y)\r\n ? y.subtract(x)\r\n : x.subtract(y)\r\n g = Int.gcd(z, what)\r\n if (g.notEquals(Int.one))\r\n break\r\n if ((j & (j - 1)) == 0)\r\n y = Int(x)\r\n }\r\n if (g.greater(Int.one))\r\n break\r\n }\r\n\r\n const f = what.divide(g)\r\n let P, Q\r\n\r\n if (g.greater(f)) {\r\n P = f\r\n Q = g\r\n } else {\r\n P = g\r\n Q = f\r\n }\r\n\r\n return [bytesFromInt(P), bytesFromInt(Q), it]\r\n}*/\r\n\r\n/*export function gcdLong(a, b) {\r\n while (a.notEquals(goog.math.Long.ZERO) && b.notEquals(goog.math.Long.ZERO)) {\r\n while (b.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO)) {\r\n b = b.shiftRight(1)\r\n }\r\n while (a.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO)) {\r\n a = a.shiftRight(1)\r\n }\r\n if (a.compare(b) > 0) {\r\n a = a.subtract(b)\r\n } else {\r\n b = b.subtract(a)\r\n }\r\n }\r\n return b.equals(goog.math.Long.ZERO) ? a : b\r\n}\r\n\r\nexport function pqPrimeLong(what) {\r\n let it = 0,\r\n g\r\n for (let i = 0; i < 3; i++) {\r\n const q = goog.math.Long.fromInt((nextRandomInt(128) & 15) + 17)\r\n let x = goog.math.Long.fromInt(nextRandomInt(1000000000) + 1)\r\n let y = x\r\n const lim = 1 << (i + 18)\r\n\r\n for (let j = 1; j < lim; j++) {\r\n ++it\r\n let a = x\r\n let b = x\r\n let c = q\r\n\r\n while (b.notEquals(goog.math.Long.ZERO)) {\r\n if (b.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)) {\r\n c = c.add(a)\r\n if (c.compare(what) > 0) {\r\n c = c.subtract(what)\r\n }\r\n }\r\n a = a.add(a)\r\n if (a.compare(what) > 0) {\r\n a = a.subtract(what)\r\n }\r\n b = b.shiftRight(1)\r\n }\r\n\r\n x = c\r\n const z = x.compare(y) < 0 ? y.subtract(x) : x.subtract(y)\r\n g = gcdLong(z, what)\r\n if (g.notEquals(goog.math.Long.ONE)) {\r\n break\r\n }\r\n if ((j & (j - 1)) == 0) {\r\n y = x\r\n }\r\n }\r\n if (g.compare(goog.math.Long.ONE) > 0) {\r\n break\r\n }\r\n }\r\n\r\n let f = what.div(g), P, Q\r\n\r\n if (g.compare(f) > 0) {\r\n P = f\r\n Q = g\r\n } else {\r\n P = g\r\n Q = f\r\n }\r\n\r\n return [bytesFromHex(P.toString(16)), bytesFromHex(Q.toString(16)), it]\r\n}*/\r\n\r\n/*//is bigint x equal to integer y?\r\n//y must have less than bpe bits\r\nfunction equalsInt(x,y) {\r\n var i;\r\n if (x[0]!=y)\r\n return 0;\r\n for (i=1;i<x.length;i++)\r\n if (x[i])\r\n return 0;\r\n return 1;\r\n}*/\r\n\r\nexport function pqPrimeLeemon(what) {\r\n const minBits = 64\r\n const minLen = Math.ceil(minBits / bpe) + 1\r\n let it = 0\r\n let q, lim\r\n const a = new Array(minLen)\r\n const b = new Array(minLen)\r\n const c = new Array(minLen)\r\n const g = new Array(minLen)\r\n const z = new Array(minLen)\r\n const x = new Array(minLen)\r\n const y = new Array(minLen)\r\n\r\n for (let i = 0; i < 3; i++) {\r\n q = (nextRandomInt(128) & 15) + 17\r\n copyInt_(x, nextRandomInt(1000000000) + 1)\r\n copy_(y, x)\r\n lim = 1 << (i + 18)\r\n\r\n for (let j = 1; j < lim; j++) {\r\n ++it\r\n copy_(a, x)\r\n copy_(b, x)\r\n copyInt_(c, q)\r\n\r\n while (!isZero(b)) {\r\n if (b[0] & 1) {\r\n add_(c, a)\r\n if (greater(c, what)) {\r\n sub_(c, what)\r\n }\r\n }\r\n add_(a, a)\r\n if (greater(a, what)) {\r\n sub_(a, what)\r\n }\r\n rightShift_(b, 1)\r\n }\r\n\r\n copy_(x, c)\r\n if (greater(x, y)) {\r\n copy_(z, x)\r\n sub_(z, y)\r\n } else {\r\n copy_(z, y)\r\n sub_(z, x)\r\n }\r\n eGCD_(z, what, g, a, b)\r\n if (!equalsInt(g, 1)) {\r\n break\r\n }\r\n if ((j & (j - 1)) === 0) {\r\n copy_(y, x)\r\n }\r\n }\r\n if (greater(g, one)) {\r\n break\r\n }\r\n }\r\n\r\n divide_(what, g, x, y)\r\n\r\n const [P, Q] =\r\n greater(g, x)\r\n ? [x, g]\r\n : [g, x]\r\n\r\n // console.log(dT(), 'done', bigInt2str(what, 10), bigInt2str(P, 10), bigInt2str(Q, 10))\r\n\r\n return [bytesFromLeemonBigInt(P), bytesFromLeemonBigInt(Q), it]\r\n}\r\n\r\nexport function bytesModPow(x, y, m) {\r\n try {\r\n const xBigInt = str2bigInt(bytesToHex(x), 16)\r\n const yBigInt = str2bigInt(bytesToHex(y), 16)\r\n const mBigInt = str2bigInt(bytesToHex(m), 16)\r\n const resBigInt = powMod(xBigInt, yBigInt, mBigInt)\r\n\r\n return bytesFromHex(bigInt2str(resBigInt, 16))\r\n } catch (e) {\r\n console.error('mod pow error', e)\r\n }\r\n\r\n return bytesFromBigInt(new BigInteger(x).modPow(new BigInteger(y), new BigInteger(m)), 256)\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./bin.js","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * CryptoJS core components.\r\n */\r\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n /**\r\n * CryptoJS namespace.\r\n */\r\n var C = {};\r\n\r\n /**\r\n * Library namespace.\r\n */\r\n var C_lib = C.lib = {};\r\n\r\n /**\r\n * Base object for prototypal inheritance.\r\n */\r\n var Base = C_lib.Base = (function () {\r\n function F() {}\r\n\r\n return {\r\n /**\r\n * Creates a new object that inherits from this object.\r\n *\r\n * @param {Object} overrides Properties to copy into the new object.\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * field: 'value',\r\n *\r\n * method: function () {\r\n * }\r\n * });\r\n */\r\n extend: function (overrides) {\r\n // Spawn\r\n F.prototype = this;\r\n var subtype = new F();\r\n\r\n // Augment\r\n if (overrides) {\r\n subtype.mixIn(overrides);\r\n }\r\n\r\n // Create default initializer\r\n if (!subtype.hasOwnProperty('init')) {\r\n subtype.init = function () {\r\n subtype.$super.init.apply(this, arguments);\r\n };\r\n }\r\n\r\n // Initializer's prototype is the subtype object\r\n subtype.init.prototype = subtype;\r\n\r\n // Reference supertype\r\n subtype.$super = this;\r\n\r\n return subtype;\r\n },\r\n\r\n /**\r\n * Extends this object and runs the init method.\r\n * Arguments to create() will be passed to init().\r\n *\r\n * @return {Object} The new object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var instance = MyType.create();\r\n */\r\n create: function () {\r\n var instance = this.extend();\r\n instance.init.apply(instance, arguments);\r\n\r\n return instance;\r\n },\r\n\r\n /**\r\n * Initializes a newly created object.\r\n * Override this method to add some logic when your objects are created.\r\n *\r\n * @example\r\n *\r\n * var MyType = CryptoJS.lib.Base.extend({\r\n * init: function () {\r\n * // ...\r\n * }\r\n * });\r\n */\r\n init: function () {\r\n },\r\n\r\n /**\r\n * Copies properties into this object.\r\n *\r\n * @param {Object} properties The properties to mix in.\r\n *\r\n * @example\r\n *\r\n * MyType.mixIn({\r\n * field: 'value'\r\n * });\r\n */\r\n mixIn: function (properties) {\r\n for (var propertyName in properties) {\r\n if (properties.hasOwnProperty(propertyName)) {\r\n this[propertyName] = properties[propertyName];\r\n }\r\n }\r\n\r\n // IE won't copy toString using the loop above\r\n if (properties.hasOwnProperty('toString')) {\r\n this.toString = properties.toString;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = instance.clone();\r\n */\r\n clone: function () {\r\n return this.init.prototype.extend(this);\r\n }\r\n };\r\n }());\r\n\r\n /**\r\n * An array of 32-bit words.\r\n *\r\n * @property {Array} words The array of 32-bit words.\r\n * @property {number} sigBytes The number of significant bytes in this word array.\r\n */\r\n var WordArray = C_lib.WordArray = Base.extend({\r\n /**\r\n * Initializes a newly created word array.\r\n *\r\n * @param {Array} words (Optional) An array of 32-bit words.\r\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.create();\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n */\r\n init: function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes != undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 4;\r\n }\r\n },\r\n\r\n /**\r\n * Converts this word array to a string.\r\n *\r\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n *\r\n * @return {string} The stringified word array.\r\n *\r\n * @example\r\n *\r\n * var string = wordArray + '';\r\n * var string = wordArray.toString();\r\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n */\r\n toString: function (encoder) {\r\n return (encoder || Hex).stringify(this);\r\n },\r\n\r\n /**\r\n * Concatenates a word array to this word array.\r\n *\r\n * @param {WordArray} wordArray The word array to append.\r\n *\r\n * @return {WordArray} This word array.\r\n *\r\n * @example\r\n *\r\n * wordArray1.concat(wordArray2);\r\n */\r\n concat: function (wordArray) {\r\n // Shortcuts\r\n var thisWords = this.words;\r\n var thatWords = wordArray.words;\r\n var thisSigBytes = this.sigBytes;\r\n var thatSigBytes = wordArray.sigBytes;\r\n\r\n // Clamp excess bits\r\n this.clamp();\r\n\r\n // Concat\r\n if (thisSigBytes % 4) {\r\n // Copy one byte at a time\r\n for (var i = 0; i < thatSigBytes; i++) {\r\n var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n }\r\n } else if (thatWords.length > 0xffff) {\r\n // Copy one word at a time\r\n for (var i = 0; i < thatSigBytes; i += 4) {\r\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n }\r\n } else {\r\n // Copy all words at once\r\n thisWords.push.apply(thisWords, thatWords);\r\n }\r\n this.sigBytes += thatSigBytes;\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Removes insignificant bits.\r\n *\r\n * @example\r\n *\r\n * wordArray.clamp();\r\n */\r\n clamp: function () {\r\n // Shortcuts\r\n var words = this.words;\r\n var sigBytes = this.sigBytes;\r\n\r\n // Clamp\r\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n words.length = Math.ceil(sigBytes / 4);\r\n },\r\n\r\n /**\r\n * Creates a copy of this word array.\r\n *\r\n * @return {WordArray} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = wordArray.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone.words = this.words.slice(0);\r\n\r\n return clone;\r\n },\r\n\r\n /**\r\n * Creates a word array filled with random bytes.\r\n *\r\n * @param {number} nBytes The number of random bytes to generate.\r\n *\r\n * @return {WordArray} The random word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n */\r\n random: function (nBytes) {\r\n var words = [];\r\n for (var i = 0; i < nBytes; i += 4) {\r\n words.push((Math.random() * 0x100000000) | 0);\r\n }\r\n\r\n return new WordArray.init(words, nBytes);\r\n }\r\n });\r\n\r\n /**\r\n * Encoder namespace.\r\n */\r\n var C_enc = C.enc = {};\r\n\r\n /**\r\n * Hex encoding strategy.\r\n */\r\n var Hex = C_enc.Hex = {\r\n /**\r\n * Converts a word array to a hex string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The hex string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var hexChars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n hexChars.push((bite >>> 4).toString(16));\r\n hexChars.push((bite & 0x0f).toString(16));\r\n }\r\n\r\n return hexChars.join('');\r\n },\r\n\r\n /**\r\n * Converts a hex string to a word array.\r\n *\r\n * @param {string} hexStr The hex string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n */\r\n parse: function (hexStr) {\r\n // Shortcut\r\n var hexStrLength = hexStr.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < hexStrLength; i += 2) {\r\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n }\r\n\r\n return new WordArray.init(words, hexStrLength / 2);\r\n }\r\n };\r\n\r\n /**\r\n * Latin1 encoding strategy.\r\n */\r\n var Latin1 = C_enc.Latin1 = {\r\n /**\r\n * Converts a word array to a Latin1 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The Latin1 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n // Shortcuts\r\n var words = wordArray.words;\r\n var sigBytes = wordArray.sigBytes;\r\n\r\n // Convert\r\n var latin1Chars = [];\r\n for (var i = 0; i < sigBytes; i++) {\r\n var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n },\r\n\r\n /**\r\n * Converts a Latin1 string to a word array.\r\n *\r\n * @param {string} latin1Str The Latin1 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n */\r\n parse: function (latin1Str) {\r\n // Shortcut\r\n var latin1StrLength = latin1Str.length;\r\n\r\n // Convert\r\n var words = [];\r\n for (var i = 0; i < latin1StrLength; i++) {\r\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n }\r\n\r\n return new WordArray.init(words, latin1StrLength);\r\n }\r\n };\r\n\r\n /**\r\n * UTF-8 encoding strategy.\r\n */\r\n var Utf8 = C_enc.Utf8 = {\r\n /**\r\n * Converts a word array to a UTF-8 string.\r\n *\r\n * @param {WordArray} wordArray The word array.\r\n *\r\n * @return {string} The UTF-8 string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n */\r\n stringify: function (wordArray) {\r\n try {\r\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n },\r\n\r\n /**\r\n * Converts a UTF-8 string to a word array.\r\n *\r\n * @param {string} utf8Str The UTF-8 string.\r\n *\r\n * @return {WordArray} The word array.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n */\r\n parse: function (utf8Str) {\r\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n }\r\n };\r\n\r\n /**\r\n * Abstract buffered block algorithm template.\r\n *\r\n * The property blockSize must be implemented in a concrete subtype.\r\n *\r\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n */\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n /**\r\n * Resets this block algorithm's data buffer to its initial state.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm.reset();\r\n */\r\n reset: function () {\r\n // Initial values\r\n this._data = new WordArray.init();\r\n this._nDataBytes = 0;\r\n },\r\n\r\n /**\r\n * Adds new data to this block algorithm's buffer.\r\n *\r\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n *\r\n * @example\r\n *\r\n * bufferedBlockAlgorithm._append('data');\r\n * bufferedBlockAlgorithm._append(wordArray);\r\n */\r\n _append: function (data) {\r\n // Convert string to WordArray, else assume WordArray already\r\n if (typeof data == 'string') {\r\n data = Utf8.parse(data);\r\n }\r\n\r\n // Append\r\n this._data.concat(data);\r\n this._nDataBytes += data.sigBytes;\r\n },\r\n\r\n /**\r\n * Processes available data blocks.\r\n *\r\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n *\r\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n *\r\n * @return {WordArray} The processed data.\r\n *\r\n * @example\r\n *\r\n * var processedData = bufferedBlockAlgorithm._process();\r\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n */\r\n _process: function (doFlush) {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n var dataSigBytes = data.sigBytes;\r\n var blockSize = this.blockSize;\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count blocks ready\r\n var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n if (doFlush) {\r\n // Round up to include partial blocks\r\n nBlocksReady = Math.ceil(nBlocksReady);\r\n } else {\r\n // Round down to include only full blocks,\r\n // less the number of blocks that must remain in the buffer\r\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n }\r\n\r\n // Count words ready\r\n var nWordsReady = nBlocksReady * blockSize;\r\n\r\n // Count bytes ready\r\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n // Process blocks\r\n if (nWordsReady) {\r\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n // Perform concrete-algorithm logic\r\n this._doProcessBlock(dataWords, offset);\r\n }\r\n\r\n // Remove processed words\r\n var processedWords = dataWords.splice(0, nWordsReady);\r\n data.sigBytes -= nBytesReady;\r\n }\r\n\r\n // Return processed words\r\n return new WordArray.init(processedWords, nBytesReady);\r\n },\r\n\r\n /**\r\n * Creates a copy of this object.\r\n *\r\n * @return {Object} The clone.\r\n *\r\n * @example\r\n *\r\n * var clone = bufferedBlockAlgorithm.clone();\r\n */\r\n clone: function () {\r\n var clone = Base.clone.call(this);\r\n clone._data = this._data.clone();\r\n\r\n return clone;\r\n },\r\n\r\n _minBufferSize: 0\r\n });\r\n\r\n /**\r\n * Abstract hasher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n */\r\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Initializes a newly created hasher.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n *\r\n * @example\r\n *\r\n * var hasher = CryptoJS.algo.SHA256.create();\r\n */\r\n init: function (cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this hasher to its initial state.\r\n *\r\n * @example\r\n *\r\n * hasher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-hasher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Updates this hasher with a message.\r\n *\r\n * @param {WordArray|string} messageUpdate The message to append.\r\n *\r\n * @return {Hasher} This hasher.\r\n *\r\n * @example\r\n *\r\n * hasher.update('message');\r\n * hasher.update(wordArray);\r\n */\r\n update: function (messageUpdate) {\r\n // Append\r\n this._append(messageUpdate);\r\n\r\n // Update the hash\r\n this._process();\r\n\r\n // Chainable\r\n return this;\r\n },\r\n\r\n /**\r\n * Finalizes the hash computation.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @example\r\n *\r\n * var hash = hasher.finalize();\r\n * var hash = hasher.finalize('message');\r\n * var hash = hasher.finalize(wordArray);\r\n */\r\n finalize: function (messageUpdate) {\r\n // Final message update\r\n if (messageUpdate) {\r\n this._append(messageUpdate);\r\n }\r\n\r\n // Perform concrete-hasher logic\r\n var hash = this._doFinalize();\r\n\r\n return hash;\r\n },\r\n\r\n blockSize: 512/32,\r\n\r\n /**\r\n * Creates a shortcut function to a hasher's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to create a helper for.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHelper: function (hasher) {\r\n return function (message, cfg) {\r\n return new hasher.init(cfg).finalize(message);\r\n };\r\n },\r\n\r\n /**\r\n * Creates a shortcut function to the HMAC's object interface.\r\n *\r\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n *\r\n * @return {Function} The shortcut function.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n */\r\n _createHmacHelper: function (hasher) {\r\n return function (message, key) {\r\n return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n };\r\n }\r\n });\r\n\r\n /**\r\n * Algorithm namespace.\r\n */\r\n var C_algo = C.algo = {};\r\n\r\n return C;\r\n}(Math));\r\n\r\nexports.CryptoJS = CryptoJS;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/core.js\n// module id = 1\n// module chunks = 0","module.exports = (__webpack_require__(6))(125);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/bluebird/js/browser/bluebird.js from dll-reference vendor\n// module id = 2\n// module chunks = 0","module.exports = (__webpack_require__(6))(128);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/ramda/index.js from dll-reference vendor\n// module id = 3\n// module chunks = 0","import Promise from 'bluebird'\r\n/**\r\n * Defered promise like in Q and $q\r\n *\r\n * @returns {{ resolve: (res: any) => void, reject: (res: any) => void, promise: Promise<{}> }}\r\n */\r\nexport const blueDefer = () => {\r\n let resolve, reject\r\n const promise = new Promise((rs, rj) => {\r\n resolve = rs\r\n reject = rj\r\n })\r\n return {\r\n resolve,\r\n reject,\r\n promise\r\n }\r\n}\r\n\r\nexport default blueDefer\n\n\n// WEBPACK FOOTER //\n// ./defer.js","import isNode from 'detect-node'\r\n\r\nimport { TimeOffset } from '../store'\r\nimport { nextRandomInt, longFromInts } from '../bin'\r\n\r\nexport const tsNow = seconds => {\r\n let t = +new Date()\r\n //eslint-disable-next-line\r\n if (!isNode) t += window.tsOffset || 0\r\n return seconds\r\n ? Math.floor(t / 1000)\r\n : t\r\n}\r\n\r\nconst logTimer = (new Date()).getTime()\r\n\r\nexport const dTime = () => `[${(((new Date()).getTime() -logTimer) / 1000).toFixed(3)}]`\r\n\r\nlet lastMessageID = [0, 0]\r\nlet timerOffset = 0\r\n\r\nconst offset = TimeOffset.get()\r\nif (offset) timerOffset = offset\r\n\r\nconst generateMessageID = () => {\r\n const timeTicks = tsNow(),\r\n timeSec = Math.floor(timeTicks / 1000) + timerOffset,\r\n timeMSec = timeTicks % 1000,\r\n random = nextRandomInt(0xFFFF)\r\n\r\n let messageID = [timeSec, timeMSec << 21 | random << 3 | 4]\r\n if (lastMessageID[0] > messageID[0] ||\r\n lastMessageID[0] == messageID[0] && lastMessageID[1] >= messageID[1]) {\r\n messageID = [lastMessageID[0], lastMessageID[1] + 4]\r\n }\r\n\r\n lastMessageID = messageID\r\n\r\n // console.log('generated msg id', messageID, timerOffset)\r\n\r\n return longFromInts(messageID[0], messageID[1])\r\n}\r\n\r\nexport const applyServerTime = (serverTime, localTime) => {\r\n const newTimeOffset = serverTime - Math.floor((localTime || tsNow()) / 1000)\r\n const changed = Math.abs(timerOffset - newTimeOffset) > 10\r\n TimeOffset.set(newTimeOffset)\r\n\r\n lastMessageID = [0, 0]\r\n timerOffset = newTimeOffset\r\n console.log(dTime(), 'Apply server time', serverTime, localTime, newTimeOffset, changed)\r\n\r\n return changed\r\n}\r\n\r\nexport { generateMessageID as generateID }\r\n\n\n\n// WEBPACK FOOTER //\n// ./service/time-manager.js","module.exports = vendor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"vendor\"\n// module id = 6\n// module chunks = 0","import Promise from 'bluebird'\r\n\r\nimport { clone, unapply, pipe, omit, flip, props } from 'ramda'\r\n\r\nexport const ValueStore = () => {\r\n let val = null\r\n\r\n return {\r\n get: () => clone(val),\r\n set: newVal => val = newVal\r\n }\r\n}\r\n\r\nexport const ValueStoreMap = () => {\r\n const val = new Map\r\n\r\n return {\r\n get: key => clone(val.get(key)),\r\n set: (key, newVal) => val.set(key, newVal)\r\n }\r\n}\r\n\r\nexport const TimeOffset = ValueStore()\r\nexport const dcList = ValueStoreMap()\r\n\r\n\r\nconst flatProps = pipe(flip(props), unapply)\r\n\r\nexport const AsyncStorage = () => {\r\n let store = {}\r\n\r\n const flatGet = flatProps(store)\r\n const set = obj => store = { ...store, ...obj }\r\n const remove = keys => store = omit(keys, store)\r\n const clr = () => store = {}\r\n return {\r\n get : (...keys) => Promise.resolve(flatGet(...keys)),\r\n set : obj => Promise.resolve(set(obj)),\r\n remove : (...keys) => Promise.resolve(remove(keys)),\r\n clear : () => Promise.resolve(clr()),\r\n noPrefix: () => ({}),\r\n }\r\n}\r\n\r\nexport const PureStorage = AsyncStorage() /*{\r\n get : (...keys) => new Promise(rs => ConfigStorage.get(keys, rs)),\r\n set : obj => new Promise(rs => ConfigStorage.set(obj, rs)),\r\n remove : (...keys) => new Promise(rs => ConfigStorage.remove(...keys, rs)),\r\n noPrefix: () => ConfigStorage.noPrefix(),\r\n clear : () => new Promise(rs => ConfigStorage.clear(rs))\r\n}*/\r\n\n\n\n// WEBPACK FOOTER //\n// ./store.js","import Promise from 'bluebird'\r\n\r\nconst cancelToken = Symbol('cancel token')\r\n\r\nconst timeoutRefs = new WeakSet\r\n\r\nconst pause = delay => new Promise(r => setTimeout(r, delay))\r\n\r\nexport const smartTimeout = (fn, delay = 0, ...args) => {\r\n const newToken = Symbol('cancel id')\r\n const checkRun = () => {\r\n if (timeoutRefs.has(newToken)) {\r\n timeoutRefs.delete(newToken)\r\n return fn(...args)\r\n } else return false\r\n }\r\n const promise = pause(delay).then(checkRun)\r\n promise[cancelToken] = newToken\r\n return promise\r\n}\r\n\r\nsmartTimeout.cancel = promise => {\r\n if (!promise || !promise[cancelToken]) return false\r\n const token = promise[cancelToken]\r\n return timeoutRefs.has(token)\r\n ? timeoutRefs.delete(token)\r\n : false\r\n}\r\n\r\nsmartTimeout.immediate = (fn, ...args) =>\r\n Promise\r\n .resolve()\r\n .then(() => fn(...args))\r\n\r\nsmartTimeout.promise = (fn, delay = 0, ...args) => pause(delay)\r\n .then(() => fn(...args))\r\n\r\nexport default smartTimeout\n\n\n// WEBPACK FOOTER //\n// ./smart-timeout.js","import { when, is, identity, has, both } from 'ramda'\r\nimport isNode from 'detect-node'\r\n\r\nrequire('worker-loader!./worker.js')\r\n\r\nimport blueDefer from './defer'\r\nimport smartTimeout from './smart-timeout'\r\nimport { convertToUint8Array, sha1HashSync, sha256HashSync,\r\n aesEncryptSync, aesDecryptSync, convertToByteArray, convertToArrayBuffer,\r\n pqPrimeFactorization, bytesModPow } from './bin'\r\n\r\nconst convertIfArray = when(is(Array), convertToUint8Array)\r\nlet webWorker = !isNode\r\nlet taskID = 0\r\nconst awaiting = {}\r\nconst webCrypto = isNode\r\n ? false\r\n //eslint-disable-next-line\r\n : window.crypto.subtle || window.crypto.webkitSubtle //TODO remove browser depends\r\n //eslint-disable-next-line\r\n || window.msCrypto && window.msCrypto.subtle\r\nconst useWebCrypto = webCrypto && !!webCrypto.digest\r\nlet useSha1Crypto = useWebCrypto\r\nlet useSha256Crypto = useWebCrypto\r\nconst finalizeTask = (taskID, result) => {\r\n const deferred = awaiting[taskID]\r\n if (deferred) {\r\n // console.log(rework_d_T(), 'CW done')\r\n deferred.resolve(result) //TODO Possibly, can be used as\r\n delete awaiting[taskID] //\r\n } // deferred = Promise.resolve()\r\n} // deferred.resolve( result )\r\n\r\nconst isCryptoTask = both(has('taskID'), has('result'))\r\n\r\n//eslint-disable-next-line\r\nconst workerEnable = !isNode && window.Worker\r\nif (workerEnable) {\r\n const tmpWorker = new Worker('./bundle/hash.worker.js')\r\n // tmpWorker.onmessage = function(event) {\r\n // console.info('CW tmpWorker.onmessage', event && event.data)\r\n // }\r\n tmpWorker.onmessage = e => {\r\n if (e.data === 'ready') {\r\n console.info('CW ready')\r\n } else if (!isCryptoTask(e.data)) {\r\n console.info('Not crypto task', e, e.data)\r\n return e\r\n } else\r\n return webWorker\r\n ? finalizeTask(e.data.taskID, e.data.result)\r\n : webWorker = tmpWorker\r\n }\r\n\r\n tmpWorker.onerror = function(error) {\r\n console.error('CW error', error, error.stack)\r\n webWorker = false\r\n }\r\n tmpWorker.postMessage('b')\r\n webWorker = tmpWorker\r\n}\r\n\r\nconst performTaskWorker = (task, params, embed) => {\r\n // console.log(rework_d_T(), 'CW start', task)\r\n const deferred = blueDefer()\r\n\r\n awaiting[taskID] = deferred\r\n\r\n params.task = task\r\n params.taskID = taskID\r\n ;(embed || webWorker).postMessage(params)\r\n\r\n taskID++\r\n\r\n return deferred.promise\r\n}\r\n\r\nconst sha1Hash = bytes => {\r\n if (useSha1Crypto) {\r\n // We don't use buffer since typedArray.subarray(...).buffer gives the whole buffer and not sliced one.\r\n // webCrypto.digest supports typed array\r\n const bytesTyped = convertIfArray(bytes)\r\n // console.log(rework_d_T(), 'Native sha1 start')\r\n return webCrypto.digest({ name: 'SHA-1' }, bytesTyped).then(digest =>\r\n // console.log(rework_d_T(), 'Native sha1 done')\r\n digest, e => {\r\n console.error('Crypto digest error', e)\r\n useSha1Crypto = false\r\n return sha1HashSync(bytes)\r\n })\r\n }\r\n return smartTimeout.immediate(sha1HashSync, bytes)\r\n}\r\n\r\nconst sha256Hash = bytes => {\r\n if (useSha256Crypto) {\r\n const bytesTyped = convertIfArray(bytes)\r\n // console.log(rework_d_T(), 'Native sha1 start')\r\n return webCrypto.digest({ name: 'SHA-256' }, bytesTyped)\r\n .then(identity\r\n // console.log(rework_d_T(), 'Native sha1 done')\r\n , e => {\r\n console.error('Crypto digest error', e)\r\n useSha256Crypto = false\r\n return sha256HashSync(bytes)\r\n })\r\n }\r\n return smartTimeout.immediate(sha256HashSync, bytes)\r\n}\r\n\r\nconst aesEncrypt = (bytes, keyBytes, ivBytes) =>\r\n smartTimeout.immediate(() => convertToArrayBuffer(aesEncryptSync(bytes, keyBytes, ivBytes)))\r\n\r\nconst aesDecrypt = (encryptedBytes, keyBytes, ivBytes) =>\r\n smartTimeout.immediate(() => convertToArrayBuffer(\r\n aesDecryptSync(encryptedBytes, keyBytes, ivBytes)))\r\n\r\nconst factorize = bytes => {\r\n bytes = convertToByteArray(bytes)\r\n return webWorker\r\n ? performTaskWorker('factorize', { bytes })\r\n : smartTimeout.immediate(pqPrimeFactorization, bytes)\r\n}\r\n\r\nconst modPow = (x, y, m) => webWorker\r\n ? performTaskWorker('mod-pow', {\r\n x,\r\n y,\r\n m\r\n })\r\n : smartTimeout.immediate(bytesModPow, x, y, m)\r\n\r\nexport const CryptoWorker = {\r\n sha1Hash,\r\n sha256Hash,\r\n aesEncrypt,\r\n aesDecrypt,\r\n factorize,\r\n modPow\r\n}\r\n\r\nexport default CryptoWorker\n\n\n// WEBPACK FOOTER //\n// ./crypto.js","import axios from 'axios'\r\n\r\nexport const httpClient = axios.create()\r\ndelete httpClient.defaults.headers.post['Content-Type']\r\ndelete httpClient.defaults.headers.common['Accept']\r\n\r\nexport default httpClient\n\n\n// WEBPACK FOOTER //\n// ./http.js","import { SecureRandom } from 'jsbn'\r\n\r\nexport const random = new SecureRandom()\r\n\r\nexport default random\n\n\n// WEBPACK FOOTER //\n// ./service/secure-random.js","import Promise from 'bluebird'\r\nimport EventEmitter from 'eventemitter2'\r\n\r\nimport { pathSatisfies, complement, isNil, unless, is, always, propEq, reject, type, both } from 'ramda'\r\n\r\nimport NetworkerFabric from '../networker'\r\nimport Auth from '../authorizer'\r\nimport { PureStorage } from '../../store'\r\nimport blueDefer from '../../defer'\r\nimport { dTime } from '../time-manager'\r\nimport { chooseServer } from '../dc-configurator'\r\nimport TL from '../../tl'\r\nimport KeyManager from '../rsa-keys-manger'\r\n\r\nimport { bytesFromHex, bytesToHex } from '../../bin'\r\n\r\nimport { switchErrors } from './error-cases'\r\n\r\nconst api57 = require('../../../schema/api-57.json')\r\nconst mtproto57 = require('../../../schema/mtproto-57.json')\r\n\r\nconst hasPath = pathSatisfies( complement( isNil ) )\r\nconst defDc = unless( is(Number), always(2) )\r\nconst withoutNil = reject( isNil )\r\n\r\nconst baseDcID = 2\r\n\r\nconst Ln = (length, obj) => obj && propEq('length', length, obj)\r\n\r\nexport class ApiManager {\r\n emitter = new EventEmitter({\r\n wildcard: true\r\n })\r\n on = this.emitter.on.bind(this.emitter)\r\n emit = this.emitter.emit.bind(this.emitter)\r\n cache = {\r\n uploader : {},\r\n downloader: {},\r\n auth : {},\r\n servers : {}\r\n }\r\n static apiConfig = {\r\n invokeWithLayer: 0xda9b0d0d,\r\n layer : NaN,\r\n initConnection : 0x69796de9,\r\n api_id : '',\r\n device_model : 'Unknown UserAgent',\r\n system_version : 'Unknown Platform',\r\n app_version : '',\r\n lang_code : 'en'\r\n }\r\n\r\n constructor({\r\n server = {},\r\n api = {},\r\n app: {\r\n debug = false,\r\n storage = PureStorage\r\n } = {},\r\n schema = api57,\r\n mtSchema = mtproto57,\r\n } = {}) {\r\n this.storage = storage\r\n this.serverConfig = server\r\n this.debug = debug\r\n this.schema = schema\r\n this.mtSchema = mtSchema\r\n this.chooseServer = chooseServer(this.cache.servers, server)\r\n this.mtpInvokeApi = this.mtpInvokeApi.bind(this)\r\n this.setUserAuth = this.setUserAuth.bind(this)\r\n\r\n this.TL = TL(schema, mtSchema)\r\n this.keyManager = KeyManager(this.TL.Serialization)\r\n this.auth = Auth(this.TL, this.keyManager)\r\n this.apiConfig = { ...ApiManager.apiConfig, ...withoutNil(api) }\r\n this.networkFabric = NetworkerFabric(this.apiConfig, this.chooseServer, this.TL,\r\n storage, this.emit, debug)\r\n\r\n // return new Proxy(this, {\r\n // get(ctx, name) {\r\n // const result = Reflect.get(ctx, name)\r\n // console.info('get', name, type(result))\r\n // return result\r\n // }\r\n // })\r\n }\r\n mtpGetNetworker = (dcID, options = {}) => {\r\n const isUpload = options.fileUpload || options.fileDownload\r\n const cache = isUpload\r\n ? this.cache.uploader\r\n : this.cache.downloader\r\n if (!dcID) throw new Error('get Networker without dcID')\r\n\r\n if (!isNil(cache[dcID])) return cache[dcID]\r\n\r\n const akk = `dc${ dcID }_auth_key`\r\n const ssk = `dc${ dcID }_server_salt`\r\n\r\n const dcUrl = this.chooseServer(dcID, isUpload)\r\n\r\n const networkGetter = result => {\r\n if (cache[dcID]) return cache[dcID]\r\n\r\n const authKeyHex = result[0]\r\n let serverSaltHex = result[1]\r\n // console.log('ass', dcID, authKeyHex, serverSaltHex)\r\n if (Ln(512, authKeyHex)) {\r\n if (!serverSaltHex || serverSaltHex.length !== 16)\r\n serverSaltHex = 'AAAAAAAAAAAAAAAA'\r\n const authKey = bytesFromHex(authKeyHex)\r\n const serverSalt = bytesFromHex(serverSaltHex)\r\n\r\n return cache[dcID] = new this.networkFabric(dcID, authKey, serverSalt, options)\r\n }\r\n\r\n if (!options.createNetworker)\r\n return Promise.reject({ type: 'AUTH_KEY_EMPTY', code: 401 })\r\n\r\n const onDcAuth = ({ authKey, serverSalt }) => {\r\n const storeObj = {\r\n [akk]: bytesToHex(authKey),\r\n [ssk]: bytesToHex(serverSalt)\r\n }\r\n this.storage.set(storeObj)\r\n\r\n return cache[dcID] = new this.networkFabric(dcID, authKey, serverSalt, options)\r\n }\r\n\r\n return this.auth(dcID, this.cache.auth, dcUrl)\r\n .then(onDcAuth, netError)\r\n }\r\n\r\n return this.storage\r\n .get(akk, ssk)\r\n .then(networkGetter)\r\n }\r\n mtpInvokeApi(method, params, options = {}) {\r\n // const self = this\r\n const deferred = blueDefer()\r\n const rejectPromise = error => {\r\n if (!error)\r\n error = { type: 'ERROR_EMPTY' }\r\n else if (!is(Object, error))\r\n error = { message: error }\r\n deferred.reject(error)\r\n\r\n if (!options.noErrorBox) { //TODO weird code. `error` changed after `.reject`?\r\n error.input = method\r\n error.stack =\r\n stack ||\r\n hasPath(['originalError', 'stack'], error) ||\r\n error.stack ||\r\n (new Error()).stack\r\n this.emit('error.invoke', error)\r\n }\r\n }\r\n let dcID,\r\n cachedNetworker\r\n\r\n const cachedNetThunk = () => performRequest(cachedNetworker)\r\n const requestThunk = waitTime => setTimeout(cachedNetThunk, waitTime * 1e3)\r\n\r\n const defError = new Error()\r\n const stack = defError.stack || 'empty stack'\r\n const performRequest = networker =>\r\n (cachedNetworker = networker)\r\n .wrapApiCall(method, params, options)\r\n .then(\r\n deferred.resolve,\r\n error => {\r\n const deferResolve = deferred.resolve\r\n const apiSavedNet = () => cachedNetworker = networker\r\n const apiRecall = networker => networker.wrapApiCall(method, params, options)\r\n console.error(dTime(), 'Error', error.code, error.type, baseDcID, dcID)\r\n\r\n return switchErrors(error, options, dcID, baseDcID)(\r\n error, options, this.emit, rejectPromise, requestThunk,\r\n apiSavedNet, apiRecall, deferResolve, this.mtpInvokeApi,\r\n this.mtpGetNetworker, this.storage)\r\n })\r\n const getDcNetworker = (baseDcID = 2) =>\r\n this.mtpGetNetworker(dcID = defDc(baseDcID), options)\r\n\r\n dcID = options.dcID || baseDcID\r\n if (dcID)\r\n Promise.resolve(this.mtpGetNetworker(dcID, options))\r\n .then(performRequest)\r\n .catch(rejectPromise)\r\n else\r\n this.storage.get('dc')\r\n .then(getDcNetworker)\r\n .then(performRequest)\r\n .catch(rejectPromise)\r\n\r\n return deferred.promise\r\n }\r\n setUserAuth(dcID, userAuth) {\r\n const fullUserAuth = { dcID, ...userAuth }\r\n this.storage.set({\r\n dc : dcID,\r\n user_auth: fullUserAuth\r\n })\r\n this.emit('auth.dc', { dc: dcID, auth: userAuth })\r\n }\r\n mtpClearStorage = function() {\r\n const saveKeys = []\r\n for (let dcID = 1; dcID <= 5; dcID++) {\r\n saveKeys.push(`dc${ dcID }_auth_key`)\r\n saveKeys.push(`t_dc${ dcID }_auth_key`)\r\n }\r\n this.storage.noPrefix() //TODO Remove noPrefix\r\n return this.storage\r\n .get(saveKeys)\r\n .tap(this.storage.clear)\r\n .then(values => {\r\n const restoreObj = {}\r\n saveKeys.forEach((key, i) => {\r\n const value = values[i]\r\n if (value !== false && value !== undefined)\r\n restoreObj[key] = value\r\n })\r\n this.storage.noPrefix()\r\n return restoreObj\r\n })\r\n .then(this.storage.set)\r\n }\r\n}\r\n\r\nconst netError = error => {\r\n console.log('Get networker error', error, error.stack)\r\n return Promise.reject(error)\r\n}\n\n\n// WEBPACK FOOTER //\n// ./service/api-manager/index.js","module.exports = false;\n\n// Only Node.JS has a process variable that is of [[Class]] process\ntry {\n module.exports = Object.prototype.toString.call(global.process) === '[object process]' \n} catch(e) {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/detect-node/index.js\n// module id = 13\n// module chunks = 0","module.exports = (__webpack_require__(6))(126);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/jsbn/index.js from dll-reference vendor\n// module id = 14\n// module chunks = 0","import { is, addIndex, pipe, reject, isNil, ifElse, map, mapObjIndexed } from 'ramda'\r\n\r\nconst indexedMap = addIndex(map)\r\nexport const forEach = (data, func) => pipe(\r\n reject(isNil),\r\n ifElse(\r\n is(Array),\r\n indexedMap(func),\r\n mapObjIndexed(func)\r\n )\r\n)(data)\r\n\r\nexport default forEach\n\n\n// WEBPACK FOOTER //\n// ./for-each.js","import { propEq, find, pipe, has, prop } from 'ramda'\r\n\r\nconst sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora']\r\n\r\nconst devDC = [\r\n { id: 1, host: '149.154.175.10', port: 80 },\r\n { id: 2, host: '149.154.167.40', port: 80 },\r\n { id: 3, host: '149.154.175.117', port: 80 }\r\n]\r\n\r\nconst prodDC = [\r\n { id: 1, host: '149.154.175.50', port: 80 },\r\n { id: 2, host: '149.154.167.51', port: 80 },\r\n { id: 3, host: '149.154.175.100', port: 80 },\r\n { id: 4, host: '149.154.167.91', port: 80 },\r\n { id: 5, host: '149.154.171.5', port: 80 }\r\n]\r\n\r\nconst portString = ({ port = 80 }) => port === 80\r\n ? ''\r\n : `:${port}`\r\n\r\nconst findById = pipe( propEq('id'), find )\r\n\r\nexport const chooseServer = (chosenServers, {\r\n dev = false,\r\n webogram = false,\r\n dcList = dev\r\n ? devDC\r\n : prodDC\r\n } = {}) =>\r\n (dcID, upload = false) => {\r\n const choosen = prop(dcID)\r\n if (has(dcID, chosenServers)) return choosen(chosenServers)\r\n let chosenServer = false\r\n\r\n\r\n if (webogram) {\r\n const subdomain = sslSubdomains[dcID - 1] + (upload ? '-1' : '')\r\n const path = dev\r\n ? 'apiw_test1'\r\n : 'apiw1'\r\n chosenServer = `https://${ subdomain }.web.telegram.org/${ path }`\r\n return chosenServer //TODO Possibly bug. Isn't it necessary? chosenServers[dcID] = chosenServer\r\n }\r\n const dcOption = findById(dcID)(dcList)\r\n if (dcOption)\r\n chosenServer = `http://${ dcOption.host }${portString(dcOption)}/apiw1`\r\n chosenServers[dcID] = chosenServer\r\n\r\n return choosen(chosenServers)\r\n }\n\n\n// WEBPACK FOOTER //\n// ./service/dc-configurator.js","import Promise from 'bluebird'\r\n\r\nimport { pipeP, is, values, mapObjIndexed } from 'ramda'\r\n\r\nimport CryptoWorker from '../crypto'\r\nimport { dTime, tsNow, generateID, applyServerTime } from './time-manager'\r\nimport MtpSecureRandom from './secure-random'\r\nimport forEach from '../for-each'\r\nimport smartTimeout from '../smart-timeout'\r\nimport blueDefer from '../defer'\r\nimport { httpClient } from '../http'\r\n\r\nimport { convertToUint8Array, convertToArrayBuffer, sha1BytesSync,\r\n nextRandomInt, bytesCmp, bytesToHex, bytesFromArrayBuffer,\r\n bytesToArrayBuffer, longToBytes, uintToInt, bigStringInt } from '../bin'\r\n\r\nlet updatesProcessor\r\nlet iii = 0\r\nlet offlineInited = false\r\nlet akStopped = false\r\n// const chromeMatches = navigator.userAgent.match(/Chrome\\/(\\d+(\\.\\d+)?)/)\r\n// const chromeVersion = chromeMatches && parseFloat(chromeMatches[1]) || false\r\n// const xhrSendBuffer = !('ArrayBufferView' in window) && (!chromeVersion || chromeVersion < 30)\r\n\r\n\r\nexport const NetworkerFabric = (appConfig, chooseServer, { Serialization, Deserialization }, storage, emit, debug) =>\r\n class NetworkerThread {\r\n constructor(dc, authKey, serverSalt, options = {}) {\r\n this.dcID = dc\r\n this.iii = iii++\r\n\r\n this.authKey = authKey\r\n this.authKeyUint8 = convertToUint8Array(authKey)\r\n this.authKeyBuffer = convertToArrayBuffer(authKey)\r\n this.authKeyID = sha1BytesSync(authKey).slice(-8)\r\n\r\n this.serverSalt = serverSalt\r\n\r\n this.upload = options.fileUpload || options.fileDownload || false\r\n\r\n this.updateSession()\r\n\r\n this.lastServerMessages = []\r\n\r\n this.currentRequests = 0\r\n this.checkConnectionPeriod = 0\r\n\r\n this.sentMessages = {}\r\n this.clientMessages = []\r\n\r\n this.pendingMessages = {}\r\n this.pendingAcks = []\r\n this.pendingResends = []\r\n this.connectionInited = false\r\n\r\n this.pendingTimeouts = []\r\n\r\n setInterval(this.checkLongPoll, 10000)\r\n this.checkLongPoll()\r\n\r\n if (!offlineInited)\r\n offlineInited = true\r\n }\r\n updateSession() {\r\n this.seqNo = 0\r\n this.prevSessionID = this.sessionID\r\n this.sessionID = new Array(8)\r\n MtpSecureRandom.nextBytes(this.sessionID)\r\n }\r\n\r\n updateSentMessage(sentMessageID) {\r\n const sentMessage = this.sentMessages[sentMessageID]\r\n if (!sentMessage) return false\r\n\r\n if (sentMessage.container) {\r\n const newInner = []\r\n const updateInner = innerSentMessageID => {\r\n const innerSentMessage = this.updateSentMessage(innerSentMessageID)\r\n if (innerSentMessage)\r\n newInner.push(innerSentMessage.msg_id)\r\n }\r\n forEach(sentMessage.inner, updateInner)\r\n sentMessage.inner = newInner\r\n }\r\n\r\n sentMessage.msg_id = generateID()\r\n sentMessage.seq_no = this.generateSeqNo(\r\n sentMessage.notContentRelated ||\r\n sentMessage.container\r\n )\r\n this.sentMessages[sentMessage.msg_id] = sentMessage\r\n delete this.sentMessages[sentMessageID]\r\n\r\n return sentMessage\r\n }\r\n\r\n generateSeqNo(notContentRelated) {\r\n let seqNo = this.seqNo * 2\r\n\r\n if (!notContentRelated) {\r\n seqNo++\r\n this.seqNo++\r\n }\r\n\r\n return seqNo\r\n }\r\n\r\n wrapMtpCall(method, params, options) {\r\n const serializer = new Serialization({ mtproto: true })\r\n\r\n serializer.storeMethod(method, params)\r\n\r\n const messageID = generateID()\r\n const seqNo = this.generateSeqNo()\r\n const message = {\r\n msg_id: messageID,\r\n seq_no: seqNo,\r\n body : serializer.getBytes()\r\n }\r\n\r\n if (debug)\r\n console.log(dTime(), 'MT call', method, params, messageID, seqNo)\r\n\r\n return this.pushMessage(message, options)\r\n }\r\n\r\n wrapMtpMessage(object, options = {}) {\r\n\r\n const serializer = new Serialization({ mtproto: true })\r\n serializer.storeObject(object, 'Object')\r\n\r\n const messageID = generateID()\r\n const seqNo = this.generateSeqNo(options.notContentRelated)\r\n const message = {\r\n msg_id: messageID,\r\n seq_no: seqNo,\r\n body : serializer.getBytes()\r\n }\r\n\r\n if (debug)\r\n console.log(dTime(), 'MT message', object, messageID, seqNo)\r\n\r\n return this.pushMessage(message, options)\r\n }\r\n\r\n wrapApiCall(method, params, options) {\r\n const serializer = new Serialization(options)\r\n\r\n if (!this.connectionInited) {\r\n // serializer.storeInt(0xda9b0d0d, 'invokeWithLayer')\r\n // serializer.storeInt(Config.Schema.API.layer, 'layer')\r\n // serializer.storeInt(0x69796de9, 'initConnection')\r\n // serializer.storeInt(Config.App.id, 'api_id')\r\n // serializer.storeString(navigator.userAgent || 'Unknown UserAgent', 'device_model')\r\n // serializer.storeString(navigator.platform || 'Unknown Platform', 'system_version')\r\n // serializer.storeString(Config.App.version, 'app_version')\r\n // serializer.storeString(navigator.language || 'en', 'lang_code')\r\n mapObjIndexed(serializer.storeIntString, appConfig)\r\n }\r\n\r\n if (options.afterMessageID) {\r\n serializer.storeInt(0xcb9f372d, 'invokeAfterMsg')\r\n serializer.storeLong(options.afterMessageID, 'msg_id')\r\n }\r\n\r\n options.resultType = serializer.storeMethod(method, params)\r\n\r\n const messageID = generateID()\r\n const seqNo = this.generateSeqNo()\r\n const message = {\r\n msg_id: messageID,\r\n seq_no: seqNo,\r\n body : serializer.getBytes(true),\r\n isAPI : true\r\n }\r\n\r\n if (debug)\r\n console.log(dTime(), 'Api call', method, params, messageID, seqNo, options)\r\n else\r\n console.log(dTime(), 'Api call', method)\r\n\r\n return this.pushMessage(message, options)\r\n }\r\n\r\n checkLongPollCond = () =>\r\n this.longPollPending &&\r\n this.longPollPending > tsNow() ||\r\n !!this.offline ||\r\n akStopped\r\n\r\n checkLongPollAfterDcCond = (isClean, baseDc) => isClean && (\r\n this.dcID !== baseDc ||\r\n this.upload ||\r\n this.sleepAfter &&\r\n this.sleepAfter < tsNow()\r\n )\r\n\r\n checkLongPoll = force => {\r\n const isClean = this.cleanupSent()\r\n // console.log('Check lp', this.longPollPending, tsNow(), this.dcID, isClean)\r\n if (this.checkLongPollCond())\r\n return false\r\n\r\n const afterGetDc = baseDc => {\r\n if (this.checkLongPollAfterDcCond(isClean, baseDc))\r\n // console.warn(dTime(), 'Send long-poll for DC is delayed', this.dcID, this.sleepAfter)\r\n return\r\n\r\n return this.sendLongPoll()\r\n }\r\n\r\n storage.get('dc')\r\n .then(afterGetDc)\r\n }\r\n\r\n onHttpWait = () => {\r\n delete this.longPollPending\r\n return smartTimeout.immediate(this.checkLongPoll)\r\n }\r\n\r\n sendLongPoll = () => {\r\n const maxWait = 25000\r\n this.longPollPending = tsNow() + maxWait\r\n // console.log('Set lp', this.longPollPending, tsNow())\r\n\r\n return this.wrapMtpCall('http_wait', {\r\n max_delay : 500,\r\n wait_after: 150,\r\n max_wait : maxWait\r\n }, {\r\n noResponse: true,\r\n longPoll : true\r\n }).then(this.onHttpWait, () => {\r\n console.log('Long-poll failed')\r\n })\r\n }\r\n\r\n pushMessage(message, options = {}) {\r\n const deferred = blueDefer()\r\n\r\n this.sentMessages[message.msg_id] = { ...message, ...options, deferred }\r\n this.pendingMessages[message.msg_id] = 0\r\n\r\n if (!options || !options.noShedule)\r\n this.sheduleRequest()\r\n if (is(Object, options))\r\n options.messageID = message.msg_id\r\n\r\n return deferred.promise\r\n }\r\n\r\n pushResend(messageID, delay) {\r\n const value = delay\r\n ? tsNow() + delay\r\n : 0\r\n const innerMap = innerMsg => this.pendingMessages[innerMsg] = value\r\n const sentMessage = this.sentMessages[messageID]\r\n if (sentMessage.container)\r\n sentMessage.inner.forEach(innerMap)\r\n else\r\n this.pendingMessages[messageID] = value\r\n\r\n // console.log('Resend due', messageID, this.pendingMessages)\r\n\r\n this.sheduleRequest(delay)\r\n }\r\n\r\n getMsgKeyIv(msgKey, isOut) {\r\n const authKey = this.authKeyUint8\r\n const x = isOut\r\n ? 0\r\n : 8\r\n const sha1aText = new Uint8Array(48)\r\n const sha1bText = new Uint8Array(48)\r\n const sha1cText = new Uint8Array(48)\r\n const sha1dText = new Uint8Array(48)\r\n const promises = {}\r\n\r\n sha1aText.set(msgKey, 0)\r\n sha1aText.set(authKey.subarray(x, x + 32), 16)\r\n promises.sha1a = CryptoWorker.sha1Hash(sha1aText)\r\n\r\n sha1bText.set(authKey.subarray(x + 32, x + 48), 0)\r\n sha1bText.set(msgKey, 16)\r\n sha1bText.set(authKey.subarray(x + 48, x + 64), 32)\r\n promises.sha1b = CryptoWorker.sha1Hash(sha1bText)\r\n\r\n sha1cText.set(authKey.subarray(x + 64, x + 96), 0)\r\n sha1cText.set(msgKey, 32)\r\n promises.sha1c = CryptoWorker.sha1Hash(sha1cText)\r\n\r\n sha1dText.set(msgKey, 0)\r\n sha1dText.set(authKey.subarray(x + 96, x + 128), 16)\r\n promises.sha1d = CryptoWorker.sha1Hash(sha1dText)\r\n\r\n const onAll = result => {\r\n const aesKey = new Uint8Array(32),\r\n aesIv = new Uint8Array(32),\r\n sha1a = new Uint8Array(result[0]),\r\n sha1b = new Uint8Array(result[1]),\r\n sha1c = new Uint8Array(result[2]),\r\n sha1d = new Uint8Array(result[3])\r\n\r\n aesKey.set(sha1a.subarray(0, 8))\r\n aesKey.set(sha1b.subarray(8, 20), 8)\r\n aesKey.set(sha1c.subarray(4, 16), 20)\r\n\r\n aesIv.set(sha1a.subarray(8, 20))\r\n aesIv.set(sha1b.subarray(0, 8), 12)\r\n aesIv.set(sha1c.subarray(16, 20), 20)\r\n aesIv.set(sha1d.subarray(0, 8), 24)\r\n\r\n return [aesKey, aesIv]\r\n }\r\n\r\n return Promise.all(values(promises)).then(onAll)\r\n }\r\n\r\n checkConnection = event => {\r\n console.log(dTime(), 'Check connection', event)\r\n smartTimeout.cancel(this.checkConnectionPromise)\r\n\r\n const serializer = new Serialization({ mtproto: true })\r\n const pingID = [nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)]\r\n\r\n serializer.storeMethod('ping', { ping_id: pingID })\r\n\r\n const pingMessage = {\r\n msg_id: generateID(),\r\n seq_no: this.generateSeqNo(true),\r\n body : serializer.getBytes()\r\n }\r\n\r\n this.sendEncryptedRequest(pingMessage, { timeout: 15000 }).then(result =>\r\n this.toggleOffline(false)\r\n , () => {\r\n console.log(dTime(), 'Delay ', this.checkConnectionPeriod * 1000)\r\n this.checkConnectionPromise = smartTimeout(\r\n this.checkConnection, parseInt(this.checkConnectionPeriod * 1000))\r\n this.checkConnectionPeriod = Math.min(60, this.checkConnectionPeriod * 1.5)\r\n })\r\n }\r\n\r\n toggleOffline(enabled) {\r\n // console.log('toggle ', enabled, this.dcID, this.iii)\r\n if (this.offline !== undefined && this.offline == enabled)\r\n return false\r\n\r\n this.offline = enabled\r\n\r\n if (this.offline) {\r\n smartTimeout.cancel(this.nextReqPromise)\r\n delete this.nextReq\r\n\r\n if (this.checkConnectionPeriod < 1.5)\r\n this.checkConnectionPeriod = 0\r\n\r\n\r\n this.checkConnectionPromise = smartTimeout(\r\n this.checkConnection, parseInt(this.checkConnectionPeriod * 1000))\r\n this.checkConnectionPeriod = Math.min(30, (1 + this.checkConnectionPeriod) * 1.5)\r\n\r\n this.onOnlineCb = this.checkConnection\r\n emit('net.offline', this.onOnlineCb)\r\n } else {\r\n delete this.longPollPending\r\n this.checkLongPoll()\r\n this.sheduleRequest()\r\n\r\n if (this.onOnlineCb)\r\n emit('net.online', this.onOnlineCb)\r\n\r\n smartTimeout.cancel(this.checkConnectionPromise)\r\n }\r\n }\r\n onNoResponseMsg = msgID => {\r\n if (this.sentMessages[msgID]) {\r\n const deferred = this.sentMessages[msgID].deferred\r\n delete this.sentMessages[msgID]\r\n return deferred.resolve()\r\n }\r\n }\r\n onNoResponseMsgReject = msgID => {\r\n if (this.sentMessages[msgID]) {\r\n const deferred = this.sentMessages[msgID].deferred\r\n delete this.sentMessages[msgID]\r\n delete this.pendingMessages[msgID]\r\n return deferred.reject()\r\n }\r\n }\r\n resetPendingMessage = msgID => this.pendingMessages[msgID] = 0\r\n performSheduledRequest = () => { //TODO extract huge method\r\n // console.log(dTime(), 'sheduled', this.dcID, this.iii)\r\n if (this.offline || akStopped) {\r\n console.log(dTime(), 'Cancel sheduled')\r\n return false\r\n }\r\n delete this.nextReq\r\n if (this.pendingAcks.length) {\r\n const ackMsgIDs = []\r\n for (let i = 0; i < this.pendingAcks.length; i++) {\r\n ackMsgIDs.push(this.pendingAcks[i])\r\n }\r\n // console.log('acking messages', ackMsgIDs)\r\n this.wrapMtpMessage({ _: 'msgs_ack', msg_ids: ackMsgIDs }, { notContentRelated: true, noShedule: true })\r\n }\r\n\r\n if (this.pendingResends.length) {\r\n const resendMsgIDs = []\r\n const resendOpts = { noShedule: true, notContentRelated: true }\r\n for (let i = 0; i < this.pendingResends.length; i++) {\r\n resendMsgIDs.push(this.pendingResends[i])\r\n }\r\n // console.log('resendReq messages', resendMsgIDs)\r\n this.wrapMtpMessage({ _: 'msg_resend_req', msg_ids: resendMsgIDs }, resendOpts)\r\n this.lastResendReq = { req_msg_id: resendOpts.messageID, resend_msg_ids: resendMsgIDs }\r\n }\r\n\r\n const messages = []\r\n let message,\r\n messagesByteLen = 0\r\n const currentTime = tsNow()\r\n let hasApiCall = false\r\n let hasHttpWait = false\r\n let lengthOverflow = false\r\n let singlesCount = 0\r\n\r\n const onPendingMessage = (value, messageID) => {\r\n if (!(!value || value >= currentTime)) return\r\n message = this.sentMessages[messageID]\r\n if (message) {\r\n const messageByteLength = (message.body.byteLength || message.body.length) + 32\r\n const cond1 = !message.notContentRelated && lengthOverflow\r\n const cond2 =\r\n !message.notContentRelated &&\r\n messagesByteLen &&\r\n messagesByteLen + messageByteLength > 655360 // 640 Kb\r\n if (cond1) return\r\n if (cond2) {\r\n lengthOverflow = true\r\n return\r\n }\r\n if (message.singleInRequest) {\r\n singlesCount++\r\n if (singlesCount > 1) return\r\n }\r\n messages.push(message)\r\n messagesByteLen += messageByteLength\r\n if (message.isAPI)\r\n hasApiCall = true\r\n else if (message.longPoll)\r\n hasHttpWait = true\r\n } else {\r\n // console.log(message, messageID)\r\n }\r\n delete this.pendingMessages[messageID]\r\n }\r\n\r\n forEach(this.pendingMessages, onPendingMessage)\r\n\r\n if (hasApiCall && !hasHttpWait) {\r\n const serializer = new Serialization({ mtproto: true })\r\n serializer.storeMethod('http_wait', {\r\n max_delay : 500,\r\n wait_after: 150,\r\n max_wait : 3000\r\n })\r\n messages.push({\r\n msg_id: generateID(),\r\n seq_no: this.generateSeqNo(),\r\n body : serializer.getBytes()\r\n })\r\n }\r\n\r\n if (!messages.length) {\r\n // console.log('no sheduled messages')\r\n return\r\n }\r\n\r\n const noResponseMsgs = []\r\n\r\n if (messages.length > 1) {\r\n const container = new Serialization({ mtproto: true, startMaxLength: messagesByteLen + 64 })\r\n container.storeInt(0x73f1f8dc, 'CONTAINER[id]')\r\n container.storeInt(messages.length, 'CONTAINER[count]')\r\n const onloads = []\r\n const innerMessages = []\r\n for (let i = 0; i < messages.length; i++) {\r\n container.storeLong(messages[i].msg_id, `CONTAINER[${ i }][msg_id]`)\r\n innerMessages.push(messages[i].msg_id)\r\n container.storeInt(messages[i].seq_no, `CONTAINER[${ i }][seq_no]`)\r\n container.storeInt(messages[i].body.length, `CONTAINER[${ i }][bytes]`)\r\n container.storeRawBytes(messages[i].body, `CONTAINER[${ i }][body]`)\r\n if (messages[i].noResponse) {\r\n noResponseMsgs.push(messages[i].msg_id)\r\n }\r\n }\r\n\r\n const containerSentMessage = {\r\n msg_id : generateID(),\r\n seq_no : this.generateSeqNo(true),\r\n container: true,\r\n inner : innerMessages\r\n }\r\n\r\n message = { body: container.getBytes(true), ...containerSentMessage }\r\n\r\n this.sentMessages[message.msg_id] = containerSentMessage\r\n\r\n if (debug)\r\n console.log(dTime(), 'Container', innerMessages, message.msg_id, message.seq_no)\r\n } else {\r\n if (message.noResponse)\r\n noResponseMsgs.push(message.msg_id)\r\n this.sentMessages[message.msg_id] = message\r\n }\r\n\r\n this.pendingAcks = []\r\n const afterSendRequest = result => {\r\n this.toggleOffline(false)\r\n // console.log('parse for', message)\r\n this\r\n .parseResponse(result.data)\r\n .then(afterResponseParse)\r\n }\r\n const afterResponseParse = response => {\r\n if (debug)\r\n console.log(dTime(), 'Server response', this.dcID, response)\r\n\r\n this.processMessage(\r\n response.response,\r\n response.messageID,\r\n response.sessionID)\r\n\r\n forEach(noResponseMsgs, this.onNoResponseMsg)\r\n\r\n this.checkLongPoll()\r\n\r\n this.checkConnectionPeriod = Math.max(1.1, Math.sqrt(this.checkConnectionPeriod))\r\n }\r\n const onRequestFail = error => {\r\n console.log('Encrypted request failed', error)\r\n\r\n if (message.container) {\r\n forEach(message.inner, this.resetPendingMessage)\r\n delete this.sentMessages[message.msg_id]\r\n } else\r\n this.pendingMessages[message.msg_id] = 0\r\n\r\n forEach(noResponseMsgs, this.onNoResponseMsgReject)\r\n\r\n this.toggleOffline(true)\r\n }\r\n this.sendEncryptedRequest(message)\r\n .then(afterSendRequest)\r\n .catch(onRequestFail)\r\n\r\n if (lengthOverflow || singlesCount > 1) this.sheduleRequest()\r\n }\r\n\r\n getEncryptedMessage(bytes) {\r\n let msgKey\r\n const f1 = CryptoWorker.sha1Hash\r\n const f2 = bytesHash => {\r\n msgKey = new Uint8Array(bytesHash).subarray(4, 20)\r\n return this.getMsgKeyIv(msgKey, true)\r\n }\r\n const f3 = keyIv => CryptoWorker.aesEncrypt(bytes, keyIv[0], keyIv[1])\r\n const f4 = encryptedBytes => ({\r\n bytes: encryptedBytes,\r\n msgKey\r\n })\r\n const encryptFlow = pipeP(f1, f2, f3, f4)\r\n return encryptFlow(bytes)\r\n }\r\n\r\n getDecryptedMessage(msgKey, encryptedData) {\r\n const getKeyCurry = key => this.getMsgKeyIv(key, false)\r\n const cryptoAesCurry = keyIv => CryptoWorker.aesDecrypt(encryptedData, keyIv[0], keyIv[1])\r\n const decryptFlow = pipeP(getKeyCurry, cryptoAesCurry)\r\n return decryptFlow(msgKey)\r\n }\r\n\r\n getRequestUrl = () => chooseServer(this.dcID, this.upload)\r\n\r\n sendEncryptedRequest = (message, options = {}) => {\r\n // console.log(dTime(), 'Send encrypted'/*, message*/)\r\n // console.trace()\r\n const data = new Serialization({ startMaxLength: message.body.length + 64 })\r\n\r\n data.storeIntBytes(this.serverSalt, 64, 'salt')\r\n data.storeIntBytes(this.sessionID, 64, 'session_id')\r\n\r\n data.storeLong(message.msg_id, 'message_id')\r\n data.storeInt(message.seq_no, 'seq_no')\r\n\r\n data.storeInt(message.body.length, 'message_data_length')\r\n data.storeRawBytes(message.body, 'message_data')\r\n\r\n const url = this.getRequestUrl()\r\n const baseError = { code: 406, type: 'NETWORK_BAD_RESPONSE', url }\r\n\r\n const afterRequestData = result => {\r\n if (!result.data || !result.data.byteLength)\r\n return Promise.reject(baseError)\r\n return result\r\n }\r\n\r\n const afterRequestReject = error => {\r\n if (!error.message && !error.type)\r\n error = { type: 'NETWORK_BAD_REQUEST', originalError: error, ...baseError }\r\n return Promise.reject(error)\r\n }\r\n\r\n const onEncryptedResult = encryptedResult => {\r\n // console.log(dTime(), 'Got encrypted out message'/*, encryptedResult*/)\r\n const request = new Serialization({ startMaxLength: encryptedResult.bytes.byteLength + 256 })\r\n request.storeIntBytes(this.authKeyID, 64, 'auth_key_id')\r\n request.storeIntBytes(encryptedResult.msgKey, 128, 'msg_key')\r\n request.storeRawBytes(encryptedResult.bytes, 'encrypted_data')\r\n\r\n const requestData = /*xhrSendBuffer\r\n ? request.getBuffer()\r\n : */request.getArray()\r\n\r\n try {\r\n options = { responseType: 'arraybuffer', ...options }\r\n return httpClient.post(url, requestData, options)\r\n } catch (e) {\r\n return Promise.reject(e)\r\n }\r\n }\r\n\r\n return this\r\n .getEncryptedMessage(data.getBuffer())\r\n .then(onEncryptedResult)\r\n .then(\r\n afterRequestData,\r\n afterRequestReject)\r\n }\r\n\r\n getMsgById = ({ req_msg_id }) => this.sentMessages[req_msg_id]\r\n\r\n parseResponse(responseBuffer) {\r\n // console.log(dTime(), 'Start parsing response')\r\n // const self = this\r\n\r\n const deserializer = new Deserialization(responseBuffer)\r\n\r\n const authKeyID = deserializer.fetchIntBytes(64, false, 'auth_key_id')\r\n if (!bytesCmp(authKeyID, this.authKeyID)) {\r\n throw new Error(`[MT] Invalid server auth_key_id: ${ bytesToHex(authKeyID)}`)\r\n }\r\n const msgKey = deserializer.fetchIntBytes(128, true, 'msg_key')\r\n const encryptedData = deserializer.fetchRawBytes(\r\n responseBuffer.byteLength - deserializer.getOffset(),\r\n true,\r\n 'encrypted_data')\r\n\r\n const afterDecrypt = dataWithPadding => {\r\n // console.log(dTime(), 'after decrypt')\r\n const deserializer = new Deserialization(dataWithPadding, { mtproto: true })\r\n\r\n const salt = deserializer.fetchIntBytes(64, false, 'salt')\r\n const sessionID = deserializer.fetchIntBytes(64, false, 'session_id')\r\n const messageID = deserializer.fetchLong('message_id')\r\n\r\n const isInvalidSession =\r\n !bytesCmp(sessionID, this.sessionID) && (\r\n !this.prevSessionID ||\r\n !bytesCmp(sessionID, this.prevSessionID))\r\n if (isInvalidSession) {\r\n console.warn('Sessions', sessionID, this.sessionID, this.prevSessionID)\r\n throw new Error(`[MT] Invalid server session_id: ${ bytesToHex(sessionID) }`)\r\n }\r\n\r\n const seqNo = deserializer.fetchInt('seq_no')\r\n\r\n let offset = deserializer.getOffset()\r\n const totalLength = dataWithPadding.byteLength\r\n\r\n const messageBodyLength = deserializer.fetchInt('message_data[length]')\r\n if (messageBodyLength % 4 ||\r\n messageBodyLength > totalLength - offset) {\r\n throw new Error(`[MT] Invalid body length: ${ messageBodyLength}`)\r\n }\r\n const messageBody = deserializer.fetchRawBytes(messageBodyLength, true, 'message_data')\r\n\r\n offset = deserializer.getOffset()\r\n const paddingLength = totalLength - offset\r\n if (paddingLength < 0 || paddingLength > 15)\r\n throw new Error(`[MT] Invalid padding length: ${ paddingLength}`)\r\n const hashData = convertToUint8Array(dataWithPadding).subarray(0, offset)\r\n\r\n const afterShaHash = dataHash => {\r\n if (!bytesCmp(msgKey, bytesFromArrayBuffer(dataHash).slice(-16))) {\r\n console.warn(msgKey, bytesFromArrayBuffer(dataHash))\r\n throw new Error('[MT] server msgKey mismatch')\r\n }\r\n\r\n const buffer = bytesToArrayBuffer(messageBody)\r\n const deserializerOptions = getDeserializeOpts(this.getMsgById)\r\n const deserializer = new Deserialization(buffer, deserializerOptions)\r\n const response = deserializer.fetchObject('', 'INPUT')\r\n\r\n return {\r\n response,\r\n messageID,\r\n sessionID,\r\n seqNo\r\n }\r\n }\r\n return CryptoWorker\r\n .sha1Hash(hashData)\r\n .then(afterShaHash)\r\n }\r\n\r\n\r\n return this\r\n .getDecryptedMessage(msgKey, encryptedData)\r\n .then(afterDecrypt)\r\n }\r\n\r\n applyServerSalt(newServerSalt) {\r\n const serverSalt = longToBytes(newServerSalt)\r\n\r\n const storeObj = {\r\n [`dc${ this.dcID }_server_salt`]: bytesToHex(serverSalt)\r\n }\r\n storage.set(storeObj)\r\n\r\n this.serverSalt = serverSalt\r\n return true\r\n }\r\n\r\n sheduleRequest(delay = 0) {\r\n if (this.offline) this.checkConnection('forced shedule')\r\n const nextReq = tsNow() + delay\r\n\r\n if (delay && this.nextReq && this.nextReq <= nextReq)\r\n return false\r\n\r\n // console.log(dTime(), 'shedule req', delay)\r\n // console.trace()\r\n smartTimeout.cancel(this.nextReqPromise)\r\n if (delay > 0)\r\n this.nextReqPromise = smartTimeout(\r\n this.performSheduledRequest, delay)\r\n else\r\n smartTimeout.immediate(this.performSheduledRequest)\r\n\r\n this.nextReq = nextReq\r\n }\r\n\r\n ackMessage(msgID) {\r\n // console.log('ack message', msgID)\r\n this.pendingAcks.push(msgID)\r\n this.sheduleRequest(30000)\r\n }\r\n\r\n reqResendMessage(msgID) {\r\n console.log(dTime(), 'Req resend', msgID)\r\n this.pendingResends.push(msgID)\r\n this.sheduleRequest(100)\r\n }\r\n\r\n cleanupSent() {\r\n let notEmpty = false\r\n // console.log('clean start', this.dcID/*, this.sentMessages*/)\r\n const cleanMessages = (message, msgID) => {\r\n // console.log('clean iter', msgID, message)\r\n if (message.notContentRelated && this.pendingMessages[msgID] === undefined) {\r\n // console.log('clean notContentRelated', msgID)\r\n delete this.sentMessages[msgID]\r\n }\r\n else if (message.container) {\r\n for (let i = 0; i < message.inner.length; i++) {\r\n if (this.sentMessages[message.inner[i]] !== undefined) {\r\n // console.log('clean failed, found', msgID, message.inner[i], this.sentMessages[message.inner[i]].seq_no)\r\n notEmpty = true\r\n return\r\n }\r\n }\r\n // console.log('clean container', msgID)\r\n delete this.sentMessages[msgID]\r\n } else {\r\n notEmpty = true\r\n }\r\n }\r\n forEach(this.sentMessages, cleanMessages)\r\n\r\n return !notEmpty\r\n }\r\n\r\n processMessageAck = messageID => {\r\n const sentMessage = this.sentMessages[messageID]\r\n if (sentMessage && !sentMessage.acked) {\r\n delete sentMessage.body\r\n sentMessage.acked = true\r\n\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n processError(rawError) {\r\n const matches = (rawError.error_message || '').match(/^([A-Z_0-9]+\\b)(: (.+))?/) || []\r\n rawError.error_code = uintToInt(rawError.error_code)\r\n\r\n return {\r\n code: !rawError.error_code || rawError.error_code <= 0\r\n ? 500\r\n : rawError.error_code,\r\n type : matches[1] || 'UNKNOWN',\r\n description : matches[3] || `CODE#${ rawError.error_code } ${ rawError.error_message}`,\r\n originalError: rawError\r\n }\r\n }\r\n spliceMessage = badMsgID => {\r\n const pos = this.pendingResends.indexOf(badMsgID)\r\n if (pos !== -1)\r\n this.pendingResends.splice(pos, 1)\r\n }\r\n processMessage(message, messageID, sessionID) {\r\n const msgidInt = parseInt(messageID.toString(10).substr(0, -10), 10)\r\n if (msgidInt % 2) {\r\n console.warn('[MT] Server even message id: ', messageID, message)\r\n return\r\n }\r\n // console.log('process message', message, messageID, sessionID)\r\n switch (message._) {\r\n case 'msg_container': {\r\n const len = message.messages.length\r\n for (let i = 0; i < len; i++) {\r\n this.processMessage(message.messages[i], message.messages[i].msg_id, sessionID)\r\n }\r\n break\r\n }\r\n case 'bad_server_salt': {\r\n console.log(dTime(), 'Bad server salt', message)\r\n const sentMessage = this.sentMessages[message.bad_msg_id]\r\n if (!sentMessage || sentMessage.seq_no != message.bad_msg_seqno) {\r\n console.log(message.bad_msg_id, message.bad_msg_seqno)\r\n throw new Error('[MT] Bad server salt for invalid message')\r\n }\r\n\r\n this.applyServerSalt(message.new_server_salt)\r\n this.pushResend(message.bad_msg_id)\r\n this.ackMessage(messageID)\r\n break\r\n }\r\n case 'bad_msg_notification': {\r\n console.log(dTime(), 'Bad msg notification', message)\r\n const sentMessage = this.sentMessages[message.bad_msg_id]\r\n if (!sentMessage || sentMessage.seq_no != message.bad_msg_seqno) {\r\n console.log(message.bad_msg_id, message.bad_msg_seqno)\r\n throw new Error('[MT] Bad msg notification for invalid message')\r\n }\r\n\r\n if (message.error_code == 16 || message.error_code == 17) {\r\n if (applyServerTime(\r\n bigStringInt(messageID)\r\n .shiftRight(32)\r\n .toString(10)\r\n )) {\r\n console.log(dTime(), 'Update session')\r\n this.updateSession()\r\n }\r\n const badMessage = this.updateSentMessage(message.bad_msg_id)\r\n this.pushResend(badMessage.msg_id)\r\n this.ackMessage(messageID)\r\n }\r\n break\r\n }\r\n case 'message': {\r\n if (this.lastServerMessages.indexOf(messageID) != -1) {\r\n // console.warn('[MT] Server same messageID: ', messageID)\r\n this.ackMessage(messageID)\r\n return\r\n }\r\n this.lastServerMessages.push(messageID)\r\n if (this.lastServerMessages.length > 100) {\r\n this.lastServerMessages.shift()\r\n }\r\n this.processMessage(message.body, message.msg_id, sessionID)\r\n break\r\n }\r\n case 'new_session_created': {\r\n this.ackMessage(messageID)\r\n\r\n this.processMessageAck(message.first_msg_id)\r\n this.applyServerSalt(message.server_salt)\r\n\r\n const onBaseDc = baseDcID => {\r\n const updateCond =\r\n baseDcID === this.dcID &&\r\n !this.upload &&\r\n updatesProcessor\r\n if (updateCond)\r\n updatesProcessor(message, true)\r\n }\r\n storage.get('dc').then(onBaseDc)\r\n break\r\n }\r\n case 'msgs_ack': {\r\n message.msg_ids.forEach(this.processMessageAck)\r\n break\r\n }\r\n case 'msg_detailed_info': {\r\n if (!this.sentMessages[message.msg_id]) {\r\n this.ackMessage(message.answer_msg_id)\r\n break\r\n }\r\n break\r\n }\r\n case 'msg_new_detailed_info': {\r\n // this.ackMessage(message.answer_msg_id)\r\n this.reqResendMessage(message.answer_msg_id)\r\n break\r\n }\r\n case 'msgs_state_info': {\r\n this.ackMessage(message.answer_msg_id)\r\n const spliceCond =\r\n this.lastResendReq &&\r\n this.lastResendReq.req_msg_id == message.req_msg_id &&\r\n this.pendingResends.length\r\n if (spliceCond)\r\n this.lastResendReq.resend_msg_ids.forEach(this.spliceMessage)\r\n break\r\n }\r\n case 'rpc_result': {\r\n this.ackMessage(messageID)\r\n\r\n const sentMessageID = message.req_msg_id\r\n const sentMessage = this.sentMessages[sentMessageID]\r\n\r\n this.processMessageAck(sentMessageID)\r\n if (!sentMessage) break\r\n\r\n const deferred = sentMessage.deferred\r\n if (message.result._ == 'rpc_error') {\r\n const error = this.processError(message.result)\r\n console.log(dTime(), 'Rpc error', error)\r\n if (deferred) {\r\n deferred.reject(error)\r\n }\r\n } else {\r\n if (deferred) {\r\n if (debug) {\r\n console.log(dTime(), 'Rpc response', message.result)\r\n } else {\r\n let dRes = message.result._\r\n if (!dRes)\r\n dRes = message.result.length > 5\r\n ? `[..${ message.result.length }..]`\r\n : message.result\r\n console.log(dTime(), 'Rpc response', dRes)\r\n }\r\n sentMessage.deferred.resolve(message.result)\r\n }\r\n if (sentMessage.isAPI)\r\n this.connectionInited = true\r\n }\r\n\r\n delete this.sentMessages[sentMessageID]\r\n break\r\n }\r\n default: {\r\n this.ackMessage(messageID)\r\n\r\n // console.log('Update', message)\r\n if (updatesProcessor) updatesProcessor(message, true)\r\n break\r\n }\r\n }\r\n }\r\n }\r\n\r\nconst getDeserializeOpts = msgGetter => ({\r\n mtproto : true,\r\n override: {\r\n mt_message(result, field) {\r\n result.msg_id = this.fetchLong(`${field }[msg_id]`)\r\n result.seqno = this.fetchInt(`${field }[seqno]`)\r\n result.bytes = this.fetchInt(`${field }[bytes]`)\r\n\r\n const offset = this.getOffset()\r\n\r\n try {\r\n result.body = this.fetchObject('Object', `${field }[body]`)\r\n } catch (e) {\r\n console.error(dTime(), 'parse error', e.message, e.stack)\r\n result.body = { _: 'parse_error', error: e }\r\n }\r\n if (this.offset != offset + result.bytes) {\r\n // console.warn(dTime(), 'set offset', this.offset, offset, result.bytes)\r\n // console.log(dTime(), result)\r\n this.offset = offset + result.bytes\r\n }\r\n // console.log(dTime(), 'override message', result)\r\n },\r\n mt_rpc_result(result, field) {\r\n result.req_msg_id = this.fetchLong(`${ field }[req_msg_id]`)\r\n\r\n const sentMessage = msgGetter(result)\r\n const type = sentMessage && sentMessage.resultType || 'Object'\r\n\r\n if (result.req_msg_id && !sentMessage) {\r\n // console.warn(dTime(), 'Result for unknown message', result)\r\n return\r\n }\r\n result.result = this.fetchObject(type, `${ field }[result]`)\r\n // console.log(dTime(), 'override rpc_result', sentMessage, type, result)\r\n }\r\n }\r\n})\r\n\r\nexport const startAll = () => {\r\n if (akStopped) {\r\n akStopped = false\r\n updatesProcessor({ _: 'new_session_created' }, true)\r\n }\r\n}\r\n\r\nexport const stopAll = () => akStopped = true\r\n\r\nexport const setUpdatesProcessor = callback =>\r\n updatesProcessor = callback\r\n\r\nexport default NetworkerFabric\n\n\n// WEBPACK FOOTER //\n// ./service/networker.js","module.exports = (__webpack_require__(6))(123);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/webpack/buildin/global.js from dll-reference vendor\n// module id = 18\n// module chunks = 0","var CryptoJS = require('./lib/core').CryptoJS;\nrequire('./lib/enc-base64');\nrequire('./lib/md5');\nrequire('./lib/evpkdf');\nrequire('./lib/cipher-core');\nrequire('./lib/aes');\nrequire('./lib/sha256');\nvar JsonFormatter = require('./lib/jsonformatter').JsonFormatter;\n\nexports.CryptoJS = CryptoJS;\nexports.JsonFormatter = JsonFormatter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/cryptojs.js\n// module id = 19\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var BlockCipher = C_lib.BlockCipher;\r\n var C_algo = C.algo;\r\n\r\n // Lookup tables\r\n var SBOX = [];\r\n var INV_SBOX = [];\r\n var SUB_MIX_0 = [];\r\n var SUB_MIX_1 = [];\r\n var SUB_MIX_2 = [];\r\n var SUB_MIX_3 = [];\r\n var INV_SUB_MIX_0 = [];\r\n var INV_SUB_MIX_1 = [];\r\n var INV_SUB_MIX_2 = [];\r\n var INV_SUB_MIX_3 = [];\r\n\r\n // Compute lookup tables\r\n (function () {\r\n // Compute double table\r\n var d = [];\r\n for (var i = 0; i < 256; i++) {\r\n if (i < 128) {\r\n d[i] = i << 1;\r\n } else {\r\n d[i] = (i << 1) ^ 0x11b;\r\n }\r\n }\r\n\r\n // Walk GF(2^8)\r\n var x = 0;\r\n var xi = 0;\r\n for (var i = 0; i < 256; i++) {\r\n // Compute sbox\r\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n SBOX[x] = sx;\r\n INV_SBOX[sx] = x;\r\n\r\n // Compute multiplication\r\n var x2 = d[x];\r\n var x4 = d[x2];\r\n var x8 = d[x4];\r\n\r\n // Compute sub bytes, mix columns tables\r\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n SUB_MIX_3[x] = t;\r\n\r\n // Compute inv sub bytes, inv mix columns tables\r\n var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n INV_SUB_MIX_3[sx] = t;\r\n\r\n // Compute next counter\r\n if (!x) {\r\n x = xi = 1;\r\n } else {\r\n x = x2 ^ d[d[d[x8 ^ x2]]];\r\n xi ^= d[d[xi]];\r\n }\r\n }\r\n }());\r\n\r\n // Precomputed Rcon lookup\r\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n /**\r\n * AES block cipher algorithm.\r\n */\r\n var AES = C_algo.AES = BlockCipher.extend({\r\n _doReset: function () {\r\n // Shortcuts\r\n var key = this._key;\r\n var keyWords = key.words;\r\n var keySize = key.sigBytes / 4;\r\n\r\n // Compute number of rounds\r\n var nRounds = this._nRounds = keySize + 6\r\n\r\n // Compute number of key schedule rows\r\n var ksRows = (nRounds + 1) * 4;\r\n\r\n // Compute key schedule\r\n var keySchedule = this._keySchedule = [];\r\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n if (ksRow < keySize) {\r\n keySchedule[ksRow] = keyWords[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 1];\r\n\r\n if (!(ksRow % keySize)) {\r\n // Rot word\r\n t = (t << 8) | (t >>> 24);\r\n\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n // Mix Rcon\r\n t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n } else if (keySize > 6 && ksRow % keySize == 4) {\r\n // Sub word\r\n t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n }\r\n\r\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n }\r\n }\r\n\r\n // Compute inv key schedule\r\n var invKeySchedule = this._invKeySchedule = [];\r\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n var ksRow = ksRows - invKsRow;\r\n\r\n if (invKsRow % 4) {\r\n var t = keySchedule[ksRow];\r\n } else {\r\n var t = keySchedule[ksRow - 4];\r\n }\r\n\r\n if (invKsRow < 4 || ksRow <= 4) {\r\n invKeySchedule[invKsRow] = t;\r\n } else {\r\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n }\r\n }\r\n },\r\n\r\n encryptBlock: function (M, offset) {\r\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n },\r\n\r\n decryptBlock: function (M, offset) {\r\n // Swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n\r\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n // Inv swap 2nd and 4th rows\r\n var t = M[offset + 1];\r\n M[offset + 1] = M[offset + 3];\r\n M[offset + 3] = t;\r\n },\r\n\r\n _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n // Shortcut\r\n var nRounds = this._nRounds;\r\n\r\n // Get input, add round key\r\n var s0 = M[offset] ^ keySchedule[0];\r\n var s1 = M[offset + 1] ^ keySchedule[1];\r\n var s2 = M[offset + 2] ^ keySchedule[2];\r\n var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n // Key schedule row counter\r\n var ksRow = 4;\r\n\r\n // Rounds\r\n for (var round = 1; round < nRounds; round++) {\r\n // Shift rows, sub bytes, mix columns, add round key\r\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n // Update state\r\n s0 = t0;\r\n s1 = t1;\r\n s2 = t2;\r\n s3 = t3;\r\n }\r\n\r\n // Shift rows, sub bytes, add round key\r\n var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n // Set output\r\n M[offset] = t0;\r\n M[offset + 1] = t1;\r\n M[offset + 2] = t2;\r\n M[offset + 3] = t3;\r\n },\r\n\r\n keySize: 256/32\r\n });\r\n\r\n /**\r\n * Shortcut functions to the cipher's object interface.\r\n *\r\n * @example\r\n *\r\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n */\r\n C.AES = BlockCipher._createHelper(AES);\r\n}());\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/aes.js\n// module id = 20\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\r\n * Cipher core components.\r\n */\r\nCryptoJS.lib.Cipher || (function (undefined) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n var C_enc = C.enc;\r\n var Utf8 = C_enc.Utf8;\r\n var Base64 = C_enc.Base64;\r\n var C_algo = C.algo;\r\n var EvpKDF = C_algo.EvpKDF;\r\n\r\n /**\r\n * Abstract base cipher template.\r\n *\r\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n */\r\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {WordArray} iv The IV to use for this operation.\r\n */\r\n cfg: Base.extend(),\r\n\r\n /**\r\n * Creates this cipher in encryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createEncryptor: function (key, cfg) {\r\n return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Creates this cipher in decryption mode.\r\n *\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {Cipher} A cipher instance.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n */\r\n createDecryptor: function (key, cfg) {\r\n return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n },\r\n\r\n /**\r\n * Initializes a newly created cipher.\r\n *\r\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @example\r\n *\r\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n */\r\n init: function (xformMode, key, cfg) {\r\n // Apply config defaults\r\n this.cfg = this.cfg.extend(cfg);\r\n\r\n // Store transform mode and key\r\n this._xformMode = xformMode;\r\n this._key = key;\r\n\r\n // Set initial values\r\n this.reset();\r\n },\r\n\r\n /**\r\n * Resets this cipher to its initial state.\r\n *\r\n * @example\r\n *\r\n * cipher.reset();\r\n */\r\n reset: function () {\r\n // Reset data buffer\r\n BufferedBlockAlgorithm.reset.call(this);\r\n\r\n // Perform concrete-cipher logic\r\n this._doReset();\r\n },\r\n\r\n /**\r\n * Adds data to be encrypted or decrypted.\r\n *\r\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.process('data');\r\n * var encrypted = cipher.process(wordArray);\r\n */\r\n process: function (dataUpdate) {\r\n // Append\r\n this._append(dataUpdate);\r\n\r\n // Process available blocks\r\n return this._process();\r\n },\r\n\r\n /**\r\n * Finalizes the encryption or decryption process.\r\n * Note that the finalize operation is effectively a destructive, read-once operation.\r\n *\r\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n *\r\n * @return {WordArray} The data after final processing.\r\n *\r\n * @example\r\n *\r\n * var encrypted = cipher.finalize();\r\n * var encrypted = cipher.finalize('data');\r\n * var encrypted = cipher.finalize(wordArray);\r\n */\r\n finalize: function (dataUpdate) {\r\n // Final data update\r\n if (dataUpdate) {\r\n this._append(dataUpdate);\r\n }\r\n\r\n // Perform concrete-cipher logic\r\n var finalProcessedData = this._doFinalize();\r\n\r\n return finalProcessedData;\r\n },\r\n\r\n keySize: 128/32,\r\n\r\n ivSize: 128/32,\r\n\r\n _ENC_XFORM_MODE: 1,\r\n\r\n _DEC_XFORM_MODE: 2,\r\n\r\n /**\r\n * Creates shortcut functions to a cipher's object interface.\r\n *\r\n * @param {Cipher} cipher The cipher to create a helper for.\r\n *\r\n * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n */\r\n _createHelper: (function () {\r\n function selectCipherStrategy(key) {\r\n if (typeof key == 'string') {\r\n return PasswordBasedCipher;\r\n } else {\r\n return SerializableCipher;\r\n }\r\n }\r\n\r\n return function (cipher) {\r\n return {\r\n encrypt: function (message, key, cfg) {\r\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n },\r\n\r\n decrypt: function (ciphertext, key, cfg) {\r\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n }\r\n };\r\n };\r\n }())\r\n });\r\n\r\n /**\r\n * Abstract base stream cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n */\r\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n _doFinalize: function () {\r\n // Process partial blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 1\r\n });\r\n\r\n /**\r\n * Mode namespace.\r\n */\r\n var C_mode = C.mode = {};\r\n\r\n /**\r\n * Abstract base block cipher mode template.\r\n */\r\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n /**\r\n * Creates this mode for encryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n */\r\n createEncryptor: function (cipher, iv) {\r\n return this.Encryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Creates this mode for decryption.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n */\r\n createDecryptor: function (cipher, iv) {\r\n return this.Decryptor.create(cipher, iv);\r\n },\r\n\r\n /**\r\n * Initializes a newly created mode.\r\n *\r\n * @param {Cipher} cipher A block cipher instance.\r\n * @param {Array} iv The IV words.\r\n *\r\n * @example\r\n *\r\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n */\r\n init: function (cipher, iv) {\r\n this._cipher = cipher;\r\n this._iv = iv;\r\n }\r\n });\r\n\r\n /**\r\n * Cipher Block Chaining mode.\r\n */\r\n var CBC = C_mode.CBC = (function () {\r\n /**\r\n * Abstract base CBC mode.\r\n */\r\n var CBC = BlockCipherMode.extend();\r\n\r\n /**\r\n * CBC encryptor.\r\n */\r\n CBC.Encryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // XOR and encrypt\r\n xorBlock.call(this, words, offset, blockSize);\r\n cipher.encryptBlock(words, offset);\r\n\r\n // Remember this block to use with next block\r\n this._prevBlock = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n /**\r\n * CBC decryptor.\r\n */\r\n CBC.Decryptor = CBC.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n // Remember this block to use with next block\r\n var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n // Decrypt and XOR\r\n cipher.decryptBlock(words, offset);\r\n xorBlock.call(this, words, offset, blockSize);\r\n\r\n // This block becomes the previous block\r\n this._prevBlock = thisBlock;\r\n }\r\n });\r\n\r\n function xorBlock(words, offset, blockSize) {\r\n // Shortcut\r\n var iv = this._iv;\r\n\r\n // Choose mixing block\r\n if (iv) {\r\n var block = iv;\r\n\r\n // Remove IV for subsequent blocks\r\n this._iv = undefined;\r\n } else {\r\n var block = this._prevBlock;\r\n }\r\n\r\n // XOR blocks\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return CBC;\r\n }());\r\n\r\n /**\r\n * Infinite Garble Extension mode.\r\n */\r\n var IGE = C_mode.IGE = (function () {\r\n /**\r\n * Abstract base IGE mode.\r\n */\r\n var IGE = BlockCipherMode.extend();\r\n\r\n /**\r\n * IGE encryptor.\r\n */\r\n IGE.Encryptor = IGE.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n if (this._ivp === undefined) {\r\n this._ivp = this._iv.slice(0, blockSize);\r\n this._iv2p = this._iv.slice(blockSize, blockSize + blockSize);\r\n }\r\n\r\n\r\n // Remember this block to use with next block\r\n var nextIv2p = words.slice(offset, offset + blockSize);\r\n\r\n // XOR with previous ciphertext\r\n xorBlock(words, this._ivp, offset, blockSize);\r\n\r\n // Block cipher\r\n cipher.encryptBlock(words, offset);\r\n\r\n // XOR with previous plaintext\r\n xorBlock(words, this._iv2p, offset, blockSize);\r\n\r\n this._ivp = words.slice(offset, offset + blockSize);\r\n this._iv2p = nextIv2p;\r\n }\r\n });\r\n\r\n /**\r\n * IGE decryptor.\r\n */\r\n IGE.Decryptor = IGE.extend({\r\n /**\r\n * Processes the data block at offset.\r\n *\r\n * @param {Array} words The data words to operate on.\r\n * @param {number} offset The offset where the block starts.\r\n *\r\n * @example\r\n *\r\n * mode.processBlock(data.words, offset);\r\n */\r\n processBlock: function (words, offset) {\r\n // Shortcuts\r\n var cipher = this._cipher;\r\n var blockSize = cipher.blockSize;\r\n\r\n if (this._ivp === undefined) {\r\n this._ivp = this._iv.slice(0, blockSize);\r\n this._iv2p = this._iv.slice(blockSize, 2 * blockSize);\r\n }\r\n\r\n // Remember this block to use with next block\r\n var nextIvp = words.slice(offset, offset + blockSize);\r\n\r\n // XOR with previous ciphertext\r\n xorBlock(words, this._iv2p, offset, blockSize);\r\n\r\n // Block cipher\r\n cipher.decryptBlock(words, offset);\r\n\r\n // XOR with previous plaintext\r\n xorBlock(words, this._ivp, offset, blockSize);\r\n\r\n this._ivp = nextIvp;\r\n this._iv2p = words.slice(offset, offset + blockSize);\r\n }\r\n });\r\n\r\n function xorBlock(words, block, offset, blockSize) {\r\n for (var i = 0; i < blockSize; i++) {\r\n words[offset + i] ^= block[i];\r\n }\r\n }\r\n\r\n return IGE;\r\n }());\r\n\r\n /**\r\n * Padding namespace.\r\n */\r\n var C_pad = C.pad = {};\r\n\r\n /**\r\n * PKCS #5/7 padding strategy.\r\n */\r\n var Pkcs7 = C_pad.Pkcs7 = {\r\n /**\r\n * Pads data using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to pad.\r\n * @param {number} blockSize The multiple that the data should be padded to.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n */\r\n pad: function (data, blockSize) {\r\n // Shortcut\r\n var blockSizeBytes = blockSize * 4;\r\n\r\n // Count padding bytes\r\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n // Create padding word\r\n var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n // Create padding\r\n var paddingWords = [];\r\n for (var i = 0; i < nPaddingBytes; i += 4) {\r\n paddingWords.push(paddingWord);\r\n }\r\n var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n // Add padding\r\n data.concat(padding);\r\n },\r\n\r\n /**\r\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n *\r\n * @param {WordArray} data The data to unpad.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n */\r\n unpad: function (data) {\r\n // Get number of padding bytes from last byte\r\n var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n // Remove padding\r\n data.sigBytes -= nPaddingBytes;\r\n }\r\n };\r\n\r\n var NoPadding = C_pad.NoPadding = {\r\n pad: function () {\r\n },\r\n\r\n unpad: function () {\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Abstract base block cipher template.\r\n *\r\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n */\r\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Mode} mode The block mode to use. Default: CBC\r\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n */\r\n cfg: Cipher.cfg.extend({\r\n mode: CBC,\r\n padding: Pkcs7\r\n }),\r\n\r\n reset: function () {\r\n // Reset cipher\r\n Cipher.reset.call(this);\r\n\r\n // Shortcuts\r\n var cfg = this.cfg;\r\n var iv = cfg.iv;\r\n var mode = cfg.mode;\r\n\r\n // Reset block mode\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n var modeCreator = mode.createEncryptor;\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n var modeCreator = mode.createDecryptor;\r\n\r\n // Keep at least one block in the buffer for unpadding\r\n this._minBufferSize = 1;\r\n }\r\n this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n },\r\n\r\n _doProcessBlock: function (words, offset) {\r\n this._mode.processBlock(words, offset);\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcut\r\n var padding = this.cfg.padding;\r\n\r\n // Finalize\r\n if (this._xformMode == this._ENC_XFORM_MODE) {\r\n // Pad data\r\n padding.pad(this._data, this.blockSize);\r\n\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n // Process final blocks\r\n var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n // Unpad data\r\n padding.unpad(finalProcessedBlocks);\r\n }\r\n\r\n return finalProcessedBlocks;\r\n },\r\n\r\n blockSize: 128/32\r\n });\r\n\r\n /**\r\n * A collection of cipher parameters.\r\n *\r\n * @property {WordArray} ciphertext The raw ciphertext.\r\n * @property {WordArray} key The key to this ciphertext.\r\n * @property {WordArray} iv The IV used in the ciphering operation.\r\n * @property {WordArray} salt The salt used with a key derivation function.\r\n * @property {Cipher} algorithm The cipher algorithm.\r\n * @property {Mode} mode The block mode used in the ciphering operation.\r\n * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n * @property {number} blockSize The block size of the cipher.\r\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n */\r\n var CipherParams = C_lib.CipherParams = Base.extend({\r\n /**\r\n * Initializes a newly created cipher params object.\r\n *\r\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n * ciphertext: ciphertextWordArray,\r\n * key: keyWordArray,\r\n * iv: ivWordArray,\r\n * salt: saltWordArray,\r\n * algorithm: CryptoJS.algo.AES,\r\n * mode: CryptoJS.mode.CBC,\r\n * padding: CryptoJS.pad.PKCS7,\r\n * blockSize: 4,\r\n * formatter: CryptoJS.format.OpenSSL\r\n * });\r\n */\r\n init: function (cipherParams) {\r\n this.mixIn(cipherParams);\r\n },\r\n\r\n /**\r\n * Converts this cipher params object to a string.\r\n *\r\n * @param {Format} formatter (Optional) The formatting strategy to use.\r\n *\r\n * @return {string} The stringified cipher params.\r\n *\r\n * @throws Error If neither the formatter nor the default formatter is set.\r\n *\r\n * @example\r\n *\r\n * var string = cipherParams + '';\r\n * var string = cipherParams.toString();\r\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n */\r\n toString: function (formatter) {\r\n return (formatter || this.formatter).stringify(this);\r\n }\r\n });\r\n\r\n /**\r\n * Format namespace.\r\n */\r\n var C_format = C.format = {};\r\n\r\n /**\r\n * OpenSSL formatting strategy.\r\n */\r\n var OpenSSLFormatter = C_format.OpenSSL = {\r\n /**\r\n * Converts a cipher params object to an OpenSSL-compatible string.\r\n *\r\n * @param {CipherParams} cipherParams The cipher params object.\r\n *\r\n * @return {string} The OpenSSL-compatible string.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n */\r\n stringify: function (cipherParams) {\r\n // Shortcuts\r\n var ciphertext = cipherParams.ciphertext;\r\n var salt = cipherParams.salt;\r\n\r\n // Format\r\n if (salt) {\r\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n } else {\r\n var wordArray = ciphertext;\r\n }\r\n\r\n return wordArray.toString(Base64);\r\n },\r\n\r\n /**\r\n * Converts an OpenSSL-compatible string to a cipher params object.\r\n *\r\n * @param {string} openSSLStr The OpenSSL-compatible string.\r\n *\r\n * @return {CipherParams} The cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n */\r\n parse: function (openSSLStr) {\r\n // Parse base64\r\n var ciphertext = Base64.parse(openSSLStr);\r\n\r\n // Shortcut\r\n var ciphertextWords = ciphertext.words;\r\n\r\n // Test for salt\r\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n // Extract salt\r\n var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n // Remove salt from ciphertext\r\n ciphertextWords.splice(0, 4);\r\n ciphertext.sigBytes -= 16;\r\n }\r\n\r\n return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n */\r\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n */\r\n cfg: Base.extend({\r\n format: OpenSSLFormatter\r\n }),\r\n\r\n /**\r\n * Encrypts a message.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Encrypt\r\n var encryptor = cipher.createEncryptor(key, cfg);\r\n var ciphertext = encryptor.finalize(message);\r\n\r\n // Shortcut\r\n var cipherCfg = encryptor.cfg;\r\n\r\n // Create and return serializable cipher params\r\n return CipherParams.create({\r\n ciphertext: ciphertext,\r\n key: key,\r\n iv: cipherCfg.iv,\r\n algorithm: cipher,\r\n mode: cipherCfg.mode,\r\n padding: cipherCfg.padding,\r\n blockSize: cipher.blockSize,\r\n formatter: cfg.format\r\n });\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {WordArray} key The key.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, key, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Decrypt\r\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n return plaintext;\r\n },\r\n\r\n /**\r\n * Converts serialized ciphertext to CipherParams,\r\n * else assumed CipherParams already and returns ciphertext unchanged.\r\n *\r\n * @param {CipherParams|string} ciphertext The ciphertext.\r\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n *\r\n * @return {CipherParams} The unserialized ciphertext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n */\r\n _parse: function (ciphertext, format) {\r\n if (typeof ciphertext == 'string') {\r\n return format.parse(ciphertext, this);\r\n } else {\r\n return ciphertext;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Key derivation function namespace.\r\n */\r\n var C_kdf = C.kdf = {};\r\n\r\n /**\r\n * OpenSSL key derivation function.\r\n */\r\n var OpenSSLKdf = C_kdf.OpenSSL = {\r\n /**\r\n * Derives a key and IV from a password.\r\n *\r\n * @param {string} password The password to derive from.\r\n * @param {number} keySize The size in words of the key to generate.\r\n * @param {number} ivSize The size in words of the IV to generate.\r\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n *\r\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n */\r\n execute: function (password, keySize, ivSize, salt) {\r\n // Generate random salt\r\n if (!salt) {\r\n salt = WordArray.random(64/8);\r\n }\r\n\r\n // Derive key and IV\r\n var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n // Separate key and IV\r\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n key.sigBytes = keySize * 4;\r\n\r\n // Return params\r\n return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n }\r\n };\r\n\r\n /**\r\n * A serializable cipher wrapper that derives the key from a password,\r\n * and returns ciphertext as a serializable cipher params object.\r\n */\r\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n */\r\n cfg: SerializableCipher.cfg.extend({\r\n kdf: OpenSSLKdf\r\n }),\r\n\r\n /**\r\n * Encrypts a message using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {WordArray|string} message The message to encrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {CipherParams} A cipher params object.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n encrypt: function (cipher, message, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Encrypt\r\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n // Mix in derived params\r\n ciphertext.mixIn(derivedParams);\r\n\r\n return ciphertext;\r\n },\r\n\r\n /**\r\n * Decrypts serialized ciphertext using a password.\r\n *\r\n * @param {Cipher} cipher The cipher algorithm to use.\r\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n * @param {string} password The password.\r\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n *\r\n * @return {WordArray} The plaintext.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n */\r\n decrypt: function (cipher, ciphertext, password, cfg) {\r\n // Apply config defaults\r\n cfg = this.cfg.extend(cfg);\r\n\r\n // Convert string to CipherParams\r\n ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n // Derive key and other params\r\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n // Add IV to config\r\n cfg.iv = derivedParams.iv;\r\n\r\n // Decrypt\r\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n return plaintext;\r\n }\r\n });\r\n}());\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/cipher-core.js\n// module id = 21\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\n\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function (wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function (base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);\n words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/enc-base64.js\n// module id = 22\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var Base = C_lib.Base;\r\n var WordArray = C_lib.WordArray;\r\n var C_algo = C.algo;\r\n var MD5 = C_algo.MD5;\r\n\r\n /**\r\n * This key derivation function is meant to conform with EVP_BytesToKey.\r\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n */\r\n var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n /**\r\n * Configuration options.\r\n *\r\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n * @property {number} iterations The number of iterations to perform. Default: 1\r\n */\r\n cfg: Base.extend({\r\n keySize: 128/32,\r\n hasher: MD5,\r\n iterations: 1\r\n }),\r\n\r\n /**\r\n * Initializes a newly created key derivation function.\r\n *\r\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n *\r\n * @example\r\n *\r\n * var kdf = CryptoJS.algo.EvpKDF.create();\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n */\r\n init: function (cfg) {\r\n this.cfg = this.cfg.extend(cfg);\r\n },\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @example\r\n *\r\n * var key = kdf.compute(password, salt);\r\n */\r\n compute: function (password, salt) {\r\n // Shortcut\r\n var cfg = this.cfg;\r\n\r\n // Init hasher\r\n var hasher = cfg.hasher.create();\r\n\r\n // Initial values\r\n var derivedKey = WordArray.create();\r\n\r\n // Shortcuts\r\n var derivedKeyWords = derivedKey.words;\r\n var keySize = cfg.keySize;\r\n var iterations = cfg.iterations;\r\n\r\n // Generate key\r\n while (derivedKeyWords.length < keySize) {\r\n if (block) {\r\n hasher.update(block);\r\n }\r\n var block = hasher.update(password).finalize(salt);\r\n hasher.reset();\r\n\r\n // Iterations\r\n for (var i = 1; i < iterations; i++) {\r\n block = hasher.finalize(block);\r\n hasher.reset();\r\n }\r\n\r\n derivedKey.concat(block);\r\n }\r\n derivedKey.sigBytes = keySize * 4;\r\n\r\n return derivedKey;\r\n }\r\n });\r\n\r\n /**\r\n * Derives a key from a password.\r\n *\r\n * @param {WordArray|string} password The password.\r\n * @param {WordArray|string} salt A salt.\r\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n *\r\n * @return {WordArray} The derived key.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var key = CryptoJS.EvpKDF(password, salt);\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n */\r\n C.EvpKDF = function (password, salt, cfg) {\r\n return EvpKDF.create(cfg).compute(password, salt);\r\n };\r\n}());\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/evpkdf.js\n// module id = 23\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\n\n// create custom json serialization format\nvar JsonFormatter = {\n\tstringify: function (cipherParams) {\n\t\t// create json object with ciphertext\n\t\tvar jsonObj = {\n\t\t\tct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)\n\t\t};\n\t\t\n\t\t// optionally add iv and salt\n\t\tif (cipherParams.iv) {\n\t\t\tjsonObj.iv = cipherParams.iv.toString();\n\t\t}\n\t\t\n\t\tif (cipherParams.salt) {\n\t\t\tjsonObj.s = cipherParams.salt.toString();\n\t\t}\n\n\t\t// stringify json object\n\t\treturn JSON.stringify(jsonObj)\n\t},\n\n\tparse: function (jsonStr) {\n\t\t// parse json string\n\t\tvar jsonObj = JSON.parse(jsonStr);\n\t\t\n\t\t// extract ciphertext from json object, and create cipher params object\n\t\tvar cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t\tciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)\n\t\t});\n\t\t\n\t\t// optionally extract iv and salt\n\t\tif (jsonObj.iv) {\n\t\t\tcipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);\n\t\t}\n \n\t\tif (jsonObj.s) {\n\t\t\tcipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);\n\t\t}\n\t\t\n\t\treturn cipherParams;\n\t}\n};\n\nexports.JsonFormatter = JsonFormatter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/jsonformatter.js\n// module id = 24\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\r\n\r\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (Math) {\r\n // Shortcuts\r\n var C = CryptoJS;\r\n var C_lib = C.lib;\r\n var WordArray = C_lib.WordArray;\r\n var Hasher = C_lib.Hasher;\r\n var C_algo = C.algo;\r\n\r\n // Constants table\r\n var T = [];\r\n\r\n // Compute constants\r\n (function () {\r\n for (var i = 0; i < 64; i++) {\r\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n }\r\n }());\r\n\r\n /**\r\n * MD5 hash algorithm.\r\n */\r\n var MD5 = C_algo.MD5 = Hasher.extend({\r\n _doReset: function () {\r\n this._hash = new WordArray.init([\r\n 0x67452301, 0xefcdab89,\r\n 0x98badcfe, 0x10325476\r\n ]);\r\n },\r\n\r\n _doProcessBlock: function (M, offset) {\r\n // Swap endian\r\n for (var i = 0; i < 16; i++) {\r\n // Shortcuts\r\n var offset_i = offset + i;\r\n var M_offset_i = M[offset_i];\r\n\r\n M[offset_i] = (\r\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n );\r\n }\r\n\r\n // Shortcuts\r\n var H = this._hash.words;\r\n\r\n var M_offset_0 = M[offset + 0];\r\n var M_offset_1 = M[offset + 1];\r\n var M_offset_2 = M[offset + 2];\r\n var M_offset_3 = M[offset + 3];\r\n var M_offset_4 = M[offset + 4];\r\n var M_offset_5 = M[offset + 5];\r\n var M_offset_6 = M[offset + 6];\r\n var M_offset_7 = M[offset + 7];\r\n var M_offset_8 = M[offset + 8];\r\n var M_offset_9 = M[offset + 9];\r\n var M_offset_10 = M[offset + 10];\r\n var M_offset_11 = M[offset + 11];\r\n var M_offset_12 = M[offset + 12];\r\n var M_offset_13 = M[offset + 13];\r\n var M_offset_14 = M[offset + 14];\r\n var M_offset_15 = M[offset + 15];\r\n\r\n // Working varialbes\r\n var a = H[0];\r\n var b = H[1];\r\n var c = H[2];\r\n var d = H[3];\r\n\r\n // Computation\r\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n // Intermediate hash value\r\n H[0] = (H[0] + a) | 0;\r\n H[1] = (H[1] + b) | 0;\r\n H[2] = (H[2] + c) | 0;\r\n H[3] = (H[3] + d) | 0;\r\n },\r\n\r\n _doFinalize: function () {\r\n // Shortcuts\r\n var data = this._data;\r\n var dataWords = data.words;\r\n\r\n var nBitsTotal = this._nDataBytes * 8;\r\n var nBitsLeft = data.sigBytes * 8;\r\n\r\n // Add padding\r\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n var nBitsTotalL = nBitsTotal;\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n );\r\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n );\r\n\r\n data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n // Hash final blocks\r\n this._process();\r\n\r\n // Shortcuts\r\n var hash = this._hash;\r\n var H = hash.words;\r\n\r\n // Swap endian\r\n for (var i = 0; i < 4; i++) {\r\n // Shortcut\r\n var H_i = H[i];\r\n\r\n H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n }\r\n\r\n // Return final computed hash\r\n return hash;\r\n },\r\n\r\n clone: function () {\r\n var clone = Hasher.clone.call(this);\r\n clone._hash = this._hash.clone();\r\n\r\n return clone;\r\n }\r\n });\r\n\r\n function FF(a, b, c, d, x, s, t) {\r\n var n = a + ((b & c) | (~b & d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function GG(a, b, c, d, x, s, t) {\r\n var n = a + ((b & d) | (c & ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function HH(a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n function II(a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + x + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n }\r\n\r\n /**\r\n * Shortcut function to the hasher's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n *\r\n * @return {WordArray} The hash.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hash = CryptoJS.MD5('message');\r\n * var hash = CryptoJS.MD5(wordArray);\r\n */\r\n C.MD5 = Hasher._createHelper(MD5);\r\n\r\n /**\r\n * Shortcut function to the HMAC's object interface.\r\n *\r\n * @param {WordArray|string} message The message to hash.\r\n * @param {WordArray|string} key The secret key.\r\n *\r\n * @return {WordArray} The HMAC.\r\n *\r\n * @static\r\n *\r\n * @example\r\n *\r\n * var hmac = CryptoJS.HmacMD5(message, key);\r\n */\r\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n}(Math));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/md5.js\n// module id = 25\n// module chunks = 0","var CryptoJS = require('./core').CryptoJS;\n\n(function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo;\n\n // Initialization and round constants tables\n var H = [];\n var K = [];\n\n // Compute constants\n (function () {\n function isPrime(n) {\n var sqrtN = Math.sqrt(n);\n for (var factor = 2; factor <= sqrtN; factor++) {\n if (!(n % factor)) {\n return false;\n }\n }\n\n return true;\n }\n\n function getFractionalBits(n) {\n return ((n - (n | 0)) * 0x100000000) | 0;\n }\n\n var n = 2;\n var nPrime = 0;\n while (nPrime < 64) {\n if (isPrime(n)) {\n if (nPrime < 8) {\n H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n }\n K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n nPrime++;\n }\n\n n++;\n }\n }());\n\n // Reusable object\n var W = [];\n\n /**\n * SHA-256 hash algorithm.\n */\n var SHA256 = C_algo.SHA256 = Hasher.extend({\n _doReset: function () {\n this._hash = new WordArray.init(H.slice(0));\n },\n\n _doProcessBlock: function (M, offset) {\n // Shortcut\n var H = this._hash.words;\n\n // Working variables\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n var f = H[5];\n var g = H[6];\n var h = H[7];\n\n // Computation\n for (var i = 0; i < 64; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var gamma0x = W[i - 15];\n var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n ((gamma0x << 14) | (gamma0x >>> 18)) ^\n (gamma0x >>> 3);\n\n var gamma1x = W[i - 2];\n var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n ((gamma1x << 13) | (gamma1x >>> 19)) ^\n (gamma1x >>> 10);\n\n W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n }\n\n var ch = (e & f) ^ (~e & g);\n var maj = (a & b) ^ (a & c) ^ (b & c);\n\n var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n var t1 = h + sigma1 + ch + K[i] + W[i];\n var t2 = sigma0 + maj;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0;\n H[1] = (H[1] + b) | 0;\n H[2] = (H[2] + c) | 0;\n H[3] = (H[3] + d) | 0;\n H[4] = (H[4] + e) | 0;\n H[5] = (H[5] + f) | 0;\n H[6] = (H[6] + g) | 0;\n H[7] = (H[7] + h) | 0;\n },\n\n _doFinalize: function () {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8;\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4;\n\n // Hash final blocks\n this._process();\n\n // Return final computed hash\n return this._hash;\n },\n\n clone: function () {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n\n return clone;\n }\n });\n\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA256('message');\n * var hash = CryptoJS.SHA256(wordArray);\n */\n C.SHA256 = Hasher._createHelper(SHA256);\n\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA256(message, key);\n */\n C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n}(Math));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/@goodmind/node-cryptojs-aes/lib/sha256.js\n// module id = 26\n// module chunks = 0","\r\nexport class MTError extends Error {\r\n static getMessage(code, type, message) {\r\n return `MT[${code}] ${type}: ${message}`\r\n }\r\n constructor(code, type, message) {\r\n const fullMessage = MTError.getMessage(code, type, message)\r\n super(fullMessage)\r\n this.code = code\r\n this.type = type\r\n }\r\n}\r\n\r\nexport class ErrorBadResponse extends MTError {\r\n constructor(url, originalError = null) {\r\n super(406, 'NETWORK_BAD_RESPONSE', url)\r\n if (originalError)\r\n this.originalError = originalError\r\n }\r\n}\r\n\r\nexport class ErrorNotFound extends MTError {\r\n constructor(err) {\r\n super(404, 'REQUEST_FAILED', err.config.url)\r\n this.originalError = err\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./error.js","////////////////////////////////////////////////////////////////////////////////////////\r\n// Big Integer Library v. 5.5\r\n// Created 2000, last modified 2013\r\n// Leemon Baird\r\n// www.leemon.com\r\n//\r\n// Version history:\r\n// v 5.5 17 Mar 2013\r\n// - two lines of a form like \"if (x<0) x+=n\" had the \"if\" changed to \"while\" to\r\n// handle the case when x<-n. (Thanks to James Ansell for finding that bug)\r\n// v 5.4 3 Oct 2009\r\n// - added \"var i\" to greaterShift() so i is not global. (Thanks to PŽter Szab— for finding that bug)\r\n//\r\n// v 5.3 21 Sep 2009\r\n// - added randProbPrime(k) for probable primes\r\n// - unrolled loop in mont_ (slightly faster)\r\n// - millerRabin now takes a bigInt parameter rather than an int\r\n//\r\n// v 5.2 15 Sep 2009\r\n// - fixed capitalization in call to int2bigInt in randBigInt\r\n// (thanks to Emili Evripidou, Reinhold Behringer, and Samuel Macaleese for finding that bug)\r\n//\r\n// v 5.1 8 Oct 2007\r\n// - renamed inverseModInt_ to inverseModInt since it doesn't change its parameters\r\n// - added functions GCD and randBigInt, which call GCD_ and randBigInt_\r\n// - fixed a bug found by Rob Visser (see comment with his name below)\r\n// - improved comments\r\n//\r\n// This file is public domain. You can use it for any purpose without restriction.\r\n// I do not guarantee that it is correct, so use it at your own risk. If you use\r\n// it for something interesting, I'd appreciate hearing about it. If you find\r\n// any bugs or make any improvements, I'd appreciate hearing about those too.\r\n// It would also be nice if my name and URL were left in the comments. But none\r\n// of that is required.\r\n//\r\n// This code defines a bigInt library for arbitrary-precision integers.\r\n// A bigInt is an array of integers storing the value in chunks of bpe bits,\r\n// little endian (buff[0] is the least significant word).\r\n// Negative bigInts are stored two's complement. Almost all the functions treat\r\n// bigInts as nonnegative. The few that view them as two's complement say so\r\n// in their comments. Some functions assume their parameters have at least one\r\n// leading zero element. Functions with an underscore at the end of the name put\r\n// their answer into one of the arrays passed in, and have unpredictable behavior\r\n// in case of overflow, so the caller must make sure the arrays are big enough to\r\n// hold the answer. But the average user should never have to call any of the\r\n// underscored functions. Each important underscored function has a wrapper function\r\n// of the same name without the underscore that takes care of the details for you.\r\n// For each underscored function where a parameter is modified, that same variable\r\n// must not be used as another argument too. So, you cannot square x by doing\r\n// multMod_(x,x,n). You must use squareMod_(x,n) instead, or do y=dup(x); multMod_(x,y,n).\r\n// Or simply use the multMod(x,x,n) function without the underscore, where\r\n// such issues never arise, because non-underscored functions never change\r\n// their parameters; they always allocate new memory for the answer that is returned.\r\n//\r\n// These functions are designed to avoid frequent dynamic memory allocation in the inner loop.\r\n// For most functions, if it needs a BigInt as a local variable it will actually use\r\n// a global, and will only allocate to it only when it's not the right size. This ensures\r\n// that when a function is called repeatedly with same-sized parameters, it only allocates\r\n// memory on the first call.\r\n//\r\n// Note that for cryptographic purposes, the calls to Math.random() must\r\n// be replaced with calls to a better pseudorandom number generator.\r\n//\r\n// In the following, \"bigInt\" means a bigInt with at least one leading zero element,\r\n// and \"integer\" means a nonnegative integer less than radix. In some cases, integer\r\n// can be negative. Negative bigInts are 2s complement.\r\n//\r\n// The following functions do not modify their inputs.\r\n// Those returning a bigInt, string, or Array will dynamically allocate memory for that value.\r\n// Those returning a boolean will return the integer 0 (false) or 1 (true).\r\n// Those returning boolean or int will not allocate memory except possibly on the first\r\n// time they're called with a given parameter size.\r\n//\r\n// bigInt add(x,y) //return (x+y) for bigInts x and y.\r\n// bigInt addInt(x,n) //return (x+n) where x is a bigInt and n is an integer.\r\n// string bigInt2str(x,base) //return a string form of bigInt x in a given base, with 2 <= base <= 95\r\n// int bitSize(x) //return how many bits long the bigInt x is, not counting leading zeros\r\n// bigInt dup(x) //return a copy of bigInt x\r\n// boolean equals(x,y) //is the bigInt x equal to the bigint y?\r\n// boolean equalsInt(x,y) //is bigint x equal to integer y?\r\n// bigInt expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed\r\n// Array findPrimes(n) //return array of all primes less than integer n\r\n// bigInt GCD(x,y) //return greatest common divisor of bigInts x and y (each with same number of elements).\r\n// boolean greater(x,y) //is x>y? (x and y are nonnegative bigInts)\r\n// boolean greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y?\r\n// bigInt int2bigInt(t,n,m) //return a bigInt equal to integer t, with at least n bits and m array elements\r\n// bigInt inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null\r\n// int inverseModInt(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse\r\n// boolean isZero(x) //is the bigInt x equal to zero?\r\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)\r\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)\r\n// bigInt mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n.\r\n// int modInt(x,n) //return x mod n for bigInt x and integer n.\r\n// bigInt mult(x,y) //return x*y for bigInts x and y. This is faster when y<x.\r\n// bigInt multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x.\r\n// boolean negative(x) //is bigInt x negative?\r\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.\r\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.\r\n// bigInt randTruePrime(k) //return a new, random, k-bit, true prime bigInt using Maurer's algorithm.\r\n// bigInt randProbPrime(k) //return a new, random, k-bit, probable prime bigInt (probability it's composite less than 2^-80).\r\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\r\n// bigInt sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement\r\n// bigInt trim(x,k) //return a copy of x with exactly k leading zero elements\r\n//\r\n//\r\n// The following functions each have a non-underscored version, which most users should call instead.\r\n// These functions each write to a single parameter, and the caller is responsible for ensuring the array\r\n// passed in is large enough to hold the result.\r\n//\r\n// void addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer\r\n// void add_(x,y) //do x=x+y for bigInts x and y\r\n// void copy_(x,y) //do x=y on bigInts x and y\r\n// void copyInt_(x,n) //do x=n on bigInt x and integer n\r\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).\r\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\r\n// void mod_(x,n) //do x=x mod n for bigInts x and n. (This never overflows its array).\r\n// void mult_(x,y) //do x=x*y for bigInts x and y.\r\n// void multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n.\r\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.\r\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.\r\n// void randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb.\r\n// void sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement.\r\n//\r\n// The following functions do NOT have a non-underscored version.\r\n// They each write a bigInt result to one or more parameters. The caller is responsible for\r\n// ensuring the arrays passed in are large enough to hold the results.\r\n//\r\n// void addShift_(x,y,ys) //do x=x+(y<<(ys*bpe))\r\n// void carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits.\r\n// void divide_(x,y,q,r) //divide x by y giving quotient q and remainder r\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).\r\n// int eGCD_(x,y,d,a,b) //sets a,b,d to positive bigInts such that d = GCD_(x,y) = a*x-b*y\r\n// void halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement. (This never overflows its array).\r\n// void leftShift_(x,n) //left shift bigInt x by n bits. n<bpe.\r\n// void linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b\r\n// void linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys\r\n// void mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined)\r\n// void multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer.\r\n// void rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe. (This never overflows its array).\r\n// void squareMod_(x,n) //do x=x*x mod n for bigInts x,n\r\n// void subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement.\r\n//\r\n// The following functions are based on algorithms from the _Handbook of Applied Cryptography_\r\n// powMod_() = algorithm 14.94, Montgomery exponentiation\r\n// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_\r\n// GCD_() = algorothm 14.57, Lehmer's algorithm\r\n// mont_() = algorithm 14.36, Montgomery multiplication\r\n// divide_() = algorithm 14.20 Multiple-precision division\r\n// squareMod_() = algorithm 14.16 Multiple-precision squaring\r\n// randTruePrime_() = algorithm 4.62, Maurer's algorithm\r\n// millerRabin() = algorithm 4.24, Miller-Rabin algorithm\r\n//\r\n// Profiling shows:\r\n// randTruePrime_() spends:\r\n// 10% of its time in calls to powMod_()\r\n// 85% of its time in calls to millerRabin()\r\n// millerRabin() spends:\r\n// 99% of its time in calls to powMod_() (always with a base of 2)\r\n// powMod_() spends:\r\n// 94% of its time in calls to mont_() (almost always with x==y)\r\n//\r\n// This suggests there are several ways to speed up this library slightly:\r\n// - convert powMod_ to use a Montgomery form of k-ary window (or maybe a Montgomery form of sliding window)\r\n// -- this should especially focus on being fast when raising 2 to a power mod n\r\n// - convert randTruePrime_() to use a minimum r of 1/3 instead of 1/2 with the appropriate change to the test\r\n// - tune the parameters in randTruePrime_(), including c, m, and recLimit\r\n// - speed up the single loop in mont_() that takes 95% of the runtime, perhaps by reducing checking\r\n// within the loop when all the parameters are the same length.\r\n//\r\n// There are several ideas that look like they wouldn't help much at all:\r\n// - replacing trial division in randTruePrime_() with a sieve (that speeds up something taking almost no time anyway)\r\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)\r\n// - speeding up mont_(x,y,n,np) when x==y by doing a non-modular, non-Montgomery square\r\n// followed by a Montgomery reduction. The intermediate answer will be twice as long as x, so that\r\n// method would be slower. This is unfortunate because the code currently spends almost all of its time\r\n// doing mont_(x,x,...), both for randTruePrime_() and powMod_(). A faster method for Montgomery squaring\r\n// would have a large impact on the speed of randTruePrime_() and powMod_(). HAC has a couple of poorly-worded\r\n// sentences that seem to imply it's faster to do a non-modular square followed by a single\r\n// Montgomery reduction, but that's obviously wrong.\r\n////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n//globals\r\nexport var bpe=0; //bits stored per array element\r\nvar mask=0; //AND this with an array element to chop it down to bpe bits\r\nvar radix=mask+1; //equals 2^bpe. A single 1 bit to the left of the last bit of mask.\r\n\r\n//the digits for converting to different bases\r\nvar digitsStr='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_=!@#$%^&*()[]{}|;:,.<>/?`~ \\\\\\'\\\"+-';\r\n\r\n//initialize the global variables\r\nfor (bpe=0; (1<<(bpe+1)) > (1<<bpe); bpe++); //bpe=number of bits in the mantissa on this platform\r\nbpe>>=1; //bpe=number of bits in one element of the array representing the bigInt\r\nmask=(1<<bpe)-1; //AND the mask with an integer to get its bpe least significant bits\r\nradix=mask+1; //2^bpe. a single 1 bit to the left of the first bit of mask\r\nexport var one=int2bigInt(1,1,1); //constant used in powMod_()\r\n\r\n//the following global variables are scratchpad memory to\r\n//reduce dynamic memory allocation in the inner loop\r\nvar t=new Array(0);\r\nvar ss=t; //used in mult_()\r\nvar s0=t; //used in multMod_(), squareMod_()\r\nvar s1=t; //used in powMod_(), multMod_(), squareMod_()\r\nvar s2=t; //used in powMod_(), multMod_()\r\nvar s3=t; //used in powMod_()\r\nvar s4=t, s5=t; //used in mod_()\r\nvar s6=t; //used in bigInt2str()\r\nvar s7=t; //used in powMod_()\r\nvar T=t; //used in GCD_()\r\nvar sa=t; //used in mont_()\r\nvar mr_x1=t, mr_r=t, mr_a=t, //used in millerRabin()\r\neg_v=t, eg_u=t, eg_A=t, eg_B=t, eg_C=t, eg_D=t, //used in eGCD_(), inverseMod_()\r\nmd_q1=t, md_q2=t, md_q3=t, md_r=t, md_r1=t, md_r2=t, md_tt=t, //used in mod_()\r\n\r\nprimes=t, pows=t, s_i=t, s_i2=t, s_R=t, s_rm=t, s_q=t, s_n1=t,\r\n s_a=t, s_r2=t, s_n=t, s_b=t, s_d=t, s_x1=t, s_x2=t, s_aa=t, //used in randTruePrime_()\r\n\r\nrpprb=t; //used in randProbPrimeRounds() (which also uses \"primes\")\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nvar k, buff\r\n\r\n//return array of all primes less than integer n\r\nfunction findPrimes(n) {\r\n var i,s,p,ans;\r\n s=new Array(n);\r\n for (i=0;i<n;i++)\r\n s[i]=0;\r\n s[0]=2;\r\n p=0; //first p elements of s are primes, the rest are a sieve\r\n for(;s[p]<n;) { //s[p] is the pth prime\r\n for(i=s[p]*s[p]; i<n; i+=s[p]) //mark multiples of s[p]\r\n s[i]=1;\r\n p++;\r\n s[p]=s[p-1]+1;\r\n for(; s[p]<n && s[s[p]]; s[p]++); //find next prime (where s[p]==0)\r\n }\r\n ans=new Array(p);\r\n for(i=0;i<p;i++)\r\n ans[i]=s[i];\r\n return ans;\r\n}\r\n\r\n\r\n//does a single round of Miller-Rabin base b consider x to be a possible prime?\r\n//x is a bigInt, and b is an integer, with b<x\r\nfunction millerRabinInt(x,b) {\r\n if (mr_x1.length!=x.length) {\r\n mr_x1=dup(x);\r\n mr_r=dup(x);\r\n mr_a=dup(x);\r\n }\r\n\r\n copyInt_(mr_a,b);\r\n return millerRabin(x,mr_a);\r\n}\r\n\r\n//does a single round of Miller-Rabin base b consider x to be a possible prime?\r\n//x and b are bigInts with b<x\r\nfunction millerRabin(x,b) {\r\n var i,j,k,s;\r\n\r\n if (mr_x1.length!=x.length) {\r\n mr_x1=dup(x);\r\n mr_r=dup(x);\r\n mr_a=dup(x);\r\n }\r\n\r\n copy_(mr_a,b);\r\n copy_(mr_r,x);\r\n copy_(mr_x1,x);\r\n\r\n addInt_(mr_r,-1);\r\n addInt_(mr_x1,-1);\r\n\r\n //s=the highest power of two that divides mr_r\r\n k=0;\r\n for (i=0;i<mr_r.length;i++)\r\n for (j=1;j<mask;j<<=1)\r\n if (x[i] & j) {\r\n s=(k<mr_r.length+bpe ? k : 0);\r\n i=mr_r.length;\r\n j=mask;\r\n } else\r\n k++;\r\n\r\n if (s)\r\n rightShift_(mr_r,s);\r\n\r\n powMod_(mr_a,mr_r,x);\r\n\r\n if (!equalsInt(mr_a,1) && !equals(mr_a,mr_x1)) {\r\n j=1;\r\n while (j<=s-1 && !equals(mr_a,mr_x1)) {\r\n squareMod_(mr_a,x);\r\n if (equalsInt(mr_a,1)) {\r\n return 0;\r\n }\r\n j++;\r\n }\r\n if (!equals(mr_a,mr_x1)) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n}\r\n\r\n//returns how many bits long the bigInt is, not counting leading zeros.\r\nfunction bitSize(x) {\r\n var j,z,w;\r\n for (j=x.length-1; (x[j]==0) && (j>0); j--);\r\n for (z=0,w=x[j]; w; (w>>=1),z++);\r\n z+=bpe*j;\r\n return z;\r\n}\r\n\r\n//return a copy of x with at least n elements, adding leading zeros if needed\r\nfunction expand(x,n) {\r\n var ans=int2bigInt(0,(x.length>n ? x.length : n)*bpe,0);\r\n copy_(ans,x);\r\n return ans;\r\n}\r\n\r\n//return a k-bit true random prime using Maurer's algorithm.\r\nfunction randTruePrime(k) {\r\n var ans=int2bigInt(0,k,0);\r\n randTruePrime_(ans,k);\r\n return trim(ans,1);\r\n}\r\n\r\n//return a k-bit random probable prime with probability of error < 2^-80\r\nfunction randProbPrime(k) {\r\n if (k>=600) return randProbPrimeRounds(k,2); //numbers from HAC table 4.3\r\n if (k>=550) return randProbPrimeRounds(k,4);\r\n if (k>=500) return randProbPrimeRounds(k,5);\r\n if (k>=400) return randProbPrimeRounds(k,6);\r\n if (k>=350) return randProbPrimeRounds(k,7);\r\n if (k>=300) return randProbPrimeRounds(k,9);\r\n if (k>=250) return randProbPrimeRounds(k,12); //numbers from HAC table 4.4\r\n if (k>=200) return randProbPrimeRounds(k,15);\r\n if (k>=150) return randProbPrimeRounds(k,18);\r\n if (k>=100) return randProbPrimeRounds(k,27);\r\n return randProbPrimeRounds(k,40); //number from HAC remark 4.26 (only an estimate)\r\n}\r\n\r\n//return a k-bit probable random prime using n rounds of Miller Rabin (after trial division with small primes)\r\nfunction randProbPrimeRounds(k,n) {\r\n var ans, i, divisible, B;\r\n B=30000; //B is largest prime to use in trial division\r\n ans=int2bigInt(0,k,0);\r\n\r\n //optimization: try larger and smaller B to find the best limit.\r\n\r\n if (primes.length==0)\r\n primes=findPrimes(30000); //check for divisibility by primes <=30000\r\n\r\n if (rpprb.length!=ans.length)\r\n rpprb=dup(ans);\r\n\r\n for (;;) { //keep trying random values for ans until one appears to be prime\r\n //optimization: pick a random number times L=2*3*5*...*p, plus a\r\n // random element of the list of all numbers in [0,L) not divisible by any prime up to p.\r\n // This can reduce the amount of random number generation.\r\n\r\n randBigInt_(ans,k,0); //ans = a random odd number to check\r\n ans[0] |= 1;\r\n divisible=0;\r\n\r\n //check ans for divisibility by small primes up to B\r\n for (i=0; (i<primes.length) && (primes[i]<=B); i++)\r\n if (modInt(ans,primes[i])==0 && !equalsInt(ans,primes[i])) {\r\n divisible=1;\r\n break;\r\n }\r\n\r\n //optimization: change millerRabin so the base can be bigger than the number being checked, then eliminate the while here.\r\n\r\n //do n rounds of Miller Rabin, with random bases less than ans\r\n for (i=0; i<n && !divisible; i++) {\r\n randBigInt_(rpprb,k,0);\r\n while(!greater(ans,rpprb)) //pick a random rpprb that's < ans\r\n randBigInt_(rpprb,k,0);\r\n if (!millerRabin(ans,rpprb))\r\n divisible=1;\r\n }\r\n\r\n if(!divisible)\r\n return ans;\r\n }\r\n}\r\n\r\n//return a new bigInt equal to (x mod n) for bigInts x and n.\r\nfunction mod(x,n) {\r\n var ans=dup(x);\r\n mod_(ans,n);\r\n return trim(ans,1);\r\n}\r\n\r\n//return (x+n) where x is a bigInt and n is an integer.\r\nfunction addInt(x,n) {\r\n var ans=expand(x,x.length+1);\r\n addInt_(ans,n);\r\n return trim(ans,1);\r\n}\r\n\r\n//return x*y for bigInts x and y. This is faster when y<x.\r\nfunction mult(x,y) {\r\n var ans=expand(x,x.length+y.length);\r\n mult_(ans,y);\r\n return trim(ans,1);\r\n}\r\n\r\n//return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n.\r\nexport function powMod(x,y,n) {\r\n var ans=expand(x,n.length);\r\n powMod_(ans,trim(y,2),trim(n,2),0); //this should work without the trim, but doesn't\r\n return trim(ans,1);\r\n}\r\n\r\n//return (x-y) for bigInts x and y. Negative answers will be 2s complement\r\nfunction sub(x,y) {\r\n var ans=expand(x,(x.length>y.length ? x.length+1 : y.length+1));\r\n sub_(ans,y);\r\n return trim(ans,1);\r\n}\r\n\r\n//return (x+y) for bigInts x and y.\r\nfunction add(x,y) {\r\n var ans=expand(x,(x.length>y.length ? x.length+1 : y.length+1));\r\n add_(ans,y);\r\n return trim(ans,1);\r\n}\r\n\r\n//return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null\r\nfunction inverseMod(x,n) {\r\n var ans=expand(x,n.length);\r\n var s;\r\n s=inverseMod_(ans,n);\r\n return s ? trim(ans,1) : null;\r\n}\r\n\r\n//return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x.\r\nfunction multMod(x,y,n) {\r\n var ans=expand(x,n.length);\r\n multMod_(ans,y,n);\r\n return trim(ans,1);\r\n}\r\n\r\n//generate a k-bit true random prime using Maurer's algorithm,\r\n//and put it into ans. The bigInt ans must be large enough to hold it.\r\nfunction randTruePrime_(ans,k) {\r\n var c,m,pm,dd,j,r,B,divisible,z,zz,recSize;\r\n\r\n if (primes.length==0)\r\n primes=findPrimes(30000); //check for divisibility by primes <=30000\r\n\r\n if (pows.length==0) {\r\n pows=new Array(512);\r\n for (j=0;j<512;j++) {\r\n pows[j]=Math.pow(2,j/511.-1.);\r\n }\r\n }\r\n\r\n //c and m should be tuned for a particular machine and value of k, to maximize speed\r\n c=0.1; //c=0.1 in HAC\r\n m=20; //generate this k-bit number by first recursively generating a number that has between k/2 and k-m bits\r\n recLimit=20; //stop recursion when k <=recLimit. Must have recLimit >= 2\r\n\r\n if (s_i2.length!=ans.length) {\r\n s_i2=dup(ans);\r\n s_R =dup(ans);\r\n s_n1=dup(ans);\r\n s_r2=dup(ans);\r\n s_d =dup(ans);\r\n s_x1=dup(ans);\r\n s_x2=dup(ans);\r\n s_b =dup(ans);\r\n s_n =dup(ans);\r\n s_i =dup(ans);\r\n s_rm=dup(ans);\r\n s_q =dup(ans);\r\n s_a =dup(ans);\r\n s_aa=dup(ans);\r\n }\r\n\r\n if (k <= recLimit) { //generate small random primes by trial division up to its square root\r\n pm=(1<<((k+2)>>1))-1; //pm is binary number with all ones, just over sqrt(2^k)\r\n copyInt_(ans,0);\r\n for (dd=1;dd;) {\r\n dd=0;\r\n ans[0]= 1 | (1<<(k-1)) | Math.floor(Math.random()*(1<<k)); //random, k-bit, odd integer, with msb 1\r\n for (j=1;(j<primes.length) && ((primes[j]&pm)==primes[j]);j++) { //trial division by all primes 3...sqrt(2^k)\r\n if (0==(ans[0]%primes[j])) {\r\n dd=1;\r\n break;\r\n }\r\n }\r\n }\r\n carry_(ans);\r\n return;\r\n }\r\n\r\n B=c*k*k; //try small primes up to B (or all the primes[] array if the largest is less than B).\r\n if (k>2*m) //generate this k-bit number by first recursively generating a number that has between k/2 and k-m bits\r\n for (r=1; k-k*r<=m; )\r\n r=pows[Math.floor(Math.random()*512)]; //r=Math.pow(2,Math.random()-1);\r\n else\r\n r=.5;\r\n\r\n //simulation suggests the more complex algorithm using r=.333 is only slightly faster.\r\n\r\n recSize=Math.floor(r*k)+1;\r\n\r\n randTruePrime_(s_q,recSize);\r\n copyInt_(s_i2,0);\r\n s_i2[Math.floor((k-2)/bpe)] |= (1<<((k-2)%bpe)); //s_i2=2^(k-2)\r\n divide_(s_i2,s_q,s_i,s_rm); //s_i=floor((2^(k-1))/(2q))\r\n\r\n z=bitSize(s_i);\r\n\r\n for (;;) {\r\n for (;;) { //generate z-bit numbers until one falls in the range [0,s_i-1]\r\n randBigInt_(s_R,z,0);\r\n if (greater(s_i,s_R))\r\n break;\r\n } //now s_R is in the range [0,s_i-1]\r\n addInt_(s_R,1); //now s_R is in the range [1,s_i]\r\n add_(s_R,s_i); //now s_R is in the range [s_i+1,2*s_i]\r\n\r\n copy_(s_n,s_q);\r\n mult_(s_n,s_R);\r\n multInt_(s_n,2);\r\n addInt_(s_n,1); //s_n=2*s_R*s_q+1\r\n\r\n copy_(s_r2,s_R);\r\n multInt_(s_r2,2); //s_r2=2*s_R\r\n\r\n //check s_n for divisibility by small primes up to B\r\n for (divisible=0,j=0; (j<primes.length) && (primes[j]<B); j++)\r\n if (modInt(s_n,primes[j])==0 && !equalsInt(s_n,primes[j])) {\r\n divisible=1;\r\n break;\r\n }\r\n\r\n if (!divisible) //if it passes small primes check, then try a single Miller-Rabin base 2\r\n if (!millerRabinInt(s_n,2)) //this line represents 75% of the total runtime for randTruePrime_\r\n divisible=1;\r\n\r\n if (!divisible) { //if it passes that test, continue checking s_n\r\n addInt_(s_n,-3);\r\n for (j=s_n.length-1;(s_n[j]==0) && (j>0); j--); //strip leading zeros\r\n for (zz=0,w=s_n[j]; w; (w>>=1),zz++);\r\n zz+=bpe*j; //zz=number of bits in s_n, ignoring leading zeros\r\n for (;;) { //generate z-bit numbers until one falls in the range [0,s_n-1]\r\n randBigInt_(s_a,zz,0);\r\n if (greater(s_n,s_a))\r\n break;\r\n } //now s_a is in the range [0,s_n-1]\r\n addInt_(s_n,3); //now s_a is in the range [0,s_n-4]\r\n addInt_(s_a,2); //now s_a is in the range [2,s_n-2]\r\n copy_(s_b,s_a);\r\n copy_(s_n1,s_n);\r\n addInt_(s_n1,-1);\r\n powMod_(s_b,s_n1,s_n); //s_b=s_a^(s_n-1) modulo s_n\r\n addInt_(s_b,-1);\r\n if (isZero(s_b)) {\r\n copy_(s_b,s_a);\r\n powMod_(s_b,s_r2,s_n);\r\n addInt_(s_b,-1);\r\n copy_(s_aa,s_n);\r\n copy_(s_d,s_b);\r\n GCD_(s_d,s_n); //if s_b and s_n are relatively prime, then s_n is a prime\r\n if (equalsInt(s_d,1)) {\r\n copy_(ans,s_aa);\r\n return; //if we've made it this far, then s_n is absolutely guaranteed to be prime\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n//Return an n-bit random BigInt (n>=1). If s=1, then the most significant of those n bits is set to 1.\r\nfunction randBigInt(n,s) {\r\n var a,b;\r\n a=Math.floor((n-1)/bpe)+2; //# array elements to hold the BigInt with a leading 0 element\r\n b=int2bigInt(0,0,a);\r\n randBigInt_(b,n,s);\r\n return b;\r\n}\r\n\r\n//Set b to an n-bit random BigInt. If s=1, then the most significant of those n bits is set to 1.\r\n//Array b must be big enough to hold the result. Must have n>=1\r\nfunction randBigInt_(b,n,s) {\r\n var i,a;\r\n for (i=0;i<b.length;i++)\r\n b[i]=0;\r\n a=Math.floor((n-1)/bpe)+1; //# array elements to hold the BigInt\r\n for (i=0;i<a;i++) {\r\n b[i]=Math.floor(Math.random()*(1<<(bpe-1)));\r\n }\r\n b[a-1] &= (2<<((n-1)%bpe))-1;\r\n if (s==1)\r\n b[a-1] |= (1<<((n-1)%bpe));\r\n}\r\n\r\n//Return the greatest common divisor of bigInts x and y (each with same number of elements).\r\nfunction GCD(x,y) {\r\n var xc,yc;\r\n xc=dup(x);\r\n yc=dup(y);\r\n GCD_(xc,yc);\r\n return xc;\r\n}\r\n\r\n//set x to the greatest common divisor of bigInts x and y (each with same number of elements).\r\n//y is destroyed.\r\nfunction GCD_(x,y) {\r\n var i,xp,yp,A,B,C,D,q,sing;\r\n if (T.length!=x.length)\r\n T=dup(x);\r\n\r\n sing=1;\r\n while (sing) { //while y has nonzero elements other than y[0]\r\n sing=0;\r\n for (i=1;i<y.length;i++) //check if y has nonzero elements other than 0\r\n if (y[i]) {\r\n sing=1;\r\n break;\r\n }\r\n if (!sing) break; //quit when y all zero elements except possibly y[0]\r\n\r\n for (i=x.length;!x[i] && i>=0;i--); //find most significant element of x\r\n xp=x[i];\r\n yp=y[i];\r\n A=1; B=0; C=0; D=1;\r\n while ((yp+C) && (yp+D)) {\r\n q =Math.floor((xp+A)/(yp+C));\r\n qp=Math.floor((xp+B)/(yp+D));\r\n if (q!=qp)\r\n break;\r\n t= A-q*C; A=C; C=t; // do (A,B,xp, C,D,yp) = (C,D,yp, A,B,xp) - q*(0,0,0, C,D,yp)\r\n t= B-q*D; B=D; D=t;\r\n t=xp-q*yp; xp=yp; yp=t;\r\n }\r\n if (B) {\r\n copy_(T,x);\r\n linComb_(x,y,A,B); //x=A*x+B*y\r\n linComb_(y,T,D,C); //y=D*y+C*T\r\n } else {\r\n mod_(x,y);\r\n copy_(T,x);\r\n copy_(x,y);\r\n copy_(y,T);\r\n }\r\n }\r\n if (y[0]==0)\r\n return;\r\n t=modInt(x,y[0]);\r\n copyInt_(x,y[0]);\r\n y[0]=t;\r\n while (y[0]) {\r\n x[0]%=y[0];\r\n t=x[0]; x[0]=y[0]; y[0]=t;\r\n }\r\n}\r\n\r\n//do x=x**(-1) mod n, for bigInts x and n.\r\n//If no inverse exists, it sets x to zero and returns 0, else it returns 1.\r\n//The x array must be at least as large as the n array.\r\nfunction inverseMod_(x,n) {\r\n var k=1+2*Math.max(x.length,n.length);\r\n\r\n if(!(x[0]&1) && !(n[0]&1)) { //if both inputs are even, then inverse doesn't exist\r\n copyInt_(x,0);\r\n return 0;\r\n }\r\n\r\n if (eg_u.length!=k) {\r\n eg_u=new Array(k);\r\n eg_v=new Array(k);\r\n eg_A=new Array(k);\r\n eg_B=new Array(k);\r\n eg_C=new Array(k);\r\n eg_D=new Array(k);\r\n }\r\n\r\n copy_(eg_u,x);\r\n copy_(eg_v,n);\r\n copyInt_(eg_A,1);\r\n copyInt_(eg_B,0);\r\n copyInt_(eg_C,0);\r\n copyInt_(eg_D,1);\r\n for (;;) {\r\n while(!(eg_u[0]&1)) { //while eg_u is even\r\n halve_(eg_u);\r\n if (!(eg_A[0]&1) && !(eg_B[0]&1)) { //if eg_A==eg_B==0 mod 2\r\n halve_(eg_A);\r\n halve_(eg_B);\r\n } else {\r\n add_(eg_A,n); halve_(eg_A);\r\n sub_(eg_B,x); halve_(eg_B);\r\n }\r\n }\r\n\r\n while (!(eg_v[0]&1)) { //while eg_v is even\r\n halve_(eg_v);\r\n if (!(eg_C[0]&1) && !(eg_D[0]&1)) { //if eg_C==eg_D==0 mod 2\r\n halve_(eg_C);\r\n halve_(eg_D);\r\n } else {\r\n add_(eg_C,n); halve_(eg_C);\r\n sub_(eg_D,x); halve_(eg_D);\r\n }\r\n }\r\n\r\n if (!greater(eg_v,eg_u)) { //eg_v <= eg_u\r\n sub_(eg_u,eg_v);\r\n sub_(eg_A,eg_C);\r\n sub_(eg_B,eg_D);\r\n } else { //eg_v > eg_u\r\n sub_(eg_v,eg_u);\r\n sub_(eg_C,eg_A);\r\n sub_(eg_D,eg_B);\r\n }\r\n\r\n if (equalsInt(eg_u,0)) {\r\n while (negative(eg_C)) //make sure answer is nonnegative\r\n add_(eg_C,n);\r\n copy_(x,eg_C);\r\n\r\n if (!equalsInt(eg_v,1)) { //if GCD_(x,n)!=1, then there is no inverse\r\n copyInt_(x,0);\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n }\r\n}\r\n\r\n//return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse\r\nfunction inverseModInt(x,n) {\r\n var a=1,b=0,t;\r\n for (;;) {\r\n if (x==1) return a;\r\n if (x==0) return 0;\r\n b-=a*Math.floor(n/x);\r\n n%=x;\r\n\r\n if (n==1) return b; //to avoid negatives, change this b to n-b, and each -= to +=\r\n if (n==0) return 0;\r\n a-=b*Math.floor(x/n);\r\n x%=n;\r\n }\r\n}\r\n\r\n//this deprecated function is for backward compatibility only.\r\nfunction inverseModInt_(x,n) {\r\n return inverseModInt(x,n);\r\n}\r\n\r\n\r\n//Given positive bigInts x and y, change the bigints v, a, and b to positive bigInts such that:\r\n// v = GCD_(x,y) = a*x-b*y\r\n//The bigInts v, a, b, must have exactly as many elements as the larger of x and y.\r\nexport function eGCD_(x,y,v,a,b) {\r\n var g=0;\r\n var k=Math.max(x.length,y.length);\r\n if (eg_u.length!=k) {\r\n eg_u=new Array(k);\r\n eg_A=new Array(k);\r\n eg_B=new Array(k);\r\n eg_C=new Array(k);\r\n eg_D=new Array(k);\r\n }\r\n while(!(x[0]&1) && !(y[0]&1)) { //while x and y both even\r\n halve_(x);\r\n halve_(y);\r\n g++;\r\n }\r\n copy_(eg_u,x);\r\n copy_(v,y);\r\n copyInt_(eg_A,1);\r\n copyInt_(eg_B,0);\r\n copyInt_(eg_C,0);\r\n copyInt_(eg_D,1);\r\n for (;;) {\r\n while(!(eg_u[0]&1)) { //while u is even\r\n halve_(eg_u);\r\n if (!(eg_A[0]&1) && !(eg_B[0]&1)) { //if A==B==0 mod 2\r\n halve_(eg_A);\r\n halve_(eg_B);\r\n } else {\r\n add_(eg_A,y); halve_(eg_A);\r\n sub_(eg_B,x); halve_(eg_B);\r\n }\r\n }\r\n\r\n while (!(v[0]&1)) { //while v is even\r\n halve_(v);\r\n if (!(eg_C[0]&1) && !(eg_D[0]&1)) { //if C==D==0 mod 2\r\n halve_(eg_C);\r\n halve_(eg_D);\r\n } else {\r\n add_(eg_C,y); halve_(eg_C);\r\n sub_(eg_D,x); halve_(eg_D);\r\n }\r\n }\r\n\r\n if (!greater(v,eg_u)) { //v<=u\r\n sub_(eg_u,v);\r\n sub_(eg_A,eg_C);\r\n sub_(eg_B,eg_D);\r\n } else { //v>u\r\n sub_(v,eg_u);\r\n sub_(eg_C,eg_A);\r\n sub_(eg_D,eg_B);\r\n }\r\n if (equalsInt(eg_u,0)) {\r\n while (negative(eg_C)) { //make sure a (C) is nonnegative\r\n add_(eg_C,y);\r\n sub_(eg_D,x);\r\n }\r\n multInt_(eg_D,-1); ///make sure b (D) is nonnegative\r\n copy_(a,eg_C);\r\n copy_(b,eg_D);\r\n leftShift_(v,g);\r\n return;\r\n }\r\n }\r\n}\r\n\r\n\r\n//is bigInt x negative?\r\nfunction negative(x) {\r\n return ((x[x.length-1]>>(bpe-1))&1);\r\n}\r\n\r\n\r\n//is (x << (shift*bpe)) > y?\r\n//x and y are nonnegative bigInts\r\n//shift is a nonnegative integer\r\nfunction greaterShift(x,y,shift) {\r\n var i, kx=x.length, ky=y.length;\r\n k=((kx+shift)<ky) ? (kx+shift) : ky;\r\n for (i=ky-1-shift; i<kx && i>=0; i++)\r\n if (x[i]>0)\r\n return 1; //if there are nonzeros in x to the left of the first column of y, then x is bigger\r\n for (i=kx-1+shift; i<ky; i++)\r\n if (y[i]>0)\r\n return 0; //if there are nonzeros in y to the left of the first column of x, then x is not bigger\r\n for (i=k-1; i>=shift; i--)\r\n if (x[i-shift]>y[i]) return 1;\r\n else if (x[i-shift]<y[i]) return 0;\r\n return 0;\r\n}\r\n\r\n//is x > y? (x and y both nonnegative)\r\nexport function greater(x,y) {\r\n var i;\r\n var k=(x.length<y.length) ? x.length : y.length;\r\n\r\n for (i=x.length;i<y.length;i++)\r\n if (y[i])\r\n return 0; //y has more digits\r\n\r\n for (i=y.length;i<x.length;i++)\r\n if (x[i])\r\n return 1; //x has more digits\r\n\r\n for (i=k-1;i>=0;i--)\r\n if (x[i]>y[i])\r\n return 1;\r\n else if (x[i]<y[i])\r\n return 0;\r\n return 0;\r\n}\r\n\r\n//divide x by y giving quotient q and remainder r. (q=floor(x/y), r=x mod y). All 4 are bigints.\r\n//x must have at least one leading zero element.\r\n//y must be nonzero.\r\n//q and r must be arrays that are exactly the same length as x. (Or q can have more).\r\n//Must have x.length >= y.length >= 2.\r\nexport function divide_(x,y,q,r) {\r\n var kx, ky;\r\n var i,j,y1,y2,c,a,b;\r\n copy_(r,x);\r\n for (ky=y.length;y[ky-1]==0;ky--); //ky is number of elements in y, not including leading zeros\r\n\r\n //normalize: ensure the most significant element of y has its highest bit set\r\n b=y[ky-1];\r\n for (a=0; b; a++)\r\n b>>=1;\r\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\r\n leftShift_(y,a); //multiply both by 1<<a now, then divide both by that at the end\r\n leftShift_(r,a);\r\n\r\n //Rob Visser discovered a bug: the following line was originally just before the normalization.\r\n for (kx=r.length;r[kx-1]==0 && kx>ky;kx--); //kx is number of elements in normalized x, not including leading zeros\r\n\r\n copyInt_(q,0); // q=0\r\n while (!greaterShift(y,r,kx-ky)) { // while (leftShift_(y,kx-ky) <= r) {\r\n subShift_(r,y,kx-ky); // r=r-leftShift_(y,kx-ky)\r\n q[kx-ky]++; // q[kx-ky]++;\r\n } // }\r\n\r\n for (i=kx-1; i>=ky; i--) {\r\n if (r[i]==y[ky-1])\r\n q[i-ky]=mask;\r\n else\r\n q[i-ky]=Math.floor((r[i]*radix+r[i-1])/y[ky-1]);\r\n\r\n //The following for(;;) loop is equivalent to the commented while loop,\r\n //except that the uncommented version avoids overflow.\r\n //The commented loop comes from HAC, which assumes r[-1]==y[-1]==0\r\n // while (q[i-ky]*(y[ky-1]*radix+y[ky-2]) > r[i]*radix*radix+r[i-1]*radix+r[i-2])\r\n // q[i-ky]--;\r\n for (;;) {\r\n y2=(ky>1 ? y[ky-2] : 0)*q[i-ky];\r\n c=y2>>bpe;\r\n y2=y2 & mask;\r\n y1=c+q[i-ky]*y[ky-1];\r\n c=y1>>bpe;\r\n y1=y1 & mask;\r\n\r\n if (c==r[i] ? y1==r[i-1] ? y2>(i>1 ? r[i-2] : 0) : y1>r[i-1] : c>r[i])\r\n q[i-ky]--;\r\n else\r\n break;\r\n }\r\n\r\n linCombShift_(r,y,-q[i-ky],i-ky); //r=r-q[i-ky]*leftShift_(y,i-ky)\r\n if (negative(r)) {\r\n addShift_(r,y,i-ky); //r=r+leftShift_(y,i-ky)\r\n q[i-ky]--;\r\n }\r\n }\r\n\r\n rightShift_(y,a); //undo the normalization step\r\n rightShift_(r,a); //undo the normalization step\r\n}\r\n\r\n//do carries and borrows so each element of the bigInt x fits in bpe bits.\r\nfunction carry_(x) {\r\n var i,k,c,b;\r\n k=x.length;\r\n c=0;\r\n for (i=0;i<k;i++) {\r\n c+=x[i];\r\n b=0;\r\n if (c<0) {\r\n b=-(c>>bpe);\r\n c+=b*radix;\r\n }\r\n x[i]=c & mask;\r\n c=(c>>bpe)-b;\r\n }\r\n}\r\n\r\n//return x mod n for bigInt x and integer n.\r\nfunction modInt(x,n) {\r\n var i,c=0;\r\n for (i=x.length-1; i>=0; i--)\r\n c=(c*radix+x[i])%n;\r\n return c;\r\n}\r\n\r\n//convert the integer t into a bigInt with at least the given number of bits.\r\n//the returned array stores the bigInt in bpe-bit chunks, little endian (buff[0] is least significant word)\r\n//Pad the array with leading zeros so that it has at least minSize elements.\r\n//There will always be at least one leading 0 element.\r\nfunction int2bigInt(t,bits,minSize) {\r\n var i,k;\r\n k=Math.ceil(bits/bpe)+1;\r\n k=minSize>k ? minSize : k;\r\n var buff=new Array(k);\r\n copyInt_(buff,t);\r\n return buff;\r\n}\r\n\r\n//return the bigInt given a string representation in a given base.\r\n//Pad the array with leading zeros so that it has at least minSize elements.\r\n//If base=-1, then it reads in a space-separated list of array elements in decimal.\r\n//The array will always have at least one leading zero, unless base=-1.\r\nexport function str2bigInt(s,base,minSize) {\r\n var d, i, j, x, y, kk;\r\n var k=s.length;\r\n if (base==-1) { //comma-separated list of array elements in decimal\r\n x=new Array(0);\r\n for (;;) {\r\n y=new Array(x.length+1);\r\n for (i=0;i<x.length;i++)\r\n y[i+1]=x[i];\r\n y[0]=parseInt(s,10);\r\n x=y;\r\n d=s.indexOf(',',0);\r\n if (d<1)\r\n break;\r\n s=s.substring(d+1);\r\n if (s.length==0)\r\n break;\r\n }\r\n if (x.length<minSize) {\r\n y=new Array(minSize);\r\n copy_(y,x);\r\n return y;\r\n }\r\n return x;\r\n }\r\n\r\n x=int2bigInt(0,base*k,0);\r\n for (i=0;i<k;i++) {\r\n d=digitsStr.indexOf(s.substring(i,i+1),0);\r\n if (base<=36 && d>=36) //convert lowercase to uppercase if base<=36\r\n d-=26;\r\n if (d>=base || d<0) { //stop at first illegal character\r\n break;\r\n }\r\n multInt_(x,base);\r\n addInt_(x,d);\r\n }\r\n\r\n for (k=x.length;k>0 && !x[k-1];k--); //strip off leading zeros\r\n k=minSize>k+1 ? minSize : k+1;\r\n y=new Array(k);\r\n kk=k<x.length ? k : x.length;\r\n for (i=0;i<kk;i++)\r\n y[i]=x[i];\r\n for (;i<k;i++)\r\n y[i]=0;\r\n return y;\r\n}\r\n\r\n//is bigint x equal to integer y?\r\n//y must have less than bpe bits\r\nexport function equalsInt(x,y) {\r\n var i;\r\n if (x[0]!=y)\r\n return 0;\r\n for (i=1;i<x.length;i++)\r\n if (x[i])\r\n return 0;\r\n return 1;\r\n}\r\n\r\n//are bigints x and y equal?\r\n//this works even if x and y are different lengths and have arbitrarily many leading zeros\r\nfunction equals(x,y) {\r\n var i;\r\n var k=x.length<y.length ? x.length : y.length;\r\n for (i=0;i<k;i++)\r\n if (x[i]!=y[i])\r\n return 0;\r\n if (x.length>y.length) {\r\n for (;i<x.length;i++)\r\n if (x[i])\r\n return 0;\r\n } else {\r\n for (;i<y.length;i++)\r\n if (y[i])\r\n return 0;\r\n }\r\n return 1;\r\n}\r\n\r\n//is the bigInt x equal to zero?\r\nexport function isZero(x) {\r\n var i;\r\n for (i=0;i<x.length;i++)\r\n if (x[i])\r\n return 0;\r\n return 1;\r\n}\r\n\r\n//convert a bigInt into a string in a given base, from base 2 up to base 95.\r\n//Base -1 prints the contents of the array representing the number.\r\nexport function bigInt2str(x,base) {\r\n var i,t,s=\"\";\r\n\r\n if (s6.length!=x.length)\r\n s6=dup(x);\r\n else\r\n copy_(s6,x);\r\n\r\n if (base==-1) { //return the list of array contents\r\n for (i=x.length-1;i>0;i--)\r\n s+=x[i]+',';\r\n s+=x[0];\r\n }\r\n else { //return it in the given base\r\n while (!isZero(s6)) {\r\n t=divInt_(s6,base); //t=s6 % base; s6=floor(s6/base);\r\n s=digitsStr.substring(t,t+1)+s;\r\n }\r\n }\r\n if (s.length==0)\r\n s=\"0\";\r\n return s;\r\n}\r\n\r\n//returns a duplicate of bigInt x\r\nfunction dup(x) {\r\n var i;\r\n buff=new Array(x.length);\r\n copy_(buff,x);\r\n return buff;\r\n}\r\n\r\n//do x=y on bigInts x and y. x must be an array at least as big as y (not counting the leading zeros in y).\r\nexport function copy_(x,y) {\r\n var i;\r\n var k=x.length<y.length ? x.length : y.length;\r\n for (i=0;i<k;i++)\r\n x[i]=y[i];\r\n for (i=k;i<x.length;i++)\r\n x[i]=0;\r\n}\r\n\r\n//do x=y on bigInt x and integer y.\r\nexport function copyInt_(x,n) {\r\n var i,c;\r\n for (c=n,i=0;i<x.length;i++) {\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x+n where x is a bigInt and n is an integer.\r\n//x must be large enough to hold the result.\r\nfunction addInt_(x,n) {\r\n var i,k,c,b;\r\n x[0]+=n;\r\n k=x.length;\r\n c=0;\r\n for (i=0;i<k;i++) {\r\n c+=x[i];\r\n b=0;\r\n if (c<0) {\r\n b=-(c>>bpe);\r\n c+=b*radix;\r\n }\r\n x[i]=c & mask;\r\n c=(c>>bpe)-b;\r\n if (!c) return; //stop carrying as soon as the carry is zero\r\n }\r\n}\r\n\r\n//right shift bigInt x by n bits. 0 <= n < bpe.\r\nexport function rightShift_(x,n) {\r\n var i;\r\n var k=Math.floor(n/bpe);\r\n if (k) {\r\n for (i=0;i<x.length-k;i++) //right shift x by k elements\r\n x[i]=x[i+k];\r\n for (;i<x.length;i++)\r\n x[i]=0;\r\n n%=bpe;\r\n }\r\n for (i=0;i<x.length-1;i++) {\r\n x[i]=mask & ((x[i+1]<<(bpe-n)) | (x[i]>>n));\r\n }\r\n x[i]>>=n;\r\n}\r\n\r\n//do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement\r\nfunction halve_(x) {\r\n var i;\r\n for (i=0;i<x.length-1;i++) {\r\n x[i]=mask & ((x[i+1]<<(bpe-1)) | (x[i]>>1));\r\n }\r\n x[i]=(x[i]>>1) | (x[i] & (radix>>1)); //most significant bit stays the same\r\n}\r\n\r\n//left shift bigInt x by n bits.\r\nfunction leftShift_(x,n) {\r\n var i;\r\n var k=Math.floor(n/bpe);\r\n if (k) {\r\n for (i=x.length; i>=k; i--) //left shift x by k elements\r\n x[i]=x[i-k];\r\n for (;i>=0;i--)\r\n x[i]=0;\r\n n%=bpe;\r\n }\r\n if (!n)\r\n return;\r\n for (i=x.length-1;i>0;i--) {\r\n x[i]=mask & ((x[i]<<n) | (x[i-1]>>(bpe-n)));\r\n }\r\n x[i]=mask & (x[i]<<n);\r\n}\r\n\r\n//do x=x*n where x is a bigInt and n is an integer.\r\n//x must be large enough to hold the result.\r\nfunction multInt_(x,n) {\r\n var i,k,c,b;\r\n if (!n)\r\n return;\r\n k=x.length;\r\n c=0;\r\n for (i=0;i<k;i++) {\r\n c+=x[i]*n;\r\n b=0;\r\n if (c<0) {\r\n b=-(c>>bpe);\r\n c+=b*radix;\r\n }\r\n x[i]=c & mask;\r\n c=(c>>bpe)-b;\r\n }\r\n}\r\n\r\n//do x=floor(x/n) for bigInt x and integer n, and return the remainder\r\nfunction divInt_(x,n) {\r\n var i,r=0,s;\r\n for (i=x.length-1;i>=0;i--) {\r\n s=r*radix+x[i];\r\n x[i]=Math.floor(s/n);\r\n r=s%n;\r\n }\r\n return r;\r\n}\r\n\r\n//do the linear combination x=a*x+b*y for bigInts x and y, and integers a and b.\r\n//x must be large enough to hold the answer.\r\nfunction linComb_(x,y,a,b) {\r\n var i,c,k,kk;\r\n k=x.length<y.length ? x.length : y.length;\r\n kk=x.length;\r\n for (c=0,i=0;i<k;i++) {\r\n c+=a*x[i]+b*y[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;i<kk;i++) {\r\n c+=a*x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do the linear combination x=a*x+b*(y<<(ys*bpe)) for bigInts x and y, and integers a, b and ys.\r\n//x must be large enough to hold the answer.\r\nfunction linCombShift_(x,y,b,ys) {\r\n var i,c,k,kk;\r\n k=x.length<ys+y.length ? x.length : ys+y.length;\r\n kk=x.length;\r\n for (c=0,i=ys;i<k;i++) {\r\n c+=x[i]+b*y[i-ys];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;c && i<kk;i++) {\r\n c+=x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x+(y<<(ys*bpe)) for bigInts x and y, and integers a,b and ys.\r\n//x must be large enough to hold the answer.\r\nfunction addShift_(x,y,ys) {\r\n var i,c,k,kk;\r\n k=x.length<ys+y.length ? x.length : ys+y.length;\r\n kk=x.length;\r\n for (c=0,i=ys;i<k;i++) {\r\n c+=x[i]+y[i-ys];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;c && i<kk;i++) {\r\n c+=x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x-(y<<(ys*bpe)) for bigInts x and y, and integers a,b and ys.\r\n//x must be large enough to hold the answer.\r\nfunction subShift_(x,y,ys) {\r\n var i,c,k,kk;\r\n k=x.length<ys+y.length ? x.length : ys+y.length;\r\n kk=x.length;\r\n for (c=0,i=ys;i<k;i++) {\r\n c+=x[i]-y[i-ys];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;c && i<kk;i++) {\r\n c+=x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x-y for bigInts x and y.\r\n//x must be large enough to hold the answer.\r\n//negative answers will be 2s complement\r\nexport function sub_(x,y) {\r\n var i,c,k,kk;\r\n k=x.length<y.length ? x.length : y.length;\r\n for (c=0,i=0;i<k;i++) {\r\n c+=x[i]-y[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;c && i<x.length;i++) {\r\n c+=x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x+y for bigInts x and y.\r\n//x must be large enough to hold the answer.\r\nexport function add_(x,y) {\r\n var i,c,k,kk;\r\n k=x.length<y.length ? x.length : y.length;\r\n for (c=0,i=0;i<k;i++) {\r\n c+=x[i]+y[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n for (i=k;c && i<x.length;i++) {\r\n c+=x[i];\r\n x[i]=c & mask;\r\n c>>=bpe;\r\n }\r\n}\r\n\r\n//do x=x*y for bigInts x and y. This is faster when y<x.\r\nfunction mult_(x,y) {\r\n var i;\r\n if (ss.length!=2*x.length)\r\n ss=new Array(2*x.length);\r\n copyInt_(ss,0);\r\n for (i=0;i<y.length;i++)\r\n if (y[i])\r\n linCombShift_(ss,x,y[i],i); //ss=1*ss+y[i]*(x<<(i*bpe))\r\n copy_(x,ss);\r\n}\r\n\r\n//do x=x mod n for bigInts x and n.\r\nfunction mod_(x,n) {\r\n if (s4.length!=x.length)\r\n s4=dup(x);\r\n else\r\n copy_(s4,x);\r\n if (s5.length!=x.length)\r\n s5=dup(x);\r\n divide_(s4,n,s5,x); //x = remainder of s4 / n\r\n}\r\n\r\n//do x=x*y mod n for bigInts x,y,n.\r\n//for greater speed, let y<x.\r\nfunction multMod_(x,y,n) {\r\n var i;\r\n if (s0.length!=2*x.length)\r\n s0=new Array(2*x.length);\r\n copyInt_(s0,0);\r\n for (i=0;i<y.length;i++)\r\n if (y[i])\r\n linCombShift_(s0,x,y[i],i); //s0=1*s0+y[i]*(x<<(i*bpe))\r\n mod_(s0,n);\r\n copy_(x,s0);\r\n}\r\n\r\n//do x=x*x mod n for bigInts x,n.\r\nfunction squareMod_(x,n) {\r\n var i,j,d,c,kx,kn,k;\r\n for (kx=x.length; kx>0 && !x[kx-1]; kx--); //ignore leading zeros in x\r\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\r\n if (s0.length!=k)\r\n s0=new Array(k);\r\n copyInt_(s0,0);\r\n for (i=0;i<kx;i++) {\r\n c=s0[2*i]+x[i]*x[i];\r\n s0[2*i]=c & mask;\r\n c>>=bpe;\r\n for (j=i+1;j<kx;j++) {\r\n c=s0[i+j]+2*x[i]*x[j]+c;\r\n s0[i+j]=(c & mask);\r\n c>>=bpe;\r\n }\r\n s0[i+kx]=c;\r\n }\r\n mod_(s0,n);\r\n copy_(x,s0);\r\n}\r\n\r\n//return x with exactly k leading zero elements\r\nfunction trim(x,k) {\r\n var i,y;\r\n for (i=x.length; i>0 && !x[i-1]; i--);\r\n y=new Array(i+k);\r\n copy_(y,x);\r\n return y;\r\n}\r\n\r\n//do x=x**y mod n, where x,y,n are bigInts and ** is exponentiation. 0**0=1.\r\n//this is faster when n is odd. x usually needs to have as many elements as n.\r\nfunction powMod_(x,y,n) {\r\n var k1,k2,kn,np;\r\n if(s7.length!=n.length)\r\n s7=dup(n);\r\n\r\n //for even modulus, use a simple square-and-multiply algorithm,\r\n //rather than using the more complex Montgomery algorithm.\r\n if ((n[0]&1)==0) {\r\n copy_(s7,x);\r\n copyInt_(x,1);\r\n while(!equalsInt(y,0)) {\r\n if (y[0]&1)\r\n multMod_(x,s7,n);\r\n divInt_(y,2);\r\n squareMod_(s7,n);\r\n }\r\n return;\r\n }\r\n\r\n //calculate np from n for the Montgomery multiplications\r\n copyInt_(s7,0);\r\n for (kn=n.length;kn>0 && !n[kn-1];kn--);\r\n np=radix-inverseModInt(modInt(n,radix),radix);\r\n s7[kn]=1;\r\n multMod_(x ,s7,n); // x = x * 2**(kn*bp) mod n\r\n\r\n if (s3.length!=x.length)\r\n s3=dup(x);\r\n else\r\n copy_(s3,x);\r\n\r\n for (k1=y.length-1;k1>0 & !y[k1]; k1--); //k1=first nonzero element of y\r\n if (y[k1]==0) { //anything to the 0th power is 1\r\n copyInt_(x,1);\r\n return;\r\n }\r\n for (k2=1<<(bpe-1);k2 && !(y[k1] & k2); k2>>=1); //k2=position of first 1 bit in y[k1]\r\n for (;;) {\r\n if (!(k2>>=1)) { //look at next bit of y\r\n k1--;\r\n if (k1<0) {\r\n mont_(x,one,n,np);\r\n return;\r\n }\r\n k2=1<<(bpe-1);\r\n }\r\n mont_(x,x,n,np);\r\n\r\n if (k2 & y[k1]) //if next bit is a 1\r\n mont_(x,s3,n,np);\r\n }\r\n}\r\n\r\n\r\n//do x=x*y*Ri mod n for bigInts x,y,n,\r\n// where Ri = 2**(-kn*bpe) mod n, and kn is the\r\n// number of elements in the n array, not\r\n// counting leading zeros.\r\n//x array must have at least as many elemnts as the n array\r\n//It's OK if x and y are the same variable.\r\n//must have:\r\n// x,y < n\r\n// n is odd\r\n// np = -(n^(-1)) mod radix\r\nfunction mont_(x,y,n,np) {\r\n var i,j,c,ui,t,ks;\r\n var kn=n.length;\r\n var ky=y.length;\r\n\r\n if (sa.length!=kn)\r\n sa=new Array(kn);\r\n\r\n copyInt_(sa,0);\r\n\r\n for (;kn>0 && n[kn-1]==0;kn--); //ignore leading zeros of n\r\n for (;ky>0 && y[ky-1]==0;ky--); //ignore leading zeros of y\r\n ks=sa.length-1; //sa will never have more than this many nonzero elements.\r\n\r\n //the following loop consumes 95% of the runtime for randTruePrime_() and powMod_() for large numbers\r\n for (i=0; i<kn; i++) {\r\n t=sa[0]+x[i]*y[0];\r\n ui=((t & mask) * np) & mask; //the inner \"& mask\" was needed on Safari (but not MSIE) at one time\r\n c=(t+ui*n[0]) >> bpe;\r\n t=x[i];\r\n\r\n //do sa=(sa+x[i]*y+ui*n)/b where b=2**bpe. Loop is unrolled 5-fold for speed\r\n j=1;\r\n for (;j<ky-4;) { c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++; }\r\n for (;j<ky;) { c+=sa[j]+ui*n[j]+t*y[j]; sa[j-1]=c & mask; c>>=bpe; j++; }\r\n for (;j<kn-4;) { c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++;\r\n c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++; }\r\n for (;j<kn;) { c+=sa[j]+ui*n[j]; sa[j-1]=c & mask; c>>=bpe; j++; }\r\n for (;j<ks;) { c+=sa[j]; sa[j-1]=c & mask; c>>=bpe; j++; }\r\n sa[j-1]=c & mask;\r\n }\r\n\r\n if (!greater(n,sa))\r\n sub_(sa,n);\r\n copy_(x,sa);\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./leemon.js","import Promise from 'bluebird'\r\n\r\nimport { propOr, isNil } from 'ramda'\r\n\r\nimport blueDefer from '../../defer'\r\nimport Switch from '../../switch'\r\nimport { tsNow } from '../time-manager'\r\n\r\nconst cachedExportPromise = {}\r\n\r\nconst protect = (\r\n { code = NaN, type = '' },\r\n { rawError = null },\r\n dcID,\r\n baseDcID\r\n ) => ({\r\n base: baseDcID,\r\n errR: rawError,\r\n code,\r\n type,\r\n dcID\r\n })\r\n\r\nconst patterns = {\r\n noBaseAuth: ({ code, dcID, base }) => code === 401 && dcID === base,\r\n noDcAuth : ({ code, dcID, base }) => code === 401 && dcID !== base,\r\n migrate : ({ code }) => code === 303,\r\n floodWait : ({ code, errR }) => !errR && code === 420,\r\n waitFail : ({ code, type, errR }) => !errR && (code === 500 || type === 'MSG_WAIT_FAILED'),\r\n _ : () => true\r\n}\r\n\r\n\r\nconst matchProtect =\r\n matched => (\r\n error,\r\n options,\r\n emit,\r\n rejectPromise,\r\n requestThunk,\r\n apiSavedNet,\r\n apiRecall,\r\n deferResolve,\r\n mtpInvokeApi,\r\n mtpGetNetworker,\r\n storage\r\n ) =>\r\n matched({\r\n invoke : mtpInvokeApi,\r\n throwNext: () => rejectPromise(error),\r\n reject : rejectPromise,\r\n getNet : mtpGetNetworker,\r\n error,\r\n options,\r\n emit,\r\n requestThunk,\r\n apiRecall,\r\n deferResolve,\r\n apiSavedNet,\r\n storage\r\n })\r\n\r\n\r\nconst noBaseAuth = ({ emit, throwNext, storage }) => {\r\n storage.remove('dc', 'user_auth')\r\n emit('error.401.base')\r\n throwNext()\r\n}\r\n\r\nconst noDcAuth = ({ dcID, reject, apiSavedNet, apiRecall, deferResolve, invoke }) => {\r\n const importAuth = ({ id, bytes }) => invoke(\r\n 'auth.importAuthorization',\r\n { id, bytes },\r\n { dcID, noErrorBox: true })\r\n\r\n\r\n if (isNil(cachedExportPromise[dcID])) {\r\n const exportDeferred = blueDefer()\r\n\r\n invoke(\r\n 'auth.exportAuthorization',\r\n { dc_id: dcID },\r\n { noErrorBox: true })\r\n\r\n .then(importAuth)\r\n .then(exportDeferred.resolve)\r\n .catch(exportDeferred.reject)\r\n\r\n cachedExportPromise[dcID] = exportDeferred.promise\r\n }\r\n\r\n\r\n\r\n cachedExportPromise[dcID]\r\n .then(apiSavedNet)\r\n .then(apiRecall)\r\n .then(deferResolve)\r\n .catch(reject)\r\n}\r\n\r\nconst migrate = ({ error, dcID, options, reject,\r\n apiRecall, deferResolve, getNet, storage\r\n }) => {\r\n const newDcID = error.type.match(/^(PHONE_MIGRATE_|NETWORK_MIGRATE_|USER_MIGRATE_)(\\d+)/)[2]\r\n if (newDcID === dcID) return\r\n if (options.dcID)\r\n options.dcID = newDcID\r\n else\r\n storage.set({ dc: /*baseDcID =*/ newDcID })\r\n\r\n getNet(newDcID, options)\r\n .then(apiRecall)\r\n .then(deferResolve)\r\n .catch(reject)\r\n}\r\n\r\nconst floodWait = ({ error, options, throwNext, requestThunk }) => {\r\n const waitTime = error.type.match(/^FLOOD_WAIT_(\\d+)/)[1] || 10\r\n if (waitTime > (options.timeout || 60))\r\n return throwNext()\r\n requestThunk(waitTime)\r\n}\r\n\r\nconst waitFail = ({ options, throwNext, requestThunk }) => {\r\n const now = tsNow()\r\n if (options.stopTime) {\r\n if (now >= options.stopTime)\r\n return throwNext()\r\n } else\r\n options.stopTime = now + propOr(10, 'timeout', options) * 1000\r\n options.waitTime = options.waitTime\r\n ? Math.min(60, options.waitTime * 1.5)\r\n : 1\r\n requestThunk(options.waitTime)\r\n}\r\n\r\nconst def = ({ throwNext }) => throwNext()\r\n\r\n\r\nexport const switchErrors = Switch(patterns, protect)({\r\n noBaseAuth,\r\n noDcAuth,\r\n migrate,\r\n floodWait,\r\n waitFail,\r\n _: def\r\n}, matchProtect)\n\n\n// WEBPACK FOOTER //\n// ./service/api-manager/error-cases.js","import Promise from 'bluebird'\r\nimport jsbn from 'jsbn'\r\nconst { BigInteger } = jsbn\r\n\r\nimport blueDefer from '../../defer'\r\nimport { smartTimeout } from '../../smart-timeout'\r\nimport CryptoWorker from '../../crypto'\r\n\r\nimport MtpSecureRandom from '../secure-random'\r\nimport { applyServerTime, dTime, tsNow } from '../time-manager'\r\n\r\nimport { bytesCmp, bytesToHex, sha1BytesSync, nextRandomInt,\r\n aesEncryptSync, rsaEncrypt, aesDecryptSync, bytesToArrayBuffer,\r\n bytesFromHex, bytesXor } from '../../bin'\r\n\r\n// import { ErrorBadResponse } from '../../error'\r\n\r\nimport SendPlainReq from './send-plain-req'\r\n\r\nconst primeHex = 'c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d93' +\r\n '0f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f6945' +\r\n '8705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4a' +\r\n 'c8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba7' +\r\n '4d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9c' +\r\n 'a3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851' +\r\n 'f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b'\r\n\r\nexport const Auth = ({ Serialization, Deserialization }, { select, prepare }) => {\r\n const sendPlainReq = SendPlainReq({ Serialization, Deserialization })\r\n\r\n function mtpSendReqPQ(auth) {\r\n const deferred = auth.deferred\r\n console.log(dTime(), 'Send req_pq', bytesToHex(auth.nonce))\r\n\r\n const request = new Serialization({ mtproto: true })\r\n\r\n request.storeMethod('req_pq', { nonce: auth.nonce })\r\n\r\n const keyFoundCheck = key => key\r\n ? auth.publicKey = key\r\n : Promise.reject(new Error('[MT] No public key found'))\r\n\r\n const factorizeThunk = () => CryptoWorker.factorize(auth.pq)\r\n\r\n const factDone = ([ p, q, it ]) => {\r\n auth.p = p\r\n auth.q = q\r\n console.log(dTime(), 'PQ factorization done', it)\r\n mtpSendReqDhParams(auth)\r\n }\r\n\r\n const factFail = error => {\r\n console.log('Worker error', error, error.stack)\r\n deferred.reject(error)\r\n }\r\n\r\n const factorizer = (deserializer) => {\r\n const response = deserializer.fetchObject('ResPQ')\r\n\r\n if (response._ !== 'resPQ')\r\n throw new Error(`[MT] resPQ response invalid: ${ response._}`)\r\n\r\n if (!bytesCmp(auth.nonce, response.nonce))\r\n throw new Error('[MT] resPQ nonce mismatch')\r\n\r\n auth.serverNonce = response.server_nonce\r\n auth.pq = response.pq\r\n auth.fingerprints = response.server_public_key_fingerprints\r\n\r\n // console.log(dTime(), 'Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints)\r\n\r\n select(auth.fingerprints)\r\n .then(keyFoundCheck)\r\n .then(factorizeThunk)\r\n .then(factDone, factFail)\r\n\r\n // console.log(dTime(), 'PQ factorization start', auth.pq)\r\n }\r\n\r\n const sendPlainThunk = () => sendPlainReq(auth.dcUrl, request.getBuffer())\r\n\r\n return prepare()\r\n .then(sendPlainThunk)\r\n .then(factorizer, error => {\r\n console.error(dTime(), 'req_pq error', error.message)\r\n deferred.reject(error)\r\n })\r\n }\r\n\r\n function mtpSendReqDhParams(auth) {\r\n const deferred = auth.deferred\r\n\r\n auth.newNonce = new Array(32)\r\n MtpSecureRandom.nextBytes(auth.newNonce)\r\n\r\n const data = new Serialization({ mtproto: true })\r\n data.storeObject({\r\n _ : 'p_q_inner_data',\r\n pq : auth.pq,\r\n p : auth.p,\r\n q : auth.q,\r\n nonce : auth.nonce,\r\n server_nonce: auth.serverNonce,\r\n new_nonce : auth.newNonce\r\n }, 'P_Q_inner_data', 'DECRYPTED_DATA')\r\n\r\n const dataWithHash = sha1BytesSync(data.getBuffer()).concat(data.getBytes())\r\n\r\n const request = new Serialization({ mtproto: true })\r\n request.storeMethod('req_DH_params', {\r\n nonce : auth.nonce,\r\n server_nonce : auth.serverNonce,\r\n p : auth.p,\r\n q : auth.q,\r\n public_key_fingerprint: auth.publicKey.fingerprint,\r\n encrypted_data : rsaEncrypt(auth.publicKey, dataWithHash)\r\n })\r\n\r\n console.log(dTime(), 'Send req_DH_params')\r\n sendPlainReq(auth.dcUrl, request.getBuffer()).then((deserializer) => {\r\n const response = deserializer.fetchObject('Server_DH_Params', 'RESPONSE')\r\n\r\n if (response._ !== 'server_DH_params_fail' && response._ !== 'server_DH_params_ok') {\r\n deferred.reject(new Error(`[MT] Server_DH_Params response invalid: ${ response._}`))\r\n return false\r\n }\r\n\r\n if (!bytesCmp(auth.nonce, response.nonce)) {\r\n deferred.reject(new Error('[MT] Server_DH_Params nonce mismatch'))\r\n return false\r\n }\r\n\r\n if (!bytesCmp(auth.serverNonce, response.server_nonce)) {\r\n deferred.reject(new Error('[MT] Server_DH_Params server_nonce mismatch'))\r\n return false\r\n }\r\n\r\n if (response._ == 'server_DH_params_fail') {\r\n const newNonceHash = sha1BytesSync(auth.newNonce).slice(-16)\r\n if (!bytesCmp(newNonceHash, response.new_nonce_hash)) {\r\n deferred.reject(new Error('[MT] server_DH_params_fail new_nonce_hash mismatch'))\r\n return false\r\n }\r\n deferred.reject(new Error('[MT] server_DH_params_fail'))\r\n return false\r\n }\r\n\r\n try {\r\n mtpDecryptServerDhDataAnswer(auth, response.encrypted_answer)\r\n } catch (e) {\r\n deferred.reject(e)\r\n return false\r\n }\r\n\r\n mtpSendSetClientDhParams(auth)\r\n }, deferred.reject)\r\n }\r\n\r\n function mtpDecryptServerDhDataAnswer(auth, encryptedAnswer) {\r\n auth.localTime = tsNow()\r\n\r\n auth.tmpAesKey = sha1BytesSync(\r\n auth.newNonce\r\n .concat(auth.serverNonce))\r\n .concat(sha1BytesSync(auth.serverNonce.concat(auth.newNonce)).slice(0, 12))\r\n auth.tmpAesIv = sha1BytesSync(\r\n auth\r\n .serverNonce\r\n .concat(auth.newNonce))\r\n .slice(12)\r\n .concat(\r\n sha1BytesSync([].concat(auth.newNonce, auth.newNonce)),\r\n auth.newNonce.slice(0, 4))\r\n\r\n const answerWithHash = aesDecryptSync(encryptedAnswer, auth.tmpAesKey, auth.tmpAesIv)\r\n\r\n const hash = answerWithHash.slice(0, 20)\r\n const answerWithPadding = answerWithHash.slice(20)\r\n const buffer = bytesToArrayBuffer(answerWithPadding)\r\n\r\n const deserializer = new Deserialization(buffer, { mtproto: true })\r\n const response = deserializer.fetchObject('Server_DH_inner_data')\r\n\r\n if (response._ != 'server_DH_inner_data')\r\n throw new Error(`[MT] server_DH_inner_data response invalid: ${constructor}`)\r\n\r\n if (!bytesCmp(auth.nonce, response.nonce))\r\n throw new Error('[MT] server_DH_inner_data nonce mismatch')\r\n\r\n if (!bytesCmp(auth.serverNonce, response.server_nonce))\r\n throw new Error('[MT] server_DH_inner_data serverNonce mismatch')\r\n\r\n console.log(dTime(), 'Done decrypting answer')\r\n auth.g = response.g\r\n auth.dhPrime = response.dh_prime\r\n auth.gA = response.g_a\r\n auth.serverTime = response.server_time\r\n auth.retry = 0\r\n\r\n mtpVerifyDhParams(auth.g, auth.dhPrime, auth.gA)\r\n\r\n const offset = deserializer.getOffset()\r\n\r\n if (!bytesCmp(hash, sha1BytesSync(answerWithPadding.slice(0, offset)))) {\r\n throw new Error('[MT] server_DH_inner_data SHA1-hash mismatch')\r\n }\r\n\r\n applyServerTime(auth.serverTime, auth.localTime)\r\n }\r\n\r\n function mtpVerifyDhParams(g, dhPrime, gA) {\r\n // console.log(dTime(), 'Verifying DH params')\r\n const dhPrimeHex = bytesToHex(dhPrime)\r\n if (g !== 3 || dhPrimeHex !== primeHex)\r\n // The verified value is from https://core.telegram.org/mtproto/security_guidelines\r\n throw new Error('[MT] DH params are not verified: unknown dhPrime')\r\n console.log(dTime(), 'dhPrime cmp OK')\r\n\r\n const gABigInt = new BigInteger(bytesToHex(gA), 16)\r\n const dhPrimeBigInt = new BigInteger(dhPrimeHex, 16)\r\n\r\n if (gABigInt.compareTo(BigInteger.ONE) <= 0) {\r\n throw new Error('[MT] DH params are not verified: gA <= 1')\r\n }\r\n\r\n if (gABigInt.compareTo(dhPrimeBigInt.subtract(BigInteger.ONE)) >= 0) {\r\n throw new Error('[MT] DH params are not verified: gA >= dhPrime - 1')\r\n }\r\n // console.log(dTime(), '1 < gA < dhPrime-1 OK')\r\n\r\n\r\n const two = new BigInteger(null)\r\n two.fromInt(2)\r\n const twoPow = two.pow(2048 - 64)\r\n\r\n if (gABigInt.compareTo(twoPow) < 0) {\r\n throw new Error('[MT] DH params are not verified: gA < 2^{2048-64}')\r\n }\r\n if (gABigInt.compareTo(dhPrimeBigInt.subtract(twoPow)) >= 0) {\r\n throw new Error('[MT] DH params are not verified: gA > dhPrime - 2^{2048-64}')\r\n }\r\n console.log(dTime(), '2^{2048-64} < gA < dhPrime-2^{2048-64} OK')\r\n\r\n return true\r\n }\r\n\r\n function mtpSendSetClientDhParams(auth) {\r\n const deferred = auth.deferred\r\n const gBytes = bytesFromHex(auth.g.toString(16))\r\n\r\n auth.b = new Array(256)\r\n MtpSecureRandom.nextBytes(auth.b)\r\n\r\n const afterPlainRequest = (deserializer) => {\r\n const response = deserializer.fetchObject('Set_client_DH_params_answer')\r\n\r\n if (response._ != 'dh_gen_ok' && response._ != 'dh_gen_retry' && response._ != 'dh_gen_fail') {\r\n deferred.reject(new Error(`[MT] Set_client_DH_params_answer response invalid: ${ response._}`))\r\n return false\r\n }\r\n\r\n if (!bytesCmp(auth.nonce, response.nonce)) {\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer nonce mismatch'))\r\n return false\r\n }\r\n\r\n if (!bytesCmp(auth.serverNonce, response.server_nonce)) {\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer server_nonce mismatch'))\r\n return false\r\n }\r\n\r\n CryptoWorker.modPow(auth.gA, auth.b, auth.dhPrime)\r\n .then((authKey) => {\r\n const authKeyHash = sha1BytesSync(authKey),\r\n authKeyAux = authKeyHash.slice(0, 8),\r\n authKeyID = authKeyHash.slice(-8)\r\n\r\n console.log(dTime(), 'Got Set_client_DH_params_answer', response._)\r\n switch (response._) {\r\n case 'dh_gen_ok': {\r\n const newNonceHash1 = sha1BytesSync(auth.newNonce.concat([1], authKeyAux)).slice(-16)\r\n\r\n if (!bytesCmp(newNonceHash1, response.new_nonce_hash1)) {\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer new_nonce_hash1 mismatch'))\r\n return false\r\n }\r\n\r\n const serverSalt = bytesXor(auth.newNonce.slice(0, 8), auth.serverNonce.slice(0, 8))\r\n // console.log('Auth successfull!', authKeyID, authKey, serverSalt)\r\n\r\n auth.authKeyID = authKeyID\r\n auth.authKey = authKey\r\n auth.serverSalt = serverSalt\r\n\r\n deferred.resolve(auth)\r\n break\r\n }\r\n case 'dh_gen_retry': {\r\n const newNonceHash2 = sha1BytesSync(auth.newNonce.concat([2], authKeyAux)).slice(-16)\r\n if (!bytesCmp(newNonceHash2, response.new_nonce_hash2)) {\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer new_nonce_hash2 mismatch'))\r\n return false\r\n }\r\n\r\n return mtpSendSetClientDhParams(auth)\r\n }\r\n case 'dh_gen_fail': {\r\n const newNonceHash3 = sha1BytesSync(auth.newNonce.concat([3], authKeyAux)).slice(-16)\r\n if (!bytesCmp(newNonceHash3, response.new_nonce_hash3)) {\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer new_nonce_hash3 mismatch'))\r\n return false\r\n }\r\n\r\n deferred.reject(new Error('[MT] Set_client_DH_params_answer fail'))\r\n return false\r\n }\r\n }\r\n }, deferred.reject)\r\n }\r\n\r\n CryptoWorker.modPow(gBytes, auth.b, auth.dhPrime).then((gB) => {\r\n const data = new Serialization({ mtproto: true })\r\n data.storeObject({\r\n _ : 'client_DH_inner_data',\r\n nonce : auth.nonce,\r\n server_nonce: auth.serverNonce,\r\n retry_id : [0, auth.retry++],\r\n g_b : gB\r\n }, 'Client_DH_Inner_Data')\r\n\r\n const dataWithHash = sha1BytesSync(data.getBuffer()).concat(data.getBytes())\r\n\r\n const encryptedData = aesEncryptSync(dataWithHash, auth.tmpAesKey, auth.tmpAesIv)\r\n\r\n const request = new Serialization({ mtproto: true })\r\n request.storeMethod('set_client_DH_params', {\r\n nonce : auth.nonce,\r\n server_nonce : auth.serverNonce,\r\n encrypted_data: encryptedData\r\n })\r\n\r\n console.log(dTime(), 'Send set_client_DH_params')\r\n sendPlainReq(auth.dcUrl, request.getBuffer())\r\n .then(afterPlainRequest, deferred.reject)\r\n }, deferred.reject)\r\n }\r\n\r\n function mtpAuth(dcID, cached, dcUrl) {\r\n if (cached[dcID])\r\n return cached[dcID].promise\r\n console.warn('mtpAuth')\r\n const nonce = []\r\n for (let i = 0; i < 16; i++)\r\n nonce.push(nextRandomInt(0xFF))\r\n\r\n if (!dcUrl)\r\n return Promise.reject(\r\n new Error(`[MT] No server found for dc ${dcID} url ${dcUrl}`))\r\n\r\n const auth = {\r\n dcID,\r\n dcUrl,\r\n nonce,\r\n deferred: blueDefer()\r\n }\r\n\r\n smartTimeout.immediate(() => mtpSendReqPQ(auth))\r\n\r\n cached[dcID] = auth.deferred\r\n\r\n cached[dcID].promise.catch(() => {\r\n delete cached[dcID]\r\n })\r\n\r\n return cached[dcID].promise\r\n }\r\n\r\n return mtpAuth\r\n}\r\nexport default Auth\n\n\n// WEBPACK FOOTER //\n// ./service/authorizer/index.js","import Promise from 'bluebird'\r\nimport { pathEq, allPass, has } from 'ramda'\r\n\r\nimport httpClient from '../../http'\r\nimport { ErrorBadResponse, ErrorNotFound } from '../../error'\r\nimport { generateID } from '../time-manager'\r\n\r\nconst is404 = pathEq(['response', 'status'], 404)\r\nconst notError = allPass([has('message'), has('type')])\r\n\r\nconst SendPlain = ({ Serialization, Deserialization }) => {\r\n const onlySendPlainReq = (url, requestBuffer) => {\r\n const requestLength = requestBuffer.byteLength,\r\n requestArray = new Int32Array(requestBuffer)\r\n\r\n const header = new Serialization()\r\n header.storeLongP(0, 0, 'auth_key_id') // Auth key\r\n header.storeLong(generateID(), 'msg_id') // Msg_id\r\n header.storeInt(requestLength, 'request_length')\r\n\r\n const headerBuffer = header.getBuffer(),\r\n headerArray = new Int32Array(headerBuffer)\r\n const headerLength = headerBuffer.byteLength\r\n\r\n const resultBuffer = new ArrayBuffer(headerLength + requestLength),\r\n resultArray = new Int32Array(resultBuffer)\r\n\r\n resultArray.set(headerArray)\r\n resultArray.set(requestArray, headerArray.length)\r\n\r\n const requestData = resultArray\r\n let reqPromise\r\n try {\r\n reqPromise = httpClient.post(url, requestData, {\r\n responseType: 'arraybuffer'\r\n })\r\n } catch (e) {\r\n reqPromise = Promise.reject(new ErrorBadResponse(url, e))\r\n }\r\n return Promise.props({ url, req: reqPromise })\r\n }\r\n\r\n const onlySendPlainErr = (err) => {\r\n let error\r\n switch (true) {\r\n case is404(err):\r\n error = new ErrorNotFound(err)\r\n break\r\n case notError(err):\r\n error = new ErrorBadResponse('', err)\r\n break\r\n default:\r\n error = err\r\n }\r\n return Promise.reject(error)\r\n }\r\n\r\n const onlySendPlainRes = ({ url, req }) => {\r\n if (!req.data || !req.data.byteLength)\r\n return Promise.reject(new ErrorBadResponse(url))\r\n let deserializer\r\n try {\r\n deserializer = new Deserialization(req.data, { mtproto: true })\r\n const auth_key_id = deserializer.fetchLong('auth_key_id')\r\n const msg_id = deserializer.fetchLong('msg_id')\r\n const msg_len = deserializer.fetchInt('msg_len')\r\n } catch (e) {\r\n return Promise.reject(new ErrorBadResponse(url, e))\r\n }\r\n\r\n return deserializer\r\n }\r\n\r\n const sendPlainReq = (url, requestBuffer) =>\r\n onlySendPlainReq(url, requestBuffer)\r\n .then(\r\n onlySendPlainRes,\r\n onlySendPlainErr)\r\n\r\n return sendPlainReq\r\n}\r\n\r\nexport default SendPlain\n\n\n// WEBPACK FOOTER //\n// ./service/authorizer/send-plain-req.js","import Promise from 'bluebird'\r\nimport { bytesToHex, sha1BytesSync, bytesFromHex, bigStringInt } from '../bin'\r\n\r\n/**\r\n* Server public key, obtained from here: https://core.telegram.org/api/obtaining_api_id\r\n*\r\n* -----BEGIN RSA PUBLIC KEY-----\r\n* MIIBCgKCAQEAwVACPi9w23mF3tBkdZz+zwrzKOaaQdr01vAbU4E1pvkfj4sqDsm6\r\n* lyDONS789sVoD/xCS9Y0hkkC3gtL1tSfTlgCMOOul9lcixlEKzwKENj1Yz/s7daS\r\n* an9tqw3bfUV/nqgbhGX81v/+7RFAEd+RwFnK7a+XYl9sluzHRyVVaTTveB2GazTw\r\n* Efzk2DWgkBluml8OREmvfraX3bkHZJTKX4EQSjBbbdJ2ZXIsRrYOXfaA+xayEGB+\r\n* 8hdlLmAjbCVfaigxX0CDqWeR1yFL9kwd9P0NsZRPsmoqVwMbMu7mStFai6aIhc3n\r\n* Slv8kg9qv1m6XHVQY3PnEw+QQtqSIXklHwIDAQAB\r\n* -----END RSA PUBLIC KEY-----\r\n*/\r\n\r\n\r\nconst publisKeysHex = [{\r\n //eslint-disable-next-line\r\n modulus : 'c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b538135a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449af7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59ba5c75506373e7130f9042da922179251f',\r\n exponent: '010001'\r\n}]\r\n\r\nconst publicKeysParsed = {}\r\nlet prepared = false\r\n\r\nexport const KeyManager = (Serialization) => {\r\n\r\n const mapPrepare = ({ modulus, exponent }) => {\r\n const RSAPublicKey = new Serialization()\r\n RSAPublicKey.storeBytes(bytesFromHex(modulus), 'n')\r\n RSAPublicKey.storeBytes(bytesFromHex(exponent), 'e')\r\n\r\n const buffer = RSAPublicKey.getBuffer()\r\n\r\n const fingerprintBytes = sha1BytesSync(buffer).slice(-8)\r\n fingerprintBytes.reverse()\r\n\r\n publicKeysParsed[bytesToHex(fingerprintBytes)] = {\r\n modulus,\r\n exponent\r\n }\r\n }\r\n\r\n const setPrepared = () => { prepared = true }\r\n\r\n const prepareRsaKeys = () => {\r\n if (prepared) return Promise.resolve()\r\n return Promise\r\n .map(publisKeysHex, mapPrepare)\r\n .then(setPrepared)\r\n }\r\n\r\n const selectRsaKey = fingerprints => () => {\r\n let fingerprintHex, foundKey\r\n for (let i = 0; i < fingerprints.length; i++) {\r\n fingerprintHex = bigStringInt(fingerprints[i]).toString(16)\r\n foundKey = publicKeysParsed[fingerprintHex]\r\n if (foundKey)\r\n return { fingerprint: fingerprints[i], ...foundKey }\r\n }\r\n\r\n return false\r\n }\r\n\r\n const selectRsaKeyByFingerPrint = fingerprints =>\r\n prepareRsaKeys()\r\n .then(selectRsaKey(fingerprints))\r\n\r\n return {\r\n prepare: prepareRsaKeys,\r\n select : selectRsaKeyByFingerPrint\r\n }\r\n}\r\n\r\nexport default KeyManager\r\n\n\n\n// WEBPACK FOOTER //\n// ./service/rsa-keys-manger.js","export const Switch = (patterns, protector = e => e) =>\r\n (matches, mProtector = e => e) => (...data) => {\r\n const keyList = Object.keys(patterns)\r\n const normalized = protector(...data)\r\n for (const key of keyList)\r\n if (patterns[key](normalized))\r\n return mProtector(matches[key])\r\n }\r\n\r\nexport default Switch\n\n\n// WEBPACK FOOTER //\n// ./switch.js","import isNode from 'detect-node'\r\nimport { is, isNil, type as rType } from 'ramda'\r\nimport { bigint, bigStringInt, uintToInt, intToUint, bytesToHex,\r\n gzipUncompress, bytesToArrayBuffer } from './bin'\r\n\r\nconst toUint32 = buf => {\r\n let ln, res\r\n if (!isNode) //TODO browser behavior not equals, why?\r\n return new Uint32Array( buf )\r\n if (buf.readUInt32LE) {\r\n ln = buf.byteLength / 4\r\n res = new Uint32Array( ln )\r\n for (let i = 0; i < ln; i++)\r\n res[i] = buf.readUInt32LE( i*4 )\r\n } else {\r\n const data = new DataView( buf )\r\n ln = data.byteLength / 4\r\n res = new Uint32Array( ln )\r\n for (let i = 0; i < ln; i++)\r\n res[i] = data.getUint32( i*4, true )\r\n }\r\n return res\r\n}\r\n\r\nexport const TL = (api, mtApi) => {\r\n\r\n class Serialization {\r\n constructor({ mtproto = false, startMaxLength = 2048 /* 2Kb */ } = {}) {\r\n this.maxLength = startMaxLength\r\n this.offset = 0 // in bytes\r\n\r\n this.createBuffer()\r\n this.mtproto = mtproto\r\n }\r\n\r\n createBuffer() {\r\n this.buffer = new ArrayBuffer(this.maxLength)\r\n this.intView = new Int32Array(this.buffer)\r\n this.byteView = new Uint8Array(this.buffer)\r\n }\r\n\r\n getArray() {\r\n const resultBuffer = new ArrayBuffer(this.offset)\r\n const resultArray = new Int32Array(resultBuffer)\r\n\r\n resultArray.set(this.intView.subarray(0, this.offset / 4))\r\n\r\n return resultArray\r\n }\r\n\r\n getBuffer() {\r\n return this.getArray().buffer\r\n }\r\n\r\n getBytes(typed) {\r\n if (typed) {\r\n const resultBuffer = new ArrayBuffer(this.offset)\r\n const resultArray = new Uint8Array(resultBuffer)\r\n\r\n resultArray.set(this.byteView.subarray(0, this.offset))\r\n\r\n return resultArray\r\n }\r\n\r\n const bytes = []\r\n for (let i = 0; i < this.offset; i++) {\r\n bytes.push(this.byteView[i])\r\n }\r\n return bytes\r\n }\r\n\r\n checkLength(needBytes) {\r\n if (this.offset + needBytes < this.maxLength) {\r\n return\r\n }\r\n\r\n console.trace('Increase buffer', this.offset, needBytes, this.maxLength)\r\n this.maxLength = Math.ceil(Math.max(this.maxLength * 2, this.offset + needBytes + 16) / 4) * 4\r\n const previousBuffer = this.buffer\r\n const previousArray = new Int32Array(previousBuffer)\r\n\r\n this.createBuffer()\r\n\r\n new Int32Array(this.buffer).set(previousArray)\r\n }\r\n\r\n writeInt(i, field) {\r\n this.debug && console.log('>>>', i.toString(16), i, field)\r\n\r\n this.checkLength(4)\r\n this.intView[this.offset / 4] = i\r\n this.offset += 4\r\n }\r\n\r\n storeIntString = (value, field) => {\r\n const valType = rType(value)\r\n switch (true) {\r\n case is(String, value): return this.storeString(value, field)\r\n case is(Number, value): return this.storeInt(value, field)\r\n default: throw new Error(`tl storeIntString field ${field} value type ${valType}`)\r\n }\r\n }\r\n\r\n storeInt = (i, field = '') => {\r\n this.writeInt(i, `${ field }:int`)\r\n }\r\n\r\n storeBool(i, field = '') {\r\n if (i) {\r\n this.writeInt(0x997275b5, `${ field }:bool`)\r\n } else {\r\n this.writeInt(0xbc799737, `${ field }:bool`)\r\n }\r\n }\r\n\r\n storeLongP(iHigh, iLow, field) {\r\n this.writeInt(iLow, `${ field }:long[low]`)\r\n this.writeInt(iHigh, `${ field }:long[high]`)\r\n }\r\n\r\n storeLong(sLong, field = '') {\r\n if (is(Array, sLong))\r\n return sLong.length === 2\r\n ? this.storeLongP(sLong[0], sLong[1], field)\r\n : this.storeIntBytes(sLong, 64, field)\r\n\r\n if (typeof sLong !== 'string')\r\n sLong = sLong\r\n ? sLong.toString()\r\n : '0'\r\n const divRem = bigStringInt(sLong).divideAndRemainder(bigint(0x100000000))\r\n\r\n this.writeInt(intToUint(divRem[1].intValue()), `${ field }:long[low]`)\r\n this.writeInt(intToUint(divRem[0].intValue()), `${ field }:long[high]`)\r\n }\r\n\r\n storeDouble(f, field = '') {\r\n const buffer = new ArrayBuffer(8)\r\n const intView = new Int32Array(buffer)\r\n const doubleView = new Float64Array(buffer)\r\n\r\n doubleView[0] = f\r\n\r\n this.writeInt(intView[0], `${ field }:double[low]`)\r\n this.writeInt(intView[1], `${ field }:double[high]`)\r\n }\r\n\r\n storeString(s, field = '') {\r\n this.debug && console.log('>>>', s, `${ field }:string`)\r\n\r\n if (s === undefined) {\r\n s = ''\r\n }\r\n const sUTF8 = unescape(encodeURIComponent(s))\r\n\r\n this.checkLength(sUTF8.length + 8)\r\n\r\n const len = sUTF8.length\r\n if (len <= 253) {\r\n this.byteView[this.offset++] = len\r\n } else {\r\n this.byteView[this.offset++] = 254\r\n this.byteView[this.offset++] = len & 0xFF\r\n this.byteView[this.offset++] = (len & 0xFF00) >> 8\r\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16\r\n }\r\n for (let i = 0; i < len; i++) {\r\n this.byteView[this.offset++] = sUTF8.charCodeAt(i)\r\n }\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.byteView[this.offset++] = 0\r\n }\r\n }\r\n\r\n storeBytes(bytes, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n else if (bytes === undefined) {\r\n bytes = []\r\n }\r\n this.debug && console.log('>>>', bytesToHex(bytes), `${ field }:bytes`)\r\n\r\n const len = bytes.byteLength || bytes.length\r\n this.checkLength(len + 8)\r\n if (len <= 253) {\r\n this.byteView[this.offset++] = len\r\n } else {\r\n this.byteView[this.offset++] = 254\r\n this.byteView[this.offset++] = len & 0xFF\r\n this.byteView[this.offset++] = (len & 0xFF00) >> 8\r\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16\r\n }\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.byteView[this.offset++] = 0\r\n }\r\n }\r\n\r\n storeIntBytes(bytes, bits, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n const len = bytes.length\r\n if (bits % 32 || len * 8 != bits) {\r\n throw new Error(`Invalid bits: ${ bits }, ${ bytes.length}`)\r\n }\r\n\r\n this.debug && console.log('>>>', bytesToHex(bytes), `${ field }:int${ bits}`)\r\n this.checkLength(len)\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n }\r\n\r\n storeRawBytes(bytes, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n const len = bytes.length\r\n\r\n this.debug && console.log('>>>', bytesToHex(bytes), field)\r\n this.checkLength(len)\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n }\r\n\r\n storeMethod(methodName, params) {\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n let methodData = false\r\n\r\n for (let i = 0; i < schema.methods.length; i++) {\r\n if (schema.methods[i].method == methodName) {\r\n methodData = schema.methods[i]\r\n break\r\n }\r\n }\r\n if (!methodData) {\r\n throw new Error(`No method ${ methodName } found`)\r\n }\r\n\r\n this.storeInt(intToUint(methodData.id), `${methodName }[id]`)\r\n\r\n let param, type\r\n let condType\r\n let fieldBit\r\n const len = methodData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = methodData.params[i]\r\n type = param.type\r\n if (type.indexOf('?') !== -1) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(params[fieldBit[0]] & 1 << fieldBit[1])) {\r\n continue\r\n }\r\n type = condType[1]\r\n }\r\n\r\n this.storeObject(params[param.name], type, `${methodName }[${ param.name }]`)\r\n }\r\n\r\n return methodData.type\r\n }\r\n\r\n storeObject(obj, type, field) {\r\n switch (type) {\r\n case '#':\r\n case 'int':\r\n return this.storeInt(obj, field)\r\n case 'long':\r\n return this.storeLong(obj, field)\r\n case 'int128':\r\n return this.storeIntBytes(obj, 128, field)\r\n case 'int256':\r\n return this.storeIntBytes(obj, 256, field)\r\n case 'int512':\r\n return this.storeIntBytes(obj, 512, field)\r\n case 'string':\r\n return this.storeString(obj, field)\r\n case 'bytes':\r\n return this.storeBytes(obj, field)\r\n case 'double':\r\n return this.storeDouble(obj, field)\r\n case 'Bool':\r\n return this.storeBool(obj, field)\r\n case 'true':\r\n return\r\n }\r\n\r\n if (is(Array, obj)) {\r\n if (type.substr(0, 6) == 'Vector') {\r\n this.writeInt(0x1cb5c415, `${field }[id]`)\r\n }\r\n else if (type.substr(0, 6) != 'vector') {\r\n throw new Error(`Invalid vector type ${ type}`)\r\n }\r\n const itemType = type.substr(7, type.length - 8) // for \"Vector<itemType>\"\r\n this.writeInt(obj.length, `${field }[count]`)\r\n for (let i = 0; i < obj.length; i++) {\r\n this.storeObject(obj[i], itemType, `${field }[${ i }]`)\r\n }\r\n return true\r\n }\r\n else if (type.substr(0, 6).toLowerCase() == 'vector') {\r\n throw new Error('Invalid vector object')\r\n }\r\n\r\n if (!is(Object, obj))\r\n throw new Error(`Invalid object for type ${ type}`)\r\n\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n const predicate = obj['_']\r\n let isBare = false\r\n let constructorData = false\r\n\r\n if (isBare = type.charAt(0) == '%')\r\n type = type.substr(1)\r\n\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].predicate == predicate) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData)\r\n throw new Error(`No predicate ${ predicate } found`)\r\n\r\n if (predicate == type)\r\n isBare = true\r\n\r\n if (!isBare)\r\n this.writeInt(intToUint(constructorData.id), `${field }[${ predicate }][id]`)\r\n\r\n let param\r\n let condType\r\n let fieldBit\r\n const len = constructorData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = constructorData.params[i]\r\n type = param.type\r\n if (type.indexOf('?') !== -1) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(obj[fieldBit[0]] & 1 << fieldBit[1])) {\r\n continue\r\n }\r\n type = condType[1]\r\n }\r\n\r\n this.storeObject(obj[param.name], type, `${field }[${ predicate }][${ param.name }]`)\r\n }\r\n\r\n return constructorData.type\r\n }\r\n\r\n }\r\n\r\n class Deserialization {\r\n constructor(buffer, { mtproto = false, override = {} } = {}) {\r\n this.offset = 0 // in bytes\r\n this.override = override\r\n\r\n this.buffer = buffer\r\n this.intView = toUint32(this.buffer)\r\n this.byteView = new Uint8Array(this.buffer)\r\n this.mtproto = mtproto\r\n }\r\n\r\n readInt(field) {\r\n if (this.offset >= this.intView.length * 4) {\r\n throw new Error(`Nothing to fetch: ${ field}`)\r\n }\r\n\r\n const i = this.intView[this.offset / 4]\r\n\r\n this.debug && console.log('<<<', i.toString(16), i, field)\r\n\r\n this.offset += 4\r\n\r\n return i\r\n }\r\n\r\n fetchInt(field = '') {\r\n return this.readInt(`${ field }:int`)\r\n }\r\n\r\n fetchDouble(field = '') {\r\n const buffer = new ArrayBuffer(8)\r\n const intView = new Int32Array(buffer)\r\n const doubleView = new Float64Array(buffer)\r\n\r\n intView[0] = this.readInt(`${ field }:double[low]`),\r\n intView[1] = this.readInt(`${ field }:double[high]`)\r\n\r\n return doubleView[0]\r\n }\r\n\r\n fetchLong(field = '') {\r\n const iLow = this.readInt(`${ field }:long[low]`)\r\n const iHigh = this.readInt(`${ field }:long[high]`)\r\n\r\n const longDec = bigint(iHigh)\r\n .shiftLeft(32)\r\n .add(bigint(iLow))\r\n .toString()\r\n\r\n return longDec\r\n }\r\n\r\n fetchBool(field = '') {\r\n const i = this.readInt(`${ field }:bool`)\r\n if (i == 0x997275b5) {\r\n return true\r\n } else if (i == 0xbc799737) {\r\n return false\r\n }\r\n\r\n this.offset -= 4\r\n return this.fetchObject('Object', field)\r\n }\r\n\r\n fetchString(field = '') {\r\n let len = this.byteView[this.offset++]\r\n\r\n if (len == 254) {\r\n len = this.byteView[this.offset++] |\r\n this.byteView[this.offset++] << 8 |\r\n this.byteView[this.offset++] << 16\r\n }\r\n\r\n let sUTF8 = ''\r\n for (let i = 0; i < len; i++) {\r\n sUTF8 += String.fromCharCode(this.byteView[this.offset++])\r\n }\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.offset++\r\n }\r\n let s\r\n try {\r\n s = decodeURIComponent(escape(sUTF8))\r\n } catch (e) {\r\n s = sUTF8\r\n }\r\n\r\n this.debug && console.log('<<<', s, `${ field }:string`)\r\n\r\n return s\r\n }\r\n\r\n fetchBytes(field = '') {\r\n let len = this.byteView[this.offset++]\r\n\r\n if (len == 254) {\r\n len = this.byteView[this.offset++] |\r\n this.byteView[this.offset++] << 8 |\r\n this.byteView[this.offset++] << 16\r\n }\r\n\r\n const bytes = this.byteView.subarray(this.offset, this.offset + len)\r\n this.offset += len\r\n\r\n // Padding\r\n while (this.offset % 4)\r\n this.offset++\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), `${ field }:bytes`)\r\n\r\n return bytes\r\n }\r\n\r\n fetchIntBytes(bits, typed, field = '') {\r\n if (bits % 32)\r\n throw new Error(`Invalid bits: ${ bits}`)\r\n\r\n const len = bits / 8\r\n if (typed) {\r\n const result = this.byteView.subarray(this.offset, this.offset + len)\r\n this.offset += len\r\n return result\r\n }\r\n\r\n const bytes = []\r\n for (let i = 0; i < len; i++) {\r\n bytes.push(this.byteView[this.offset++])\r\n }\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), `${ field }:int${ bits}`)\r\n\r\n return bytes\r\n }\r\n\r\n fetchRawBytes(len, typed, field = '') {\r\n if (len === false) {\r\n len = this.readInt(`${ field }_length`)\r\n if (len > this.byteView.byteLength)\r\n throw new Error(`Invalid raw bytes length: ${ len }, buffer len: ${ this.byteView.byteLength}`)\r\n }\r\n let bytes\r\n if (typed) {\r\n bytes = new Uint8Array(len)\r\n bytes.set(this.byteView.subarray(this.offset, this.offset + len))\r\n this.offset += len\r\n return bytes\r\n }\r\n\r\n bytes = []\r\n for (let i = 0; i < len; i++)\r\n bytes.push(this.byteView[this.offset++])\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), field)\r\n\r\n return bytes\r\n }\r\n\r\n fetchObject(type, field) {\r\n switch (type) {\r\n case '#':\r\n case 'int':\r\n return this.fetchInt(field)\r\n case 'long':\r\n return this.fetchLong(field)\r\n case 'int128':\r\n return this.fetchIntBytes(128, false, field)\r\n case 'int256':\r\n return this.fetchIntBytes(256, false, field)\r\n case 'int512':\r\n return this.fetchIntBytes(512, false, field)\r\n case 'string':\r\n return this.fetchString(field)\r\n case 'bytes':\r\n return this.fetchBytes(field)\r\n case 'double':\r\n return this.fetchDouble(field)\r\n case 'Bool':\r\n return this.fetchBool(field)\r\n case 'true':\r\n return true\r\n }\r\n let fallback\r\n field = field || type || 'Object'\r\n const subpart = type.substr(0, 6)\r\n if (subpart === 'Vector' || subpart === 'vector') {\r\n if (type.charAt(0) === 'V') {\r\n const constructor = this.readInt(`${field}[id]`)\r\n const constructorCmp = uintToInt(constructor)\r\n\r\n if (constructorCmp === 0x3072cfa1) { // Gzip packed\r\n const compressed = this.fetchBytes(`${field}[packed_string]`)\r\n const uncompressed = gzipUncompress(compressed)\r\n const buffer = bytesToArrayBuffer(uncompressed)\r\n const newDeserializer = new Deserialization(buffer)\r\n\r\n return newDeserializer.fetchObject(type, field)\r\n }\r\n if (constructorCmp !== 0x1cb5c415)\r\n throw new Error(`Invalid vector constructor ${constructor}`)\r\n }\r\n const len = this.readInt(`${field}[count]`)\r\n const result = []\r\n if (len > 0) {\r\n const itemType = type.substr(7, type.length - 8) // for \"Vector<itemType>\"\r\n for (let i = 0; i < len; i++)\r\n result.push(this.fetchObject(itemType, `${field }[${ i }]`))\r\n }\r\n\r\n return result\r\n }\r\n\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n let predicate = false\r\n let constructorData = false\r\n\r\n if (type.charAt(0) == '%') {\r\n const checkType = type.substr(1)\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].type == checkType) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData) {\r\n throw new Error(`Constructor not found for type: ${ type}`)\r\n }\r\n }\r\n else if (type.charAt(0) >= 97 && type.charAt(0) <= 122) {\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].predicate == type) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData)\r\n throw new Error(`Constructor not found for predicate: ${ type}`)\r\n } else {\r\n const constructor = this.readInt(`${field }[id]`)\r\n const constructorCmp = uintToInt(constructor)\r\n\r\n if (constructorCmp == 0x3072cfa1) { // Gzip packed\r\n const compressed = this.fetchBytes(`${field }[packed_string]`)\r\n const uncompressed = gzipUncompress(compressed)\r\n const buffer = bytesToArrayBuffer(uncompressed)\r\n const newDeserializer = new Deserialization(buffer)\r\n\r\n return newDeserializer.fetchObject(type, field)\r\n }\r\n\r\n let index = schema.constructorsIndex\r\n if (!index) {\r\n schema.constructorsIndex = index = {}\r\n for (let i = 0; i < schema.constructors.length; i++)\r\n index[schema.constructors[i].id] = i\r\n }\r\n let i = index[constructorCmp]\r\n if (i)\r\n constructorData = schema.constructors[i]\r\n\r\n fallback = false\r\n if (!constructorData && this.mtproto) {\r\n const schemaFallback = api\r\n for (i = 0; i < schemaFallback.constructors.length; i++) {\r\n if (schemaFallback.constructors[i].id == constructorCmp) {\r\n constructorData = schemaFallback.constructors[i]\r\n\r\n delete this.mtproto\r\n fallback = true\r\n break\r\n }\r\n }\r\n }\r\n if (!constructorData) {\r\n throw new Error(`Constructor not found: ${ constructor } ${ this.fetchInt() } ${ this.fetchInt()}`)\r\n }\r\n }\r\n\r\n predicate = constructorData.predicate\r\n\r\n const result = { '_': predicate }\r\n const overrideKey = (this.mtproto ? 'mt_' : '') + predicate\r\n\r\n if (this.override[overrideKey]) {\r\n this.override[overrideKey].apply(this, [result, `${field }[${ predicate }]`])\r\n } else {\r\n let param, isCond\r\n let condType, fieldBit\r\n let value\r\n const len = constructorData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = constructorData.params[i]\r\n type = param.type\r\n if (type === '#' && isNil(result.pFlags))\r\n result.pFlags = {}\r\n\r\n isCond = type.indexOf('?') !== -1\r\n if (isCond) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(result[fieldBit[0]] & 1 << fieldBit[1]))\r\n continue\r\n type = condType[1]\r\n }\r\n\r\n value = this.fetchObject(type, `${field }[${ predicate }][${ param.name }]`)\r\n\r\n if (isCond && type === 'true')\r\n result.pFlags[param.name] = value\r\n else\r\n result[param.name] = value\r\n }\r\n }\r\n\r\n if (fallback)\r\n this.mtproto = true\r\n\r\n return result\r\n }\r\n\r\n getOffset() {\r\n return this.offset\r\n }\r\n\r\n fetchEnd() {\r\n if (this.offset !== this.byteView.length)\r\n throw new Error('Fetch end with non-empty buffer')\r\n return true\r\n }\r\n\r\n }\r\n\r\n return { Serialization, Deserialization }\r\n}\r\n\r\nexport default TL\n\n\n// WEBPACK FOOTER //\n// ./tl.js","/*!\r\n * EventEmitter2\r\n * https://github.com/hij1nx/EventEmitter2\r\n *\r\n * Copyright (c) 2013 hij1nx\r\n * Licensed under the MIT license.\r\n */\r\n;!function(undefined) {\r\n\r\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\r\n return Object.prototype.toString.call(obj) === \"[object Array]\";\r\n };\r\n var defaultMaxListeners = 10;\r\n\r\n function init() {\r\n this._events = {};\r\n if (this._conf) {\r\n configure.call(this, this._conf);\r\n }\r\n }\r\n\r\n function configure(conf) {\r\n if (conf) {\r\n this._conf = conf;\r\n\r\n conf.delimiter && (this.delimiter = conf.delimiter);\r\n this._events.maxListeners = conf.maxListeners !== undefined ? conf.maxListeners : defaultMaxListeners;\r\n conf.wildcard && (this.wildcard = conf.wildcard);\r\n conf.newListener && (this.newListener = conf.newListener);\r\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\r\n\r\n if (this.wildcard) {\r\n this.listenerTree = {};\r\n }\r\n } else {\r\n this._events.maxListeners = defaultMaxListeners;\r\n }\r\n }\r\n\r\n function logPossibleMemoryLeak(count, eventName) {\r\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\r\n 'leak detected. %d listeners added. ' +\r\n 'Use emitter.setMaxListeners() to increase limit.';\r\n\r\n if(this.verboseMemoryLeak){\r\n errorMsg += ' Event name: %s.';\r\n console.error(errorMsg, count, eventName);\r\n } else {\r\n console.error(errorMsg, count);\r\n }\r\n\r\n if (console.trace){\r\n console.trace();\r\n }\r\n }\r\n\r\n function EventEmitter(conf) {\r\n this._events = {};\r\n this.newListener = false;\r\n this.verboseMemoryLeak = false;\r\n configure.call(this, conf);\r\n }\r\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\r\n\r\n //\r\n // Attention, function return type now is array, always !\r\n // It has zero elements if no any matches found and one or more\r\n // elements (leafs) if there are matches\r\n //\r\n function searchListenerTree(handlers, type, tree, i) {\r\n if (!tree) {\r\n return [];\r\n }\r\n var listeners=[], leaf, len, branch, xTree, xxTree, isolatedBranch, endReached,\r\n typeLength = type.length, currentType = type[i], nextType = type[i+1];\r\n if (i === typeLength && tree._listeners) {\r\n //\r\n // If at the end of the event(s) list and the tree has listeners\r\n // invoke those listeners.\r\n //\r\n if (typeof tree._listeners === 'function') {\r\n handlers && handlers.push(tree._listeners);\r\n return [tree];\r\n } else {\r\n for (leaf = 0, len = tree._listeners.length; leaf < len; leaf++) {\r\n handlers && handlers.push(tree._listeners[leaf]);\r\n }\r\n return [tree];\r\n }\r\n }\r\n\r\n if ((currentType === '*' || currentType === '**') || tree[currentType]) {\r\n //\r\n // If the event emitted is '*' at this part\r\n // or there is a concrete match at this patch\r\n //\r\n if (currentType === '*') {\r\n for (branch in tree) {\r\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+1));\r\n }\r\n }\r\n return listeners;\r\n } else if(currentType === '**') {\r\n endReached = (i+1 === typeLength || (i+2 === typeLength && nextType === '*'));\r\n if(endReached && tree._listeners) {\r\n // The next element has a _listeners, add it to the handlers.\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree, typeLength));\r\n }\r\n\r\n for (branch in tree) {\r\n if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {\r\n if(branch === '*' || branch === '**') {\r\n if(tree[branch]._listeners && !endReached) {\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], typeLength));\r\n }\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\r\n } else if(branch === nextType) {\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i+2));\r\n } else {\r\n // No match on this one, shift into the tree but not in the type array.\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[branch], i));\r\n }\r\n }\r\n }\r\n return listeners;\r\n }\r\n\r\n listeners = listeners.concat(searchListenerTree(handlers, type, tree[currentType], i+1));\r\n }\r\n\r\n xTree = tree['*'];\r\n if (xTree) {\r\n //\r\n // If the listener tree will allow any match for this part,\r\n // then recursively explore all branches of the tree\r\n //\r\n searchListenerTree(handlers, type, xTree, i+1);\r\n }\r\n\r\n xxTree = tree['**'];\r\n if(xxTree) {\r\n if(i < typeLength) {\r\n if(xxTree._listeners) {\r\n // If we have a listener on a '**', it will catch all, so add its handler.\r\n searchListenerTree(handlers, type, xxTree, typeLength);\r\n }\r\n\r\n // Build arrays of matching next branches and others.\r\n for(branch in xxTree) {\r\n if(branch !== '_listeners' && xxTree.hasOwnProperty(branch)) {\r\n if(branch === nextType) {\r\n // We know the next element will match, so jump twice.\r\n searchListenerTree(handlers, type, xxTree[branch], i+2);\r\n } else if(branch === currentType) {\r\n // Current node matches, move into the tree.\r\n searchListenerTree(handlers, type, xxTree[branch], i+1);\r\n } else {\r\n isolatedBranch = {};\r\n isolatedBranch[branch] = xxTree[branch];\r\n searchListenerTree(handlers, type, { '**': isolatedBranch }, i+1);\r\n }\r\n }\r\n }\r\n } else if(xxTree._listeners) {\r\n // We have reached the end and still on a '**'\r\n searchListenerTree(handlers, type, xxTree, typeLength);\r\n } else if(xxTree['*'] && xxTree['*']._listeners) {\r\n searchListenerTree(handlers, type, xxTree['*'], typeLength);\r\n }\r\n }\r\n\r\n return listeners;\r\n }\r\n\r\n function growListenerTree(type, listener) {\r\n\r\n type = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n\r\n //\r\n // Looks for two consecutive '**', if so, don't add the event at all.\r\n //\r\n for(var i = 0, len = type.length; i+1 < len; i++) {\r\n if(type[i] === '**' && type[i+1] === '**') {\r\n return;\r\n }\r\n }\r\n\r\n var tree = this.listenerTree;\r\n var name = type.shift();\r\n\r\n while (name !== undefined) {\r\n\r\n if (!tree[name]) {\r\n tree[name] = {};\r\n }\r\n\r\n tree = tree[name];\r\n\r\n if (type.length === 0) {\r\n\r\n if (!tree._listeners) {\r\n tree._listeners = listener;\r\n }\r\n else {\r\n if (typeof tree._listeners === 'function') {\r\n tree._listeners = [tree._listeners];\r\n }\r\n\r\n tree._listeners.push(listener);\r\n\r\n if (\r\n !tree._listeners.warned &&\r\n this._events.maxListeners > 0 &&\r\n tree._listeners.length > this._events.maxListeners\r\n ) {\r\n tree._listeners.warned = true;\r\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\r\n }\r\n }\r\n return true;\r\n }\r\n name = type.shift();\r\n }\r\n return true;\r\n }\r\n\r\n // By default EventEmitters will print a warning if more than\r\n // 10 listeners are added to it. This is a useful default which\r\n // helps finding memory leaks.\r\n //\r\n // Obviously not all Emitters should be limited to 10. This function allows\r\n // that to be increased. Set to zero for unlimited.\r\n\r\n EventEmitter.prototype.delimiter = '.';\r\n\r\n EventEmitter.prototype.setMaxListeners = function(n) {\r\n if (n !== undefined) {\r\n this._events || init.call(this);\r\n this._events.maxListeners = n;\r\n if (!this._conf) this._conf = {};\r\n this._conf.maxListeners = n;\r\n }\r\n };\r\n\r\n EventEmitter.prototype.event = '';\r\n\r\n EventEmitter.prototype.once = function(event, fn) {\r\n this.many(event, 1, fn);\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.many = function(event, ttl, fn) {\r\n var self = this;\r\n\r\n if (typeof fn !== 'function') {\r\n throw new Error('many only accepts instances of Function');\r\n }\r\n\r\n function listener() {\r\n if (--ttl === 0) {\r\n self.off(event, listener);\r\n }\r\n fn.apply(this, arguments);\r\n }\r\n\r\n listener._origin = fn;\r\n\r\n this.on(event, listener);\r\n\r\n return self;\r\n };\r\n\r\n EventEmitter.prototype.emit = function() {\r\n\r\n this._events || init.call(this);\r\n\r\n var type = arguments[0];\r\n\r\n if (type === 'newListener' && !this.newListener) {\r\n if (!this._events.newListener) {\r\n return false;\r\n }\r\n }\r\n\r\n var al = arguments.length;\r\n var args,l,i,j;\r\n var handler;\r\n\r\n if (this._all && this._all.length) {\r\n handler = this._all.slice();\r\n if (al > 3) {\r\n args = new Array(al);\r\n for (j = 0; j < al; j++) args[j] = arguments[j];\r\n }\r\n\r\n for (i = 0, l = handler.length; i < l; i++) {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n handler[i].call(this, type);\r\n break;\r\n case 2:\r\n handler[i].call(this, type, arguments[1]);\r\n break;\r\n case 3:\r\n handler[i].call(this, type, arguments[1], arguments[2]);\r\n break;\r\n default:\r\n handler[i].apply(this, args);\r\n }\r\n }\r\n }\r\n\r\n if (this.wildcard) {\r\n handler = [];\r\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\r\n } else {\r\n handler = this._events[type];\r\n if (typeof handler === 'function') {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n handler.call(this);\r\n break;\r\n case 2:\r\n handler.call(this, arguments[1]);\r\n break;\r\n case 3:\r\n handler.call(this, arguments[1], arguments[2]);\r\n break;\r\n default:\r\n args = new Array(al - 1);\r\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\r\n handler.apply(this, args);\r\n }\r\n return true;\r\n } else if (handler) {\r\n // need to make copy of handlers because list can change in the middle\r\n // of emit call\r\n handler = handler.slice();\r\n }\r\n }\r\n\r\n if (handler && handler.length) {\r\n if (al > 3) {\r\n args = new Array(al - 1);\r\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\r\n }\r\n for (i = 0, l = handler.length; i < l; i++) {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n handler[i].call(this);\r\n break;\r\n case 2:\r\n handler[i].call(this, arguments[1]);\r\n break;\r\n case 3:\r\n handler[i].call(this, arguments[1], arguments[2]);\r\n break;\r\n default:\r\n handler[i].apply(this, args);\r\n }\r\n }\r\n return true;\r\n } else if (!this._all && type === 'error') {\r\n if (arguments[1] instanceof Error) {\r\n throw arguments[1]; // Unhandled 'error' event\r\n } else {\r\n throw new Error(\"Uncaught, unspecified 'error' event.\");\r\n }\r\n return false;\r\n }\r\n\r\n return !!this._all;\r\n };\r\n\r\n EventEmitter.prototype.emitAsync = function() {\r\n\r\n this._events || init.call(this);\r\n\r\n var type = arguments[0];\r\n\r\n if (type === 'newListener' && !this.newListener) {\r\n if (!this._events.newListener) { return Promise.resolve([false]); }\r\n }\r\n\r\n var promises= [];\r\n\r\n var al = arguments.length;\r\n var args,l,i,j;\r\n var handler;\r\n\r\n if (this._all) {\r\n if (al > 3) {\r\n args = new Array(al);\r\n for (j = 1; j < al; j++) args[j] = arguments[j];\r\n }\r\n for (i = 0, l = this._all.length; i < l; i++) {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n promises.push(this._all[i].call(this, type));\r\n break;\r\n case 2:\r\n promises.push(this._all[i].call(this, type, arguments[1]));\r\n break;\r\n case 3:\r\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\r\n break;\r\n default:\r\n promises.push(this._all[i].apply(this, args));\r\n }\r\n }\r\n }\r\n\r\n if (this.wildcard) {\r\n handler = [];\r\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\r\n } else {\r\n handler = this._events[type];\r\n }\r\n\r\n if (typeof handler === 'function') {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n promises.push(handler.call(this));\r\n break;\r\n case 2:\r\n promises.push(handler.call(this, arguments[1]));\r\n break;\r\n case 3:\r\n promises.push(handler.call(this, arguments[1], arguments[2]));\r\n break;\r\n default:\r\n args = new Array(al - 1);\r\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\r\n promises.push(handler.apply(this, args));\r\n }\r\n } else if (handler && handler.length) {\r\n if (al > 3) {\r\n args = new Array(al - 1);\r\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\r\n }\r\n for (i = 0, l = handler.length; i < l; i++) {\r\n this.event = type;\r\n switch (al) {\r\n case 1:\r\n promises.push(handler[i].call(this));\r\n break;\r\n case 2:\r\n promises.push(handler[i].call(this, arguments[1]));\r\n break;\r\n case 3:\r\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\r\n break;\r\n default:\r\n promises.push(handler[i].apply(this, args));\r\n }\r\n }\r\n } else if (!this._all && type === 'error') {\r\n if (arguments[1] instanceof Error) {\r\n return Promise.reject(arguments[1]); // Unhandled 'error' event\r\n } else {\r\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\r\n }\r\n }\r\n\r\n return Promise.all(promises);\r\n };\r\n\r\n EventEmitter.prototype.on = function(type, listener) {\r\n if (typeof type === 'function') {\r\n this.onAny(type);\r\n return this;\r\n }\r\n\r\n if (typeof listener !== 'function') {\r\n throw new Error('on only accepts instances of Function');\r\n }\r\n this._events || init.call(this);\r\n\r\n // To avoid recursion in the case that type == \"newListeners\"! Before\r\n // adding it to the listeners, first emit \"newListeners\".\r\n this.emit('newListener', type, listener);\r\n\r\n if (this.wildcard) {\r\n growListenerTree.call(this, type, listener);\r\n return this;\r\n }\r\n\r\n if (!this._events[type]) {\r\n // Optimize the case of one listener. Don't need the extra array object.\r\n this._events[type] = listener;\r\n }\r\n else {\r\n if (typeof this._events[type] === 'function') {\r\n // Change to array.\r\n this._events[type] = [this._events[type]];\r\n }\r\n\r\n // If we've already got an array, just append.\r\n this._events[type].push(listener);\r\n\r\n // Check for listener leak\r\n if (\r\n !this._events[type].warned &&\r\n this._events.maxListeners > 0 &&\r\n this._events[type].length > this._events.maxListeners\r\n ) {\r\n this._events[type].warned = true;\r\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.onAny = function(fn) {\r\n if (typeof fn !== 'function') {\r\n throw new Error('onAny only accepts instances of Function');\r\n }\r\n\r\n if (!this._all) {\r\n this._all = [];\r\n }\r\n\r\n // Add the function to the event listener collection.\r\n this._all.push(fn);\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\r\n\r\n EventEmitter.prototype.off = function(type, listener) {\r\n if (typeof listener !== 'function') {\r\n throw new Error('removeListener only takes instances of Function');\r\n }\r\n\r\n var handlers,leafs=[];\r\n\r\n if(this.wildcard) {\r\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\r\n }\r\n else {\r\n // does not use listeners(), so no side effect of creating _events[type]\r\n if (!this._events[type]) return this;\r\n handlers = this._events[type];\r\n leafs.push({_listeners:handlers});\r\n }\r\n\r\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\r\n var leaf = leafs[iLeaf];\r\n handlers = leaf._listeners;\r\n if (isArray(handlers)) {\r\n\r\n var position = -1;\r\n\r\n for (var i = 0, length = handlers.length; i < length; i++) {\r\n if (handlers[i] === listener ||\r\n (handlers[i].listener && handlers[i].listener === listener) ||\r\n (handlers[i]._origin && handlers[i]._origin === listener)) {\r\n position = i;\r\n break;\r\n }\r\n }\r\n\r\n if (position < 0) {\r\n continue;\r\n }\r\n\r\n if(this.wildcard) {\r\n leaf._listeners.splice(position, 1);\r\n }\r\n else {\r\n this._events[type].splice(position, 1);\r\n }\r\n\r\n if (handlers.length === 0) {\r\n if(this.wildcard) {\r\n delete leaf._listeners;\r\n }\r\n else {\r\n delete this._events[type];\r\n }\r\n }\r\n\r\n this.emit(\"removeListener\", type, listener);\r\n\r\n return this;\r\n }\r\n else if (handlers === listener ||\r\n (handlers.listener && handlers.listener === listener) ||\r\n (handlers._origin && handlers._origin === listener)) {\r\n if(this.wildcard) {\r\n delete leaf._listeners;\r\n }\r\n else {\r\n delete this._events[type];\r\n }\r\n\r\n this.emit(\"removeListener\", type, listener);\r\n }\r\n }\r\n\r\n function recursivelyGarbageCollect(root) {\r\n if (root === undefined) {\r\n return;\r\n }\r\n var keys = Object.keys(root);\r\n for (var i in keys) {\r\n var key = keys[i];\r\n var obj = root[key];\r\n if ((obj instanceof Function) || (typeof obj !== \"object\") || (obj === null))\r\n continue;\r\n if (Object.keys(obj).length > 0) {\r\n recursivelyGarbageCollect(root[key]);\r\n }\r\n if (Object.keys(obj).length === 0) {\r\n delete root[key];\r\n }\r\n }\r\n }\r\n recursivelyGarbageCollect(this.listenerTree);\r\n\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.offAny = function(fn) {\r\n var i = 0, l = 0, fns;\r\n if (fn && this._all && this._all.length > 0) {\r\n fns = this._all;\r\n for(i = 0, l = fns.length; i < l; i++) {\r\n if(fn === fns[i]) {\r\n fns.splice(i, 1);\r\n this.emit(\"removeListenerAny\", fn);\r\n return this;\r\n }\r\n }\r\n } else {\r\n fns = this._all;\r\n for(i = 0, l = fns.length; i < l; i++)\r\n this.emit(\"removeListenerAny\", fns[i]);\r\n this._all = [];\r\n }\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\r\n\r\n EventEmitter.prototype.removeAllListeners = function(type) {\r\n if (arguments.length === 0) {\r\n !this._events || init.call(this);\r\n return this;\r\n }\r\n\r\n if (this.wildcard) {\r\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n var leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\r\n\r\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\r\n var leaf = leafs[iLeaf];\r\n leaf._listeners = null;\r\n }\r\n }\r\n else if (this._events) {\r\n this._events[type] = null;\r\n }\r\n return this;\r\n };\r\n\r\n EventEmitter.prototype.listeners = function(type) {\r\n if (this.wildcard) {\r\n var handlers = [];\r\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\r\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\r\n return handlers;\r\n }\r\n\r\n this._events || init.call(this);\r\n\r\n if (!this._events[type]) this._events[type] = [];\r\n if (!isArray(this._events[type])) {\r\n this._events[type] = [this._events[type]];\r\n }\r\n return this._events[type];\r\n };\r\n\r\n EventEmitter.prototype.listenerCount = function(type) {\r\n return this.listeners(type).length;\r\n };\r\n\r\n EventEmitter.prototype.listenersAny = function() {\r\n\r\n if(this._all) {\r\n return this._all;\r\n }\r\n else {\r\n return [];\r\n }\r\n\r\n };\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(function() {\r\n return EventEmitter;\r\n });\r\n } else if (typeof exports === 'object') {\r\n // CommonJS\r\n module.exports = EventEmitter;\r\n }\r\n else {\r\n // Browser global.\r\n window.EventEmitter2 = EventEmitter;\r\n }\r\n}();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/eventemitter2/lib/eventemitter2.js\n// module id = 35\n// module chunks = 0","(function () {\n var /*\n * Rusha, a JavaScript implementation of the Secure Hash Algorithm, SHA-1,\n * as defined in FIPS PUB 180-1, tuned for high performance with large inputs.\n * (http://github.com/srijs/rusha)\n *\n * Inspired by Paul Johnstons implementation (http://pajhome.org.uk/crypt/md5).\n *\n * Copyright (c) 2013 Sam Rijs (http://awesam.de).\n * Released under the terms of the MIT license as follows:\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n util = {\n getDataType: function (data) {\n if (typeof data === 'string') {\n return 'string';\n }\n if (data instanceof Array) {\n return 'array';\n }\n if (typeof global !== 'undefined' && global.Buffer && global.Buffer.isBuffer(data)) {\n return 'buffer';\n }\n if (data instanceof ArrayBuffer) {\n return 'arraybuffer';\n }\n if (data.buffer instanceof ArrayBuffer) {\n return 'view';\n }\n if (data instanceof Blob) {\n return 'blob';\n }\n throw new Error('Unsupported data type.');\n }\n };\n function Rusha(chunkSize) {\n 'use strict';\n var // Private object structure.\n self$2 = { fill: 0 };\n var // Calculate the length of buffer that the sha1 routine uses\n // including the padding.\n padlen = function (len) {\n for (len += 9; len % 64 > 0; len += 1);\n return len;\n };\n var padZeroes = function (bin, len) {\n var h8 = new Uint8Array(bin.buffer);\n var om = len % 4, align = len - om;\n switch (om) {\n case 0:\n h8[align + 3] = 0;\n case 1:\n h8[align + 2] = 0;\n case 2:\n h8[align + 1] = 0;\n case 3:\n h8[align + 0] = 0;\n }\n for (var i$2 = (len >> 2) + 1; i$2 < bin.length; i$2++)\n bin[i$2] = 0;\n };\n var padData = function (bin, chunkLen, msgLen) {\n bin[chunkLen >> 2] |= 128 << 24 - (chunkLen % 4 << 3);\n // To support msgLen >= 2 GiB, use a float division when computing the\n // high 32-bits of the big-endian message length in bits.\n bin[((chunkLen >> 2) + 2 & ~15) + 14] = msgLen / (1 << 29) | 0;\n bin[((chunkLen >> 2) + 2 & ~15) + 15] = msgLen << 3;\n };\n var // Convert a binary string and write it to the heap.\n // A binary string is expected to only contain char codes < 256.\n convStr = function (H8, H32, start, len, off) {\n var str = this, i$2, om = off % 4, lm = (len + om) % 4, j = len - lm;\n switch (om) {\n case 0:\n H8[off] = str.charCodeAt(start + 3);\n case 1:\n H8[off + 1 - (om << 1) | 0] = str.charCodeAt(start + 2);\n case 2:\n H8[off + 2 - (om << 1) | 0] = str.charCodeAt(start + 1);\n case 3:\n H8[off + 3 - (om << 1) | 0] = str.charCodeAt(start);\n }\n if (len < lm + om) {\n return;\n }\n for (i$2 = 4 - om; i$2 < j; i$2 = i$2 + 4 | 0) {\n H32[off + i$2 >> 2] = str.charCodeAt(start + i$2) << 24 | str.charCodeAt(start + i$2 + 1) << 16 | str.charCodeAt(start + i$2 + 2) << 8 | str.charCodeAt(start + i$2 + 3);\n }\n switch (lm) {\n case 3:\n H8[off + j + 1 | 0] = str.charCodeAt(start + j + 2);\n case 2:\n H8[off + j + 2 | 0] = str.charCodeAt(start + j + 1);\n case 1:\n H8[off + j + 3 | 0] = str.charCodeAt(start + j);\n }\n };\n var // Convert a buffer or array and write it to the heap.\n // The buffer or array is expected to only contain elements < 256.\n convBuf = function (H8, H32, start, len, off) {\n var buf = this, i$2, om = off % 4, lm = (len + om) % 4, j = len - lm;\n switch (om) {\n case 0:\n H8[off] = buf[start + 3];\n case 1:\n H8[off + 1 - (om << 1) | 0] = buf[start + 2];\n case 2:\n H8[off + 2 - (om << 1) | 0] = buf[start + 1];\n case 3:\n H8[off + 3 - (om << 1) | 0] = buf[start];\n }\n if (len < lm + om) {\n return;\n }\n for (i$2 = 4 - om; i$2 < j; i$2 = i$2 + 4 | 0) {\n H32[off + i$2 >> 2 | 0] = buf[start + i$2] << 24 | buf[start + i$2 + 1] << 16 | buf[start + i$2 + 2] << 8 | buf[start + i$2 + 3];\n }\n switch (lm) {\n case 3:\n H8[off + j + 1 | 0] = buf[start + j + 2];\n case 2:\n H8[off + j + 2 | 0] = buf[start + j + 1];\n case 1:\n H8[off + j + 3 | 0] = buf[start + j];\n }\n };\n var convBlob = function (H8, H32, start, len, off) {\n var blob = this, i$2, om = off % 4, lm = (len + om) % 4, j = len - lm;\n var buf = new Uint8Array(reader.readAsArrayBuffer(blob.slice(start, start + len)));\n switch (om) {\n case 0:\n H8[off] = buf[3];\n case 1:\n H8[off + 1 - (om << 1) | 0] = buf[2];\n case 2:\n H8[off + 2 - (om << 1) | 0] = buf[1];\n case 3:\n H8[off + 3 - (om << 1) | 0] = buf[0];\n }\n if (len < lm + om) {\n return;\n }\n for (i$2 = 4 - om; i$2 < j; i$2 = i$2 + 4 | 0) {\n H32[off + i$2 >> 2 | 0] = buf[i$2] << 24 | buf[i$2 + 1] << 16 | buf[i$2 + 2] << 8 | buf[i$2 + 3];\n }\n switch (lm) {\n case 3:\n H8[off + j + 1 | 0] = buf[j + 2];\n case 2:\n H8[off + j + 2 | 0] = buf[j + 1];\n case 1:\n H8[off + j + 3 | 0] = buf[j];\n }\n };\n var convFn = function (data) {\n switch (util.getDataType(data)) {\n case 'string':\n return convStr.bind(data);\n case 'array':\n return convBuf.bind(data);\n case 'buffer':\n return convBuf.bind(data);\n case 'arraybuffer':\n return convBuf.bind(new Uint8Array(data));\n case 'view':\n return convBuf.bind(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));\n case 'blob':\n return convBlob.bind(data);\n }\n };\n var slice = function (data, offset) {\n switch (util.getDataType(data)) {\n case 'string':\n return data.slice(offset);\n case 'array':\n return data.slice(offset);\n case 'buffer':\n return data.slice(offset);\n case 'arraybuffer':\n return data.slice(offset);\n case 'view':\n return data.buffer.slice(offset);\n }\n };\n var // Precompute 00 - ff strings\n precomputedHex = new Array(256);\n for (var i = 0; i < 256; i++) {\n precomputedHex[i] = (i < 16 ? '0' : '') + i.toString(16);\n }\n var // Convert an ArrayBuffer into its hexadecimal string representation.\n hex = function (arrayBuffer) {\n var binarray = new Uint8Array(arrayBuffer);\n var res = new Array(arrayBuffer.byteLength);\n for (var i$2 = 0; i$2 < res.length; i$2++) {\n res[i$2] = precomputedHex[binarray[i$2]];\n }\n return res.join('');\n };\n var ceilHeapSize = function (v) {\n // The asm.js spec says:\n // The heap object's byteLength must be either\n // 2^n for n in [12, 24) or 2^24 * n for n ≥ 1.\n // Also, byteLengths smaller than 2^16 are deprecated.\n var p;\n if (// If v is smaller than 2^16, the smallest possible solution\n // is 2^16.\n v <= 65536)\n return 65536;\n if (// If v < 2^24, we round up to 2^n,\n // otherwise we round up to 2^24 * n.\n v < 16777216) {\n for (p = 1; p < v; p = p << 1);\n } else {\n for (p = 16777216; p < v; p += 16777216);\n }\n return p;\n };\n var // Initialize the internal data structures to a new capacity.\n init = function (size) {\n if (size % 64 > 0) {\n throw new Error('Chunk size must be a multiple of 128 bit');\n }\n self$2.offset = 0;\n self$2.maxChunkLen = size;\n self$2.padMaxChunkLen = padlen(size);\n // The size of the heap is the sum of:\n // 1. The padded input message size\n // 2. The extended space the algorithm needs (320 byte)\n // 3. The 160 bit state the algoritm uses\n self$2.heap = new ArrayBuffer(ceilHeapSize(self$2.padMaxChunkLen + 320 + 20));\n self$2.h32 = new Int32Array(self$2.heap);\n self$2.h8 = new Int8Array(self$2.heap);\n self$2.core = new Rusha._core({\n Int32Array: Int32Array,\n DataView: DataView\n }, {}, self$2.heap);\n self$2.buffer = null;\n };\n // Iinitializethe datastructures according\n // to a chunk siyze.\n init(chunkSize || 64 * 1024);\n var initState = function (heap, padMsgLen) {\n self$2.offset = 0;\n var io = new Int32Array(heap, padMsgLen + 320, 5);\n io[0] = 1732584193;\n io[1] = -271733879;\n io[2] = -1732584194;\n io[3] = 271733878;\n io[4] = -1009589776;\n };\n var padChunk = function (chunkLen, msgLen) {\n var padChunkLen = padlen(chunkLen);\n var view = new Int32Array(self$2.heap, 0, padChunkLen >> 2);\n padZeroes(view, chunkLen);\n padData(view, chunkLen, msgLen);\n return padChunkLen;\n };\n var // Write data to the heap.\n write = function (data, chunkOffset, chunkLen, off) {\n convFn(data)(self$2.h8, self$2.h32, chunkOffset, chunkLen, off || 0);\n };\n var // Initialize and call the RushaCore,\n // assuming an input buffer of length len * 4.\n coreCall = function (data, chunkOffset, chunkLen, msgLen, finalize) {\n var padChunkLen = chunkLen;\n write(data, chunkOffset, chunkLen);\n if (finalize) {\n padChunkLen = padChunk(chunkLen, msgLen);\n }\n self$2.core.hash(padChunkLen, self$2.padMaxChunkLen);\n };\n var getRawDigest = function (heap, padMaxChunkLen) {\n var io = new Int32Array(heap, padMaxChunkLen + 320, 5);\n var out = new Int32Array(5);\n var arr = new DataView(out.buffer);\n arr.setInt32(0, io[0], false);\n arr.setInt32(4, io[1], false);\n arr.setInt32(8, io[2], false);\n arr.setInt32(12, io[3], false);\n arr.setInt32(16, io[4], false);\n return out;\n };\n var // Calculate the hash digest as an array of 5 32bit integers.\n rawDigest = this.rawDigest = function (str) {\n var msgLen = str.byteLength || str.length || str.size || 0;\n initState(self$2.heap, self$2.padMaxChunkLen);\n var chunkOffset = 0, chunkLen = self$2.maxChunkLen, last;\n for (chunkOffset = 0; msgLen > chunkOffset + chunkLen; chunkOffset += chunkLen) {\n coreCall(str, chunkOffset, chunkLen, msgLen, false);\n }\n coreCall(str, chunkOffset, msgLen - chunkOffset, msgLen, true);\n return getRawDigest(self$2.heap, self$2.padMaxChunkLen);\n };\n // The digest and digestFrom* interface returns the hash digest\n // as a hex string.\n this.digest = this.digestFromString = this.digestFromBuffer = this.digestFromArrayBuffer = function (str) {\n return hex(rawDigest(str).buffer);\n };\n this.resetState = function () {\n initState(self$2.heap, self$2.padMaxChunkLen);\n return this;\n };\n this.append = function (chunk) {\n var chunkOffset = 0;\n var chunkLen = chunk.byteLength || chunk.length || chunk.size || 0;\n var turnOffset = self$2.offset % self$2.maxChunkLen;\n var inputLen;\n self$2.offset += chunkLen;\n while (chunkOffset < chunkLen) {\n inputLen = Math.min(chunkLen - chunkOffset, self$2.maxChunkLen - turnOffset);\n write(chunk, chunkOffset, inputLen, turnOffset);\n turnOffset += inputLen;\n chunkOffset += inputLen;\n if (turnOffset === self$2.maxChunkLen) {\n self$2.core.hash(self$2.maxChunkLen, self$2.padMaxChunkLen);\n turnOffset = 0;\n }\n }\n return this;\n };\n this.getState = function () {\n var turnOffset = self$2.offset % self$2.maxChunkLen;\n var heap;\n if (!turnOffset) {\n var io = new Int32Array(self$2.heap, self$2.padMaxChunkLen + 320, 5);\n heap = io.buffer.slice(io.byteOffset, io.byteOffset + io.byteLength);\n } else {\n heap = self$2.heap.slice(0);\n }\n return {\n offset: self$2.offset,\n heap: heap\n };\n };\n this.setState = function (state) {\n self$2.offset = state.offset;\n if (state.heap.byteLength === 20) {\n var io = new Int32Array(self$2.heap, self$2.padMaxChunkLen + 320, 5);\n io.set(new Int32Array(state.heap));\n } else {\n self$2.h32.set(new Int32Array(state.heap));\n }\n return this;\n };\n var rawEnd = this.rawEnd = function () {\n var msgLen = self$2.offset;\n var chunkLen = msgLen % self$2.maxChunkLen;\n var padChunkLen = padChunk(chunkLen, msgLen);\n self$2.core.hash(padChunkLen, self$2.padMaxChunkLen);\n var result = getRawDigest(self$2.heap, self$2.padMaxChunkLen);\n initState(self$2.heap, self$2.padMaxChunkLen);\n return result;\n };\n this.end = function () {\n return hex(rawEnd().buffer);\n };\n }\n ;\n // The low-level RushCore module provides the heart of Rusha,\n // a high-speed sha1 implementation working on an Int32Array heap.\n // At first glance, the implementation seems complicated, however\n // with the SHA1 spec at hand, it is obvious this almost a textbook\n // implementation that has a few functions hand-inlined and a few loops\n // hand-unrolled.\n Rusha._core = function RushaCore(stdlib, foreign, heap) {\n 'use asm';\n var H = new stdlib.Int32Array(heap);\n function hash(k, x) {\n // k in bytes\n k = k | 0;\n x = x | 0;\n var i = 0, j = 0, y0 = 0, z0 = 0, y1 = 0, z1 = 0, y2 = 0, z2 = 0, y3 = 0, z3 = 0, y4 = 0, z4 = 0, t0 = 0, t1 = 0;\n y0 = H[x + 320 >> 2] | 0;\n y1 = H[x + 324 >> 2] | 0;\n y2 = H[x + 328 >> 2] | 0;\n y3 = H[x + 332 >> 2] | 0;\n y4 = H[x + 336 >> 2] | 0;\n for (i = 0; (i | 0) < (k | 0); i = i + 64 | 0) {\n z0 = y0;\n z1 = y1;\n z2 = y2;\n z3 = y3;\n z4 = y4;\n for (j = 0; (j | 0) < 64; j = j + 4 | 0) {\n t1 = H[i + j >> 2] | 0;\n t0 = ((y0 << 5 | y0 >>> 27) + (y1 & y2 | ~y1 & y3) | 0) + ((t1 + y4 | 0) + 1518500249 | 0) | 0;\n y4 = y3;\n y3 = y2;\n y2 = y1 << 30 | y1 >>> 2;\n y1 = y0;\n y0 = t0;\n H[k + j >> 2] = t1;\n }\n for (j = k + 64 | 0; (j | 0) < (k + 80 | 0); j = j + 4 | 0) {\n t1 = (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) << 1 | (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) >>> 31;\n t0 = ((y0 << 5 | y0 >>> 27) + (y1 & y2 | ~y1 & y3) | 0) + ((t1 + y4 | 0) + 1518500249 | 0) | 0;\n y4 = y3;\n y3 = y2;\n y2 = y1 << 30 | y1 >>> 2;\n y1 = y0;\n y0 = t0;\n H[j >> 2] = t1;\n }\n for (j = k + 80 | 0; (j | 0) < (k + 160 | 0); j = j + 4 | 0) {\n t1 = (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) << 1 | (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) >>> 31;\n t0 = ((y0 << 5 | y0 >>> 27) + (y1 ^ y2 ^ y3) | 0) + ((t1 + y4 | 0) + 1859775393 | 0) | 0;\n y4 = y3;\n y3 = y2;\n y2 = y1 << 30 | y1 >>> 2;\n y1 = y0;\n y0 = t0;\n H[j >> 2] = t1;\n }\n for (j = k + 160 | 0; (j | 0) < (k + 240 | 0); j = j + 4 | 0) {\n t1 = (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) << 1 | (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) >>> 31;\n t0 = ((y0 << 5 | y0 >>> 27) + (y1 & y2 | y1 & y3 | y2 & y3) | 0) + ((t1 + y4 | 0) - 1894007588 | 0) | 0;\n y4 = y3;\n y3 = y2;\n y2 = y1 << 30 | y1 >>> 2;\n y1 = y0;\n y0 = t0;\n H[j >> 2] = t1;\n }\n for (j = k + 240 | 0; (j | 0) < (k + 320 | 0); j = j + 4 | 0) {\n t1 = (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) << 1 | (H[j - 12 >> 2] ^ H[j - 32 >> 2] ^ H[j - 56 >> 2] ^ H[j - 64 >> 2]) >>> 31;\n t0 = ((y0 << 5 | y0 >>> 27) + (y1 ^ y2 ^ y3) | 0) + ((t1 + y4 | 0) - 899497514 | 0) | 0;\n y4 = y3;\n y3 = y2;\n y2 = y1 << 30 | y1 >>> 2;\n y1 = y0;\n y0 = t0;\n H[j >> 2] = t1;\n }\n y0 = y0 + z0 | 0;\n y1 = y1 + z1 | 0;\n y2 = y2 + z2 | 0;\n y3 = y3 + z3 | 0;\n y4 = y4 + z4 | 0;\n }\n H[x + 320 >> 2] = y0;\n H[x + 324 >> 2] = y1;\n H[x + 328 >> 2] = y2;\n H[x + 332 >> 2] = y3;\n H[x + 336 >> 2] = y4;\n }\n return { hash: hash };\n };\n if (// If we'e running in Node.JS, export a module.\n typeof module !== 'undefined') {\n module.exports = Rusha;\n } else if (// If we're running in a DOM context, export\n // the Rusha object to toplevel.\n typeof window !== 'undefined') {\n window.Rusha = Rusha;\n }\n if (// If we're running in a webworker, accept\n // messages containing a jobid and a buffer\n // or blob object, and return the hash result.\n typeof FileReaderSync !== 'undefined') {\n var reader = new FileReaderSync(), hasher = new Rusha(4 * 1024 * 1024);\n self.onmessage = function onMessage(event) {\n var hash, data = event.data.data;\n try {\n hash = hasher.digest(data);\n self.postMessage({\n id: event.data.id,\n hash: hash\n });\n } catch (e) {\n self.postMessage({\n id: event.data.id,\n error: e.name\n });\n }\n };\n }\n}());\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/rusha/rusha.js\n// module id = 36\n// module chunks = 0","module.exports = function() {\n\treturn new Worker(__webpack_public_path__ + \"hash.worker.js\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/worker-loader!./worker.js\n// module id = 37\n// module chunks = 0","module.exports = {\n\t\"constructors\": [\n\t\t{\n\t\t\t\"id\": \"-1132882121\",\n\t\t\t\"predicate\": \"boolFalse\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1720552011\",\n\t\t\t\"predicate\": \"boolTrue\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1072550713\",\n\t\t\t\"predicate\": \"true\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"True\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"481674261\",\n\t\t\t\"predicate\": \"vector\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Vector t\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-994444869\",\n\t\t\t\"predicate\": \"error\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"code\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Error\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1450380236\",\n\t\t\t\"predicate\": \"null\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Null\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2134579434\",\n\t\t\t\"predicate\": \"inputPeerEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2107670217\",\n\t\t\t\"predicate\": \"inputPeerSelf\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"396093539\",\n\t\t\t\"predicate\": \"inputPeerChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1182234929\",\n\t\t\t\"predicate\": \"inputUserEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputUser\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-138301121\",\n\t\t\t\"predicate\": \"inputUserSelf\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputUser\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-208488460\",\n\t\t\t\"predicate\": \"inputPhoneContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"client_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputContact\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-181407105\",\n\t\t\t\"predicate\": \"inputFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"parts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"md5_checksum\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1771768449\",\n\t\t\t\"predicate\": \"inputMediaEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1661770481\",\n\t\t\t\"predicate\": \"inputMediaUploadedPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers\",\n\t\t\t\t\t\"type\": \"flags.0?Vector<InputDocument>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-373312269\",\n\t\t\t\"predicate\": \"inputMediaPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputPhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-104578748\",\n\t\t\t\"predicate\": \"inputMediaGeoPoint\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo_point\",\n\t\t\t\t\t\"type\": \"InputGeoPoint\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1494984313\",\n\t\t\t\"predicate\": \"inputMediaContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"480546647\",\n\t\t\t\"predicate\": \"inputChatPhotoEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputChatPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1837345356\",\n\t\t\t\"predicate\": \"inputChatUploadedPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputChatPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1991004873\",\n\t\t\t\"predicate\": \"inputChatPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputPhoto\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputChatPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-457104426\",\n\t\t\t\"predicate\": \"inputGeoPointEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputGeoPoint\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-206066487\",\n\t\t\t\"predicate\": \"inputGeoPoint\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"lat\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"long\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputGeoPoint\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"483901197\",\n\t\t\t\"predicate\": \"inputPhotoEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-74070332\",\n\t\t\t\"predicate\": \"inputPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"342061462\",\n\t\t\t\"predicate\": \"inputFileLocation\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"volume_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"local_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"secret\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputFileLocation\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1996904104\",\n\t\t\t\"predicate\": \"inputAppEvent\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"time\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputAppEvent\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1649296275\",\n\t\t\t\"predicate\": \"peerUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Peer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1160714821\",\n\t\t\t\"predicate\": \"peerChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Peer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1432995067\",\n\t\t\t\"predicate\": \"storage.fileUnknown\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"8322574\",\n\t\t\t\"predicate\": \"storage.fileJpeg\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-891180321\",\n\t\t\t\"predicate\": \"storage.fileGif\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"172975040\",\n\t\t\t\"predicate\": \"storage.filePng\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1373745011\",\n\t\t\t\"predicate\": \"storage.filePdf\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1384777335\",\n\t\t\t\"predicate\": \"storage.fileMp3\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1258941372\",\n\t\t\t\"predicate\": \"storage.fileMov\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1086091090\",\n\t\t\t\"predicate\": \"storage.filePartial\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1278304028\",\n\t\t\t\"predicate\": \"storage.fileMp4\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"276907596\",\n\t\t\t\"predicate\": \"storage.fileWebp\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"storage.FileType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2086234950\",\n\t\t\t\"predicate\": \"fileLocationUnavailable\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"volume_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"local_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"secret\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FileLocation\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1406570614\",\n\t\t\t\"predicate\": \"fileLocation\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"volume_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"local_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"secret\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FileLocation\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"537022650\",\n\t\t\t\"predicate\": \"userEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1326562017\",\n\t\t\t\"predicate\": \"userProfilePhotoEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"UserProfilePhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-715532088\",\n\t\t\t\"predicate\": \"userProfilePhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo_small\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo_big\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserProfilePhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"164646985\",\n\t\t\t\"predicate\": \"userStatusEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-306628279\",\n\t\t\t\"predicate\": \"userStatusOnline\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"expires\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"9203775\",\n\t\t\t\"predicate\": \"userStatusOffline\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"was_online\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1683826688\",\n\t\t\t\"predicate\": \"chatEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Chat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-652419756\",\n\t\t\t\"predicate\": \"chat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"creator\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"kicked\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"left\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admins_enabled\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admin\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"deactivated\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"ChatPhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"migrated_to\",\n\t\t\t\t\t\"type\": \"flags.6?InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Chat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"120753115\",\n\t\t\t\"predicate\": \"chatForbidden\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Chat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"771925524\",\n\t\t\t\"predicate\": \"chatFull\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants\",\n\t\t\t\t\t\"type\": \"ChatParticipants\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_settings\",\n\t\t\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"exported_invite\",\n\t\t\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_info\",\n\t\t\t\t\t\"type\": \"Vector<BotInfo>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-925415106\",\n\t\t\t\"predicate\": \"chatParticipant\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-57668565\",\n\t\t\t\"predicate\": \"chatParticipantsForbidden\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"self_participant\",\n\t\t\t\t\t\"type\": \"flags.0?ChatParticipant\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatParticipants\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1061556205\",\n\t\t\t\"predicate\": \"chatParticipants\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants\",\n\t\t\t\t\t\"type\": \"Vector<ChatParticipant>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatParticipants\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"935395612\",\n\t\t\t\"predicate\": \"chatPhotoEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChatPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1632839530\",\n\t\t\t\"predicate\": \"chatPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo_small\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo_big\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatPhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2082087340\",\n\t\t\t\"predicate\": \"messageEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Message\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1063525281\",\n\t\t\t\"predicate\": \"message\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"out\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mentioned\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media_unread\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.13?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"post\",\n\t\t\t\t\t\"type\": \"flags.14?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"from_id\",\n\t\t\t\t\t\"type\": \"flags.8?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"to_id\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"fwd_from\",\n\t\t\t\t\t\"type\": \"flags.2?MessageFwdHeader\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"via_bot_id\",\n\t\t\t\t\t\"type\": \"flags.11?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.3?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media\",\n\t\t\t\t\t\"type\": \"flags.9?MessageMedia\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.6?ReplyMarkup\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.7?Vector<MessageEntity>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"views\",\n\t\t\t\t\t\"type\": \"flags.10?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"edit_date\",\n\t\t\t\t\t\"type\": \"flags.15?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Message\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1642487306\",\n\t\t\t\"predicate\": \"messageService\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"out\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mentioned\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media_unread\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.13?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"post\",\n\t\t\t\t\t\"type\": \"flags.14?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"from_id\",\n\t\t\t\t\t\"type\": \"flags.8?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"to_id\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.3?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"action\",\n\t\t\t\t\t\"type\": \"MessageAction\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Message\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1038967584\",\n\t\t\t\"predicate\": \"messageMediaEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1032643901\",\n\t\t\t\"predicate\": \"messageMediaPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1457575028\",\n\t\t\t\"predicate\": \"messageMediaGeo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"GeoPoint\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1585262393\",\n\t\t\t\"predicate\": \"messageMediaContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1618676578\",\n\t\t\t\"predicate\": \"messageMediaUnsupported\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1230047312\",\n\t\t\t\"predicate\": \"messageActionEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1503425638\",\n\t\t\t\"predicate\": \"messageActionChatCreate\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1247687078\",\n\t\t\t\"predicate\": \"messageActionChatEditTitle\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2144015272\",\n\t\t\t\"predicate\": \"messageActionChatEditPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1780220945\",\n\t\t\t\"predicate\": \"messageActionChatDeletePhoto\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1217033015\",\n\t\t\t\"predicate\": \"messageActionChatAddUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1297179892\",\n\t\t\t\"predicate\": \"messageActionChatDeleteUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1728035348\",\n\t\t\t\"predicate\": \"dialog\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"top_message\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_inbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_outbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unread_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_settings\",\n\t\t\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"draft\",\n\t\t\t\t\t\"type\": \"flags.1?DraftMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Dialog\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"590459437\",\n\t\t\t\"predicate\": \"photoEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Photo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1836524247\",\n\t\t\t\"predicate\": \"photo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"has_stickers\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sizes\",\n\t\t\t\t\t\"type\": \"Vector<PhotoSize>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Photo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"236446268\",\n\t\t\t\"predicate\": \"photoSizeEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PhotoSize\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2009052699\",\n\t\t\t\"predicate\": \"photoSize\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"location\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"size\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PhotoSize\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-374917894\",\n\t\t\t\"predicate\": \"photoCachedSize\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"location\",\n\t\t\t\t\t\"type\": \"FileLocation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PhotoSize\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"286776671\",\n\t\t\t\"predicate\": \"geoPointEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"GeoPoint\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"541710092\",\n\t\t\t\"predicate\": \"geoPoint\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"long\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"lat\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"GeoPoint\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2128698738\",\n\t\t\t\"predicate\": \"auth.checkedPhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_registered\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.CheckedPhone\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1577067778\",\n\t\t\t\"predicate\": \"auth.sentCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_registered\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"auth.SentCodeType\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"next_type\",\n\t\t\t\t\t\"type\": \"flags.1?auth.CodeType\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"timeout\",\n\t\t\t\t\t\"type\": \"flags.2?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCode\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-855308010\",\n\t\t\t\"predicate\": \"auth.authorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"tmp_sessions\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user\",\n\t\t\t\t\t\"type\": \"User\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-543777747\",\n\t\t\t\"predicate\": \"auth.exportedAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.ExportedAuthorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1195615476\",\n\t\t\t\"predicate\": \"inputNotifyPeer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"423314455\",\n\t\t\t\"predicate\": \"inputNotifyUsers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1251338318\",\n\t\t\t\"predicate\": \"inputNotifyChats\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1540769658\",\n\t\t\t\"predicate\": \"inputNotifyAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-265263912\",\n\t\t\t\"predicate\": \"inputPeerNotifyEventsEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPeerNotifyEvents\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-395694988\",\n\t\t\t\"predicate\": \"inputPeerNotifyEventsAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPeerNotifyEvents\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"949182130\",\n\t\t\t\"predicate\": \"inputPeerNotifySettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"show_previews\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mute_until\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sound\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPeerNotifySettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1378534221\",\n\t\t\t\"predicate\": \"peerNotifyEventsEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PeerNotifyEvents\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1830677896\",\n\t\t\t\"predicate\": \"peerNotifyEventsAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PeerNotifyEvents\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1889961234\",\n\t\t\t\"predicate\": \"peerNotifySettingsEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1697798976\",\n\t\t\t\"predicate\": \"peerNotifySettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"show_previews\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mute_until\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sound\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2122045747\",\n\t\t\t\"predicate\": \"peerSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"report_spam\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PeerSettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-860866985\",\n\t\t\t\"predicate\": \"wallPaper\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sizes\",\n\t\t\t\t\t\"type\": \"Vector<PhotoSize>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"color\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"WallPaper\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1490799288\",\n\t\t\t\"predicate\": \"inputReportReasonSpam\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ReportReason\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"505595789\",\n\t\t\t\"predicate\": \"inputReportReasonViolence\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ReportReason\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"777640226\",\n\t\t\t\"predicate\": \"inputReportReasonPornography\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ReportReason\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-512463606\",\n\t\t\t\"predicate\": \"inputReportReasonOther\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReportReason\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1496513539\",\n\t\t\t\"predicate\": \"userFull\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"blocked\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user\",\n\t\t\t\t\t\"type\": \"User\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"about\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"link\",\n\t\t\t\t\t\"type\": \"contacts.Link\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"profile_photo\",\n\t\t\t\t\t\"type\": \"flags.2?Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_settings\",\n\t\t\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_info\",\n\t\t\t\t\t\"type\": \"flags.3?BotInfo\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-116274796\",\n\t\t\t\"predicate\": \"contact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mutual\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Contact\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-805141448\",\n\t\t\t\"predicate\": \"importedContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"client_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ImportedContact\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1444661369\",\n\t\t\t\"predicate\": \"contactBlocked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ContactBlocked\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-748155807\",\n\t\t\t\"predicate\": \"contactStatus\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"status\",\n\t\t\t\t\t\"type\": \"UserStatus\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ContactStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"986597452\",\n\t\t\t\"predicate\": \"contacts.link\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"my_link\",\n\t\t\t\t\t\"type\": \"ContactLink\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"foreign_link\",\n\t\t\t\t\t\"type\": \"ContactLink\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user\",\n\t\t\t\t\t\"type\": \"User\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Link\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1219778094\",\n\t\t\t\"predicate\": \"contacts.contactsNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"contacts.Contacts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1871416498\",\n\t\t\t\"predicate\": \"contacts.contacts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"contacts\",\n\t\t\t\t\t\"type\": \"Vector<Contact>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Contacts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1387117803\",\n\t\t\t\"predicate\": \"contacts.importedContacts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"imported\",\n\t\t\t\t\t\"type\": \"Vector<ImportedContact>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"retry_contacts\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.ImportedContacts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"471043349\",\n\t\t\t\"predicate\": \"contacts.blocked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"blocked\",\n\t\t\t\t\t\"type\": \"Vector<ContactBlocked>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Blocked\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1878523231\",\n\t\t\t\"predicate\": \"contacts.blockedSlice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"blocked\",\n\t\t\t\t\t\"type\": \"Vector<ContactBlocked>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Blocked\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"364538944\",\n\t\t\t\"predicate\": \"messages.dialogs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dialogs\",\n\t\t\t\t\t\"type\": \"Vector<Dialog>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Dialogs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1910543603\",\n\t\t\t\"predicate\": \"messages.dialogsSlice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dialogs\",\n\t\t\t\t\t\"type\": \"Vector<Dialog>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Dialogs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1938715001\",\n\t\t\t\"predicate\": \"messages.messages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"189033187\",\n\t\t\t\"predicate\": \"messages.messagesSlice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1694474197\",\n\t\t\t\"predicate\": \"messages.chats\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Chats\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-438840932\",\n\t\t\t\"predicate\": \"messages.chatFull\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"full_chat\",\n\t\t\t\t\t\"type\": \"ChatFull\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.ChatFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1269012015\",\n\t\t\t\"predicate\": \"messages.affectedHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedHistory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1474492012\",\n\t\t\t\"predicate\": \"inputMessagesFilterEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1777752804\",\n\t\t\t\"predicate\": \"inputMessagesFilterPhotos\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1614803355\",\n\t\t\t\"predicate\": \"inputMessagesFilterVideo\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1458172132\",\n\t\t\t\"predicate\": \"inputMessagesFilterPhotoVideo\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-648121413\",\n\t\t\t\"predicate\": \"inputMessagesFilterPhotoVideoDocuments\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1629621880\",\n\t\t\t\"predicate\": \"inputMessagesFilterDocument\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2129714567\",\n\t\t\t\"predicate\": \"inputMessagesFilterUrl\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-3644025\",\n\t\t\t\"predicate\": \"inputMessagesFilterGif\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"522914557\",\n\t\t\t\"predicate\": \"updateNewMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"Message\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1318109142\",\n\t\t\t\"predicate\": \"updateMessageID\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1576161051\",\n\t\t\t\"predicate\": \"updateDeleteMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1548249383\",\n\t\t\t\"predicate\": \"updateUserTyping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"action\",\n\t\t\t\t\t\"type\": \"SendMessageAction\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1704596961\",\n\t\t\t\"predicate\": \"updateChatUserTyping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"action\",\n\t\t\t\t\t\"type\": \"SendMessageAction\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"125178264\",\n\t\t\t\"predicate\": \"updateChatParticipants\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants\",\n\t\t\t\t\t\"type\": \"ChatParticipants\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"469489699\",\n\t\t\t\"predicate\": \"updateUserStatus\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"status\",\n\t\t\t\t\t\"type\": \"UserStatus\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1489818765\",\n\t\t\t\"predicate\": \"updateUserName\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1791935732\",\n\t\t\t\"predicate\": \"updateUserPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"UserProfilePhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"previous\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"628472761\",\n\t\t\t\"predicate\": \"updateContactRegistered\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1657903163\",\n\t\t\t\"predicate\": \"updateContactLink\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"my_link\",\n\t\t\t\t\t\"type\": \"ContactLink\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"foreign_link\",\n\t\t\t\t\t\"type\": \"ContactLink\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1895411046\",\n\t\t\t\"predicate\": \"updateNewAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"auth_key_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"device\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"location\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1519637954\",\n\t\t\t\"predicate\": \"updates.state\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"qts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unread_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.State\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1567990072\",\n\t\t\t\"predicate\": \"updates.differenceEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.Difference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"16030880\",\n\t\t\t\"predicate\": \"updates.difference\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_encrypted_messages\",\n\t\t\t\t\t\"type\": \"Vector<EncryptedMessage>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"other_updates\",\n\t\t\t\t\t\"type\": \"Vector<Update>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"state\",\n\t\t\t\t\t\"type\": \"updates.State\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.Difference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1459938943\",\n\t\t\t\"predicate\": \"updates.differenceSlice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_encrypted_messages\",\n\t\t\t\t\t\"type\": \"Vector<EncryptedMessage>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"other_updates\",\n\t\t\t\t\t\"type\": \"Vector<Update>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"intermediate_state\",\n\t\t\t\t\t\"type\": \"updates.State\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.Difference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-484987010\",\n\t\t\t\"predicate\": \"updatesTooLong\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1857044719\",\n\t\t\t\"predicate\": \"updateShortMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"out\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mentioned\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media_unread\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.13?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"fwd_from\",\n\t\t\t\t\t\"type\": \"flags.2?MessageFwdHeader\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"via_bot_id\",\n\t\t\t\t\t\"type\": \"flags.11?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.3?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.7?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"377562760\",\n\t\t\t\"predicate\": \"updateShortChatMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"out\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mentioned\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media_unread\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.13?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"from_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"fwd_from\",\n\t\t\t\t\t\"type\": \"flags.2?MessageFwdHeader\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"via_bot_id\",\n\t\t\t\t\t\"type\": \"flags.11?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.3?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.7?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2027216577\",\n\t\t\t\"predicate\": \"updateShort\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"update\",\n\t\t\t\t\t\"type\": \"Update\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1918567619\",\n\t\t\t\"predicate\": \"updatesCombined\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"updates\",\n\t\t\t\t\t\"type\": \"Vector<Update>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq_start\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1957577280\",\n\t\t\t\"predicate\": \"updates\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"updates\",\n\t\t\t\t\t\"type\": \"Vector<Update>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1916114267\",\n\t\t\t\"predicate\": \"photos.photos\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photos\",\n\t\t\t\t\t\"type\": \"Vector<Photo>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"photos.Photos\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"352657236\",\n\t\t\t\"predicate\": \"photos.photosSlice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photos\",\n\t\t\t\t\t\"type\": \"Vector<Photo>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"photos.Photos\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"539045032\",\n\t\t\t\"predicate\": \"photos.photo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"photos.Photo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"157948117\",\n\t\t\t\"predicate\": \"upload.file\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"storage.FileType\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mtime\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"upload.File\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"98092748\",\n\t\t\t\"predicate\": \"dcOption\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ipv6\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media_only\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"tcpo_only\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ip_address\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"port\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DcOption\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1704251862\",\n\t\t\t\"predicate\": \"config\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"expires\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"test_mode\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"this_dc\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_options\",\n\t\t\t\t\t\"type\": \"Vector<DcOption>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_size_max\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"megagroup_size_max\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"forwarded_count_max\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"online_update_period_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offline_blur_timeout_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offline_idle_timeout_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"online_cloud_timeout_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_cloud_delay_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_default_delay_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_big_size\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"push_chat_period_ms\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"push_chat_limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"saved_gifs_limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"edit_time_limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rating_e_decay\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers_recent_limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"tmp_sessions\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"disabled_features\",\n\t\t\t\t\t\"type\": \"Vector<DisabledFeature>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Config\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1910892683\",\n\t\t\t\"predicate\": \"nearestDc\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"country\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"this_dc\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nearest_dc\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"NearestDc\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1987579119\",\n\t\t\t\"predicate\": \"help.appUpdate\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"critical\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"help.AppUpdate\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1000708810\",\n\t\t\t\"predicate\": \"help.noAppUpdate\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.AppUpdate\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"415997816\",\n\t\t\t\"predicate\": \"help.inviteText\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"help.InviteText\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1662091044\",\n\t\t\t\"predicate\": \"wallPaperSolid\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bg_color\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"color\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"WallPaper\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"314359194\",\n\t\t\t\"predicate\": \"updateNewEncryptedMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"EncryptedMessage\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"qts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"386986326\",\n\t\t\t\"predicate\": \"updateEncryptedChatTyping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1264392051\",\n\t\t\t\"predicate\": \"updateEncryption\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat\",\n\t\t\t\t\t\"type\": \"EncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"956179895\",\n\t\t\t\"predicate\": \"updateEncryptedMessagesRead\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1417756512\",\n\t\t\t\"predicate\": \"encryptedChatEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1006044124\",\n\t\t\t\"predicate\": \"encryptedChatWaiting\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admin_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participant_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-931638658\",\n\t\t\t\"predicate\": \"encryptedChatRequested\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admin_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participant_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_a\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-94974410\",\n\t\t\t\"predicate\": \"encryptedChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admin_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participant_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_a_or_b\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key_fingerprint\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"332848423\",\n\t\t\t\"predicate\": \"encryptedChatDiscarded\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-247351839\",\n\t\t\t\"predicate\": \"inputEncryptedChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1038136962\",\n\t\t\t\"predicate\": \"encryptedFileEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"EncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1248893260\",\n\t\t\t\"predicate\": \"encryptedFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"size\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key_fingerprint\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"406307684\",\n\t\t\t\"predicate\": \"inputEncryptedFileEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputEncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1690108678\",\n\t\t\t\"predicate\": \"inputEncryptedFileUploaded\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"parts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"md5_checksum\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key_fingerprint\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputEncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1511503333\",\n\t\t\t\"predicate\": \"inputEncryptedFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputEncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-182231723\",\n\t\t\t\"predicate\": \"inputEncryptedFileLocation\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputFileLocation\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-317144808\",\n\t\t\t\"predicate\": \"encryptedMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"EncryptedFile\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"594758406\",\n\t\t\t\"predicate\": \"encryptedMessageService\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1058912715\",\n\t\t\t\"predicate\": \"messages.dhConfigNotModified\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.DhConfig\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"740433629\",\n\t\t\t\"predicate\": \"messages.dhConfig\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"p\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.DhConfig\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1443858741\",\n\t\t\t\"predicate\": \"messages.sentEncryptedMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SentEncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1802240206\",\n\t\t\t\"predicate\": \"messages.sentEncryptedFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"EncryptedFile\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SentEncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-95482955\",\n\t\t\t\"predicate\": \"inputFileBig\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"parts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"767652808\",\n\t\t\t\"predicate\": \"inputEncryptedFileBigUploaded\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"parts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key_fingerprint\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputEncryptedFile\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-364179876\",\n\t\t\t\"predicate\": \"updateChatParticipantAdd\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1851755554\",\n\t\t\t\"predicate\": \"updateChatParticipantDelete\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1906403213\",\n\t\t\t\"predicate\": \"updateDcOptions\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_options\",\n\t\t\t\t\t\"type\": \"Vector<DcOption>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-797904407\",\n\t\t\t\"predicate\": \"inputMediaUploadedDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mime_type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attributes\",\n\t\t\t\t\t\"type\": \"Vector<DocumentAttribute>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers\",\n\t\t\t\t\t\"type\": \"flags.0?Vector<InputDocument>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1356369070\",\n\t\t\t\"predicate\": \"inputMediaUploadedThumbDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"thumb\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mime_type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attributes\",\n\t\t\t\t\t\"type\": \"Vector<DocumentAttribute>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers\",\n\t\t\t\t\t\"type\": \"flags.0?Vector<InputDocument>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"444068508\",\n\t\t\t\"predicate\": \"inputMediaDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputDocument\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-203411800\",\n\t\t\t\"predicate\": \"messageMediaDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"Document\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1928391342\",\n\t\t\t\"predicate\": \"inputDocumentEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputDocument\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"410618194\",\n\t\t\t\"predicate\": \"inputDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputDocument\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1125058340\",\n\t\t\t\"predicate\": \"inputDocumentFileLocation\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputFileLocation\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"922273905\",\n\t\t\t\"predicate\": \"documentEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Document\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2027738169\",\n\t\t\t\"predicate\": \"document\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mime_type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"size\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"thumb\",\n\t\t\t\t\t\"type\": \"PhotoSize\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attributes\",\n\t\t\t\t\t\"type\": \"Vector<DocumentAttribute>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Document\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"398898678\",\n\t\t\t\"predicate\": \"help.support\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user\",\n\t\t\t\t\t\"type\": \"User\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"help.Support\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1613493288\",\n\t\t\t\"predicate\": \"notifyPeer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"NotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1261946036\",\n\t\t\t\"predicate\": \"notifyUsers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"NotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1073230141\",\n\t\t\t\"predicate\": \"notifyChats\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"NotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1959820384\",\n\t\t\t\"predicate\": \"notifyAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"NotifyPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2131957734\",\n\t\t\t\"predicate\": \"updateUserBlocked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"blocked\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1094555409\",\n\t\t\t\"predicate\": \"updateNotifySettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"NotifyPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_settings\",\n\t\t\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"381645902\",\n\t\t\t\"predicate\": \"sendMessageTypingAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-44119819\",\n\t\t\t\"predicate\": \"sendMessageCancelAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1584933265\",\n\t\t\t\"predicate\": \"sendMessageRecordVideoAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-378127636\",\n\t\t\t\"predicate\": \"sendMessageUploadVideoAction\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"progress\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-718310409\",\n\t\t\t\"predicate\": \"sendMessageRecordAudioAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-212740181\",\n\t\t\t\"predicate\": \"sendMessageUploadAudioAction\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"progress\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-774682074\",\n\t\t\t\"predicate\": \"sendMessageUploadPhotoAction\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"progress\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1441998364\",\n\t\t\t\"predicate\": \"sendMessageUploadDocumentAction\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"progress\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"393186209\",\n\t\t\t\"predicate\": \"sendMessageGeoLocationAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1653390447\",\n\t\t\t\"predicate\": \"sendMessageChooseContactAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"446822276\",\n\t\t\t\"predicate\": \"contacts.found\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"results\",\n\t\t\t\t\t\"type\": \"Vector<Peer>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Found\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"942527460\",\n\t\t\t\"predicate\": \"updateServiceNotification\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media\",\n\t\t\t\t\t\"type\": \"MessageMedia\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"popup\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-496024847\",\n\t\t\t\"predicate\": \"userStatusRecently\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"129960444\",\n\t\t\t\"predicate\": \"userStatusLastWeek\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2011940674\",\n\t\t\t\"predicate\": \"userStatusLastMonth\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"UserStatus\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-298113238\",\n\t\t\t\"predicate\": \"updatePrivacy\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key\",\n\t\t\t\t\t\"type\": \"PrivacyKey\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rules\",\n\t\t\t\t\t\"type\": \"Vector<PrivacyRule>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1335282456\",\n\t\t\t\"predicate\": \"inputPrivacyKeyStatusTimestamp\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyKey\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1137792208\",\n\t\t\t\"predicate\": \"privacyKeyStatusTimestamp\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyKey\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"218751099\",\n\t\t\t\"predicate\": \"inputPrivacyValueAllowContacts\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"407582158\",\n\t\t\t\"predicate\": \"inputPrivacyValueAllowAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"320652927\",\n\t\t\t\"predicate\": \"inputPrivacyValueAllowUsers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"195371015\",\n\t\t\t\"predicate\": \"inputPrivacyValueDisallowContacts\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-697604407\",\n\t\t\t\"predicate\": \"inputPrivacyValueDisallowAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1877932953\",\n\t\t\t\"predicate\": \"inputPrivacyValueDisallowUsers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-123988\",\n\t\t\t\"predicate\": \"privacyValueAllowContacts\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1698855810\",\n\t\t\t\"predicate\": \"privacyValueAllowAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1297858060\",\n\t\t\t\"predicate\": \"privacyValueAllowUsers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-125240806\",\n\t\t\t\"predicate\": \"privacyValueDisallowContacts\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1955338397\",\n\t\t\t\"predicate\": \"privacyValueDisallowAll\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"209668535\",\n\t\t\t\"predicate\": \"privacyValueDisallowUsers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PrivacyRule\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1430961007\",\n\t\t\t\"predicate\": \"account.privacyRules\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rules\",\n\t\t\t\t\t\"type\": \"Vector<PrivacyRule>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PrivacyRules\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1194283041\",\n\t\t\t\"predicate\": \"accountDaysTTL\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"days\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"AccountDaysTTL\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"314130811\",\n\t\t\t\"predicate\": \"updateUserPhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1815593308\",\n\t\t\t\"predicate\": \"documentAttributeImageSize\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"297109817\",\n\t\t\t\"predicate\": \"documentAttributeAnimated\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1662637586\",\n\t\t\t\"predicate\": \"documentAttributeSticker\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mask\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"alt\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickerset\",\n\t\t\t\t\t\"type\": \"InputStickerSet\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mask_coords\",\n\t\t\t\t\t\"type\": \"flags.0?MaskCoords\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1494273227\",\n\t\t\t\"predicate\": \"documentAttributeVideo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"duration\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1739392570\",\n\t\t\t\"predicate\": \"documentAttributeAudio\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"voice\",\n\t\t\t\t\t\"type\": \"flags.10?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"duration\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"performer\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"waveform\",\n\t\t\t\t\t\"type\": \"flags.2?bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"358154344\",\n\t\t\t\"predicate\": \"documentAttributeFilename\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-244016606\",\n\t\t\t\"predicate\": \"messages.stickersNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.Stickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1970352846\",\n\t\t\t\"predicate\": \"messages.stickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers\",\n\t\t\t\t\t\"type\": \"Vector<Document>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Stickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"313694676\",\n\t\t\t\"predicate\": \"stickerPack\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"emoticon\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"documents\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"StickerPack\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-395967805\",\n\t\t\t\"predicate\": \"messages.allStickersNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.AllStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-302170017\",\n\t\t\t\"predicate\": \"messages.allStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sets\",\n\t\t\t\t\t\"type\": \"Vector<StickerSet>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AllStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1369215196\",\n\t\t\t\"predicate\": \"disabledFeature\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"feature\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DisabledFeature\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1721631396\",\n\t\t\t\"predicate\": \"updateReadHistoryInbox\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"791617983\",\n\t\t\t\"predicate\": \"updateReadHistoryOutbox\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2066640507\",\n\t\t\t\"predicate\": \"messages.affectedMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedMessages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1599050311\",\n\t\t\t\"predicate\": \"contactLinkUnknown\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ContactLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-17968211\",\n\t\t\t\"predicate\": \"contactLinkNone\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ContactLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"646922073\",\n\t\t\t\"predicate\": \"contactLinkHasPhone\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ContactLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-721239344\",\n\t\t\t\"predicate\": \"contactLinkContact\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ContactLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2139689491\",\n\t\t\t\"predicate\": \"updateWebPage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"webpage\",\n\t\t\t\t\t\"type\": \"WebPage\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-350980120\",\n\t\t\t\"predicate\": \"webPageEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"WebPage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-981018084\",\n\t\t\t\"predicate\": \"webPagePending\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"WebPage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-897446185\",\n\t\t\t\"predicate\": \"webPage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"display_url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"site_name\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"flags.3?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"flags.4?Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"embed_url\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"embed_type\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"embed_width\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"embed_height\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"duration\",\n\t\t\t\t\t\"type\": \"flags.7?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"author\",\n\t\t\t\t\t\"type\": \"flags.8?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"flags.9?Document\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"WebPage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1557277184\",\n\t\t\t\"predicate\": \"messageMediaWebPage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"webpage\",\n\t\t\t\t\t\"type\": \"WebPage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2079516406\",\n\t\t\t\"predicate\": \"authorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"device_model\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"platform\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"system_version\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"app_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"app_version\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date_created\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date_active\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ip\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"country\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"region\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"307276766\",\n\t\t\t\"predicate\": \"account.authorizations\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"authorizations\",\n\t\t\t\t\t\"type\": \"Vector<Authorization>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.Authorizations\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1764049896\",\n\t\t\t\"predicate\": \"account.noPassword\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_salt\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"email_unconfirmed_pattern\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.Password\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2081952796\",\n\t\t\t\"predicate\": \"account.password\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_salt\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_salt\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hint\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"has_recovery\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"email_unconfirmed_pattern\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.Password\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1212732749\",\n\t\t\t\"predicate\": \"account.passwordSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"email\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PasswordSettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2037289493\",\n\t\t\t\"predicate\": \"account.passwordInputSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_salt\",\n\t\t\t\t\t\"type\": \"flags.0?bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_password_hash\",\n\t\t\t\t\t\"type\": \"flags.0?bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hint\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"email\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PasswordInputSettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"326715557\",\n\t\t\t\"predicate\": \"auth.passwordRecovery\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"email_pattern\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.PasswordRecovery\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"673687578\",\n\t\t\t\"predicate\": \"inputMediaVenue\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo_point\",\n\t\t\t\t\t\"type\": \"InputGeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"address\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"provider\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"venue_id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2031269663\",\n\t\t\t\"predicate\": \"messageMediaVenue\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"GeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"address\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"provider\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"venue_id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1551583367\",\n\t\t\t\"predicate\": \"receivedNotifyMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReceivedNotifyMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1776236393\",\n\t\t\t\"predicate\": \"chatInviteEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-64092740\",\n\t\t\t\"predicate\": \"chatInviteExported\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"link\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1516793212\",\n\t\t\t\"predicate\": \"chatInviteAlready\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat\",\n\t\t\t\t\t\"type\": \"Chat\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-613092008\",\n\t\t\t\"predicate\": \"chatInvite\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"broadcast\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"public\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"megagroup\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"ChatPhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants\",\n\t\t\t\t\t\"type\": \"flags.4?Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-123931160\",\n\t\t\t\"predicate\": \"messageActionChatJoinedByLink\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1757493555\",\n\t\t\t\"predicate\": \"updateReadMessagesContents\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-4838507\",\n\t\t\t\"predicate\": \"inputStickerSetEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputStickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1645763991\",\n\t\t\t\"predicate\": \"inputStickerSetID\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputStickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2044933984\",\n\t\t\t\"predicate\": \"inputStickerSetShortName\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"short_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputStickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-852477119\",\n\t\t\t\"predicate\": \"stickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"installed\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"archived\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"official\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"masks\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"short_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"StickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1240849242\",\n\t\t\t\"predicate\": \"messages.stickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"set\",\n\t\t\t\t\t\"type\": \"StickerSet\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"packs\",\n\t\t\t\t\t\"type\": \"Vector<StickerPack>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"documents\",\n\t\t\t\t\t\"type\": \"Vector<Document>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.StickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-787638374\",\n\t\t\t\"predicate\": \"user\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"self\",\n\t\t\t\t\t\"type\": \"flags.10?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"contact\",\n\t\t\t\t\t\"type\": \"flags.11?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mutual_contact\",\n\t\t\t\t\t\"type\": \"flags.12?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"deleted\",\n\t\t\t\t\t\"type\": \"flags.13?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot\",\n\t\t\t\t\t\"type\": \"flags.14?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_chat_history\",\n\t\t\t\t\t\"type\": \"flags.15?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_nochats\",\n\t\t\t\t\t\"type\": \"flags.16?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"verified\",\n\t\t\t\t\t\"type\": \"flags.17?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"restricted\",\n\t\t\t\t\t\"type\": \"flags.18?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"min\",\n\t\t\t\t\t\"type\": \"flags.20?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_inline_geo\",\n\t\t\t\t\t\"type\": \"flags.21?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"flags.0?long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"flags.3?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone\",\n\t\t\t\t\t\"type\": \"flags.4?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"flags.5?UserProfilePhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"status\",\n\t\t\t\t\t\"type\": \"flags.6?UserStatus\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_info_version\",\n\t\t\t\t\t\"type\": \"flags.14?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"restriction_reason\",\n\t\t\t\t\t\"type\": \"flags.18?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_inline_placeholder\",\n\t\t\t\t\t\"type\": \"flags.19?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1032140601\",\n\t\t\t\"predicate\": \"botCommand\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"command\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotCommand\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1729618630\",\n\t\t\t\"predicate\": \"botInfo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"commands\",\n\t\t\t\t\t\"type\": \"Vector<BotCommand>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInfo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1560655744\",\n\t\t\t\"predicate\": \"keyboardButton\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2002815875\",\n\t\t\t\"predicate\": \"keyboardButtonRow\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"buttons\",\n\t\t\t\t\t\"type\": \"Vector<KeyboardButton>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButtonRow\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1606526075\",\n\t\t\t\"predicate\": \"replyKeyboardHide\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"selective\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReplyMarkup\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-200242528\",\n\t\t\t\"predicate\": \"replyKeyboardForceReply\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"single_use\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"selective\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReplyMarkup\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"889353612\",\n\t\t\t\"predicate\": \"replyKeyboardMarkup\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"resize\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"single_use\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"selective\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rows\",\n\t\t\t\t\t\"type\": \"Vector<KeyboardButtonRow>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReplyMarkup\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2072935910\",\n\t\t\t\"predicate\": \"inputPeerUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-668391402\",\n\t\t\t\"predicate\": \"inputUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputUser\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1350696044\",\n\t\t\t\"predicate\": \"help.appChangelogEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.AppChangelog\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1181279933\",\n\t\t\t\"predicate\": \"help.appChangelog\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"help.AppChangelog\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1148011883\",\n\t\t\t\"predicate\": \"messageEntityUnknown\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-100378723\",\n\t\t\t\"predicate\": \"messageEntityMention\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1868782349\",\n\t\t\t\"predicate\": \"messageEntityHashtag\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1827637959\",\n\t\t\t\"predicate\": \"messageEntityBotCommand\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1859134776\",\n\t\t\t\"predicate\": \"messageEntityUrl\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1692693954\",\n\t\t\t\"predicate\": \"messageEntityEmail\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1117713463\",\n\t\t\t\"predicate\": \"messageEntityBold\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2106619040\",\n\t\t\t\"predicate\": \"messageEntityItalic\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"681706865\",\n\t\t\t\"predicate\": \"messageEntityCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1938967520\",\n\t\t\t\"predicate\": \"messageEntityPre\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"language\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1990644519\",\n\t\t\t\"predicate\": \"messageEntityTextUrl\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"301019932\",\n\t\t\t\"predicate\": \"updateShortSentMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"out\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media\",\n\t\t\t\t\t\"type\": \"flags.9?MessageMedia\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.7?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-292807034\",\n\t\t\t\"predicate\": \"inputChannelEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputChannel\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1343524562\",\n\t\t\t\"predicate\": \"inputChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputChannel\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1109531342\",\n\t\t\t\"predicate\": \"peerChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Peer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"548253432\",\n\t\t\t\"predicate\": \"inputPeerChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1588737454\",\n\t\t\t\"predicate\": \"channel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"creator\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"kicked\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"left\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"editor\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"moderator\",\n\t\t\t\t\t\"type\": \"flags.4?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"broadcast\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"verified\",\n\t\t\t\t\t\"type\": \"flags.7?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"megagroup\",\n\t\t\t\t\t\"type\": \"flags.8?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"restricted\",\n\t\t\t\t\t\"type\": \"flags.9?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"democracy\",\n\t\t\t\t\t\"type\": \"flags.10?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"signatures\",\n\t\t\t\t\t\"type\": \"flags.11?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"min\",\n\t\t\t\t\t\"type\": \"flags.12?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"flags.13?long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"flags.6?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"ChatPhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"restriction_reason\",\n\t\t\t\t\t\"type\": \"flags.9?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Chat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2059962289\",\n\t\t\t\"predicate\": \"channelForbidden\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"broadcast\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"megagroup\",\n\t\t\t\t\t\"type\": \"flags.8?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Chat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2131196633\",\n\t\t\t\"predicate\": \"contacts.resolvedPeer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.ResolvedPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1009430225\",\n\t\t\t\"predicate\": \"channelFull\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"can_view_participants\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"can_set_username\",\n\t\t\t\t\t\"type\": \"flags.6?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"about\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants_count\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"admins_count\",\n\t\t\t\t\t\"type\": \"flags.1?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"kicked_count\",\n\t\t\t\t\t\"type\": \"flags.2?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_inbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_outbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unread_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"notify_settings\",\n\t\t\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"exported_invite\",\n\t\t\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_info\",\n\t\t\t\t\t\"type\": \"Vector<BotInfo>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"migrated_from_chat_id\",\n\t\t\t\t\t\"type\": \"flags.4?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"migrated_from_max_id\",\n\t\t\t\t\t\"type\": \"flags.4?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pinned_msg_id\",\n\t\t\t\t\t\"type\": \"flags.5?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"182649427\",\n\t\t\t\"predicate\": \"messageRange\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"min_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageRange\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1725551049\",\n\t\t\t\"predicate\": \"messages.channelMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1781355374\",\n\t\t\t\"predicate\": \"messageActionChannelCreate\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-352032773\",\n\t\t\t\"predicate\": \"updateChannelTooLong\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1227598250\",\n\t\t\t\"predicate\": \"updateChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1656358105\",\n\t\t\t\"predicate\": \"updateNewChannelMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"Message\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1108669311\",\n\t\t\t\"predicate\": \"updateReadChannelInbox\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1015733815\",\n\t\t\t\"predicate\": \"updateDeleteChannelMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1734268085\",\n\t\t\t\"predicate\": \"updateChannelMessageViews\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"views\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1041346555\",\n\t\t\t\"predicate\": \"updates.channelDifferenceEmpty\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"final\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"timeout\",\n\t\t\t\t\t\"type\": \"flags.1?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.ChannelDifference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1091431943\",\n\t\t\t\"predicate\": \"updates.channelDifferenceTooLong\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"final\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"timeout\",\n\t\t\t\t\t\"type\": \"flags.1?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"top_message\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_inbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"read_outbox_max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unread_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.ChannelDifference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"543450958\",\n\t\t\t\"predicate\": \"updates.channelDifference\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"final\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"timeout\",\n\t\t\t\t\t\"type\": \"flags.1?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"other_updates\",\n\t\t\t\t\t\"type\": \"Vector<Update>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.ChannelDifference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1798033689\",\n\t\t\t\"predicate\": \"channelMessagesFilterEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelMessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-847783593\",\n\t\t\t\"predicate\": \"channelMessagesFilter\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"exclude_new_messages\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ranges\",\n\t\t\t\t\t\"type\": \"Vector<MessageRange>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelMessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"367766557\",\n\t\t\t\"predicate\": \"channelParticipant\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1557620115\",\n\t\t\t\"predicate\": \"channelParticipantSelf\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1861910545\",\n\t\t\t\"predicate\": \"channelParticipantModerator\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1743180447\",\n\t\t\t\"predicate\": \"channelParticipantEditor\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1933187430\",\n\t\t\t\"predicate\": \"channelParticipantKicked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"kicked_by\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-471670279\",\n\t\t\t\"predicate\": \"channelParticipantCreator\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-566281095\",\n\t\t\t\"predicate\": \"channelParticipantsRecent\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantsFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1268741783\",\n\t\t\t\"predicate\": \"channelParticipantsAdmins\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantsFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1010285434\",\n\t\t\t\"predicate\": \"channelParticipantsKicked\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantsFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1299865402\",\n\t\t\t\"predicate\": \"channelRoleEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantRole\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1776756363\",\n\t\t\t\"predicate\": \"channelRoleModerator\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantRole\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2113143156\",\n\t\t\t\"predicate\": \"channelRoleEditor\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantRole\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-177282392\",\n\t\t\t\"predicate\": \"channels.channelParticipants\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participants\",\n\t\t\t\t\t\"type\": \"Vector<ChannelParticipant>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"channels.ChannelParticipants\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-791039645\",\n\t\t\t\"predicate\": \"channels.channelParticipant\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"participant\",\n\t\t\t\t\t\"type\": \"ChannelParticipant\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"channels.ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-636267638\",\n\t\t\t\"predicate\": \"chatParticipantCreator\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-489233354\",\n\t\t\t\"predicate\": \"chatParticipantAdmin\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"inviter_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1855224129\",\n\t\t\t\"predicate\": \"updateChatAdmins\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"enabled\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1232070311\",\n\t\t\t\"predicate\": \"updateChatParticipantAdmin\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"is_admin\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1371385889\",\n\t\t\t\"predicate\": \"messageActionChatMigrateTo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1336546578\",\n\t\t\t\"predicate\": \"messageActionChannelMigrateFrom\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1328445861\",\n\t\t\t\"predicate\": \"channelParticipantsBots\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"ChannelParticipantsFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-236044656\",\n\t\t\t\"predicate\": \"help.termsOfService\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"help.TermsOfService\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1753886890\",\n\t\t\t\"predicate\": \"updateNewStickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickerset\",\n\t\t\t\t\t\"type\": \"messages.StickerSet\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"196268545\",\n\t\t\t\"predicate\": \"updateStickerSetsOrder\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"masks\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"order\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1135492588\",\n\t\t\t\"predicate\": \"updateStickerSets\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"372165663\",\n\t\t\t\"predicate\": \"foundGif\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"thumb_url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FoundGif\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1670052855\",\n\t\t\t\"predicate\": \"foundGifCached\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"Document\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FoundGif\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1212395773\",\n\t\t\t\"predicate\": \"inputMediaGifExternal\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1158290442\",\n\t\t\t\"predicate\": \"messages.foundGifs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"next_offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"results\",\n\t\t\t\t\t\"type\": \"Vector<FoundGif>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.FoundGifs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-402498398\",\n\t\t\t\"predicate\": \"messages.savedGifsNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.SavedGifs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"772213157\",\n\t\t\t\"predicate\": \"messages.savedGifs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"gifs\",\n\t\t\t\t\t\"type\": \"Vector<Document>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SavedGifs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1821035490\",\n\t\t\t\"predicate\": \"updateSavedGifs\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"691006739\",\n\t\t\t\"predicate\": \"inputBotInlineMessageMediaAuto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1036876423\",\n\t\t\t\"predicate\": \"inputBotInlineMessageText\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.1?Vector<MessageEntity>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"750510426\",\n\t\t\t\"predicate\": \"inputBotInlineResult\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"flags.3?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"thumb_url\",\n\t\t\t\t\t\"type\": \"flags.4?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_url\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_type\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"duration\",\n\t\t\t\t\t\"type\": \"flags.7?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"175419739\",\n\t\t\t\"predicate\": \"botInlineMessageMediaAuto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1937807902\",\n\t\t\t\"predicate\": \"botInlineMessageText\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.1?Vector<MessageEntity>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1679053127\",\n\t\t\t\"predicate\": \"botInlineResult\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"flags.3?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"thumb_url\",\n\t\t\t\t\t\"type\": \"flags.4?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_url\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"content_type\",\n\t\t\t\t\t\"type\": \"flags.5?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"w\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"h\",\n\t\t\t\t\t\"type\": \"flags.6?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"duration\",\n\t\t\t\t\t\"type\": \"flags.7?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"BotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"627509670\",\n\t\t\t\"predicate\": \"messages.botResults\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"gallery\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"next_offset\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"switch_pm\",\n\t\t\t\t\t\"type\": \"flags.2?InlineBotSwitchPM\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"results\",\n\t\t\t\t\t\"type\": \"Vector<BotInlineResult>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.BotResults\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1417832080\",\n\t\t\t\"predicate\": \"updateBotInlineQuery\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"flags.0?GeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"239663460\",\n\t\t\t\"predicate\": \"updateBotInlineSend\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"flags.0?GeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"flags.1?InputBotInlineMessageID\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1358283666\",\n\t\t\t\"predicate\": \"inputMessagesFilterVoice\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"928101534\",\n\t\t\t\"predicate\": \"inputMessagesFilterMusic\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1107622874\",\n\t\t\t\"predicate\": \"inputPrivacyKeyChatInvite\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"InputPrivacyKey\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1343122938\",\n\t\t\t\"predicate\": \"privacyKeyChatInvite\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"PrivacyKey\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"524838915\",\n\t\t\t\"predicate\": \"exportedMessageLink\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"link\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ExportedMessageLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-947462709\",\n\t\t\t\"predicate\": \"messageFwdHeader\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"from_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"flags.1?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_post\",\n\t\t\t\t\t\"type\": \"flags.2?int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageFwdHeader\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"457133559\",\n\t\t\t\"predicate\": \"updateEditChannelMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"Message\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1738988427\",\n\t\t\t\"predicate\": \"updateChannelPinnedMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1799538451\",\n\t\t\t\"predicate\": \"messageActionPinMessage\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1923290508\",\n\t\t\t\"predicate\": \"auth.codeTypeSms\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"auth.CodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1948046307\",\n\t\t\t\"predicate\": \"auth.codeTypeCall\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"auth.CodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"577556219\",\n\t\t\t\"predicate\": \"auth.codeTypeFlashCall\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"auth.CodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1035688326\",\n\t\t\t\"predicate\": \"auth.sentCodeTypeApp\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1073693790\",\n\t\t\t\"predicate\": \"auth.sentCodeTypeSms\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1398007207\",\n\t\t\t\"predicate\": \"auth.sentCodeTypeCall\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1425815847\",\n\t\t\t\"predicate\": \"auth.sentCodeTypeFlashCall\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pattern\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCodeType\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"629866245\",\n\t\t\t\"predicate\": \"keyboardButtonUrl\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1748655686\",\n\t\t\t\"predicate\": \"keyboardButtonCallback\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1318425559\",\n\t\t\t\"predicate\": \"keyboardButtonRequestPhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-59151553\",\n\t\t\t\"predicate\": \"keyboardButtonRequestGeoLocation\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"90744648\",\n\t\t\t\"predicate\": \"keyboardButtonSwitchInline\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"same_peer\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1218642516\",\n\t\t\t\"predicate\": \"replyInlineMarkup\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rows\",\n\t\t\t\t\t\"type\": \"Vector<KeyboardButtonRow>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ReplyMarkup\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1324486149\",\n\t\t\t\"predicate\": \"messages.botCallbackAnswer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"alert\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"has_url\",\n\t\t\t\t\t\"type\": \"flags.3?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.BotCallbackAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-415938591\",\n\t\t\t\"predicate\": \"updateBotCallbackQuery\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_instance\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"flags.0?bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"game_short_name\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"649453030\",\n\t\t\t\"predicate\": \"messages.messageEditData\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.MessageEditData\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-469536605\",\n\t\t\t\"predicate\": \"updateEditMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"Message\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts_count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-190472735\",\n\t\t\t\"predicate\": \"inputBotInlineMessageMediaGeo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo_point\",\n\t\t\t\t\t\"type\": \"InputGeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1431327288\",\n\t\t\t\"predicate\": \"inputBotInlineMessageMediaVenue\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo_point\",\n\t\t\t\t\t\"type\": \"InputGeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"address\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"provider\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"venue_id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"766443943\",\n\t\t\t\"predicate\": \"inputBotInlineMessageMediaContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"982505656\",\n\t\t\t\"predicate\": \"botInlineMessageMediaGeo\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"GeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1130767150\",\n\t\t\t\"predicate\": \"botInlineMessageMediaVenue\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo\",\n\t\t\t\t\t\"type\": \"GeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"address\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"provider\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"venue_id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"904770772\",\n\t\t\t\"predicate\": \"botInlineMessageMediaContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1462213465\",\n\t\t\t\"predicate\": \"inputBotInlineResultPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"InputPhoto\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-459324\",\n\t\t\t\"predicate\": \"inputBotInlineResultDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"InputDocument\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"400266251\",\n\t\t\t\"predicate\": \"botInlineMediaResult\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"flags.0?Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"flags.1?Document\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"flags.3?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"BotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1995686519\",\n\t\t\t\"predicate\": \"inputBotInlineMessageID\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessageID\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-103646630\",\n\t\t\t\"predicate\": \"updateInlineBotCallbackQuery\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessageID\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_instance\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"flags.0?bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"game_short_name\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1008755359\",\n\t\t\t\"predicate\": \"inlineBotSwitchPM\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"start_param\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InlineBotSwitchPM\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"863093588\",\n\t\t\t\"predicate\": \"messages.peerDialogs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dialogs\",\n\t\t\t\t\t\"type\": \"Vector<Dialog>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"Vector<Message>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"state\",\n\t\t\t\t\t\"type\": \"updates.State\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.PeerDialogs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-305282981\",\n\t\t\t\"predicate\": \"topPeer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rating\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"TopPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1419371685\",\n\t\t\t\"predicate\": \"topPeerCategoryBotsPM\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"TopPeerCategory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"344356834\",\n\t\t\t\"predicate\": \"topPeerCategoryBotsInline\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"TopPeerCategory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"104314861\",\n\t\t\t\"predicate\": \"topPeerCategoryCorrespondents\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"TopPeerCategory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1122524854\",\n\t\t\t\"predicate\": \"topPeerCategoryGroups\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"TopPeerCategory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"371037736\",\n\t\t\t\"predicate\": \"topPeerCategoryChannels\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"TopPeerCategory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-75283823\",\n\t\t\t\"predicate\": \"topPeerCategoryPeers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"category\",\n\t\t\t\t\t\"type\": \"TopPeerCategory\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peers\",\n\t\t\t\t\t\"type\": \"Vector<TopPeer>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"TopPeerCategoryPeers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-567906571\",\n\t\t\t\"predicate\": \"contacts.topPeersNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"contacts.TopPeers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1891070632\",\n\t\t\t\"predicate\": \"contacts.topPeers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"categories\",\n\t\t\t\t\t\"type\": \"Vector<TopPeerCategoryPeers>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chats\",\n\t\t\t\t\t\"type\": \"Vector<Chat>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.TopPeers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"892193368\",\n\t\t\t\"predicate\": \"messageEntityMentionName\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"546203849\",\n\t\t\t\"predicate\": \"inputMessageEntityMentionName\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageEntity\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"975236280\",\n\t\t\t\"predicate\": \"inputMessagesFilterChatPhotos\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessagesFilter\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"634833351\",\n\t\t\t\"predicate\": \"updateReadChannelOutbox\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-299124375\",\n\t\t\t\"predicate\": \"updateDraftMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"Peer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"draft\",\n\t\t\t\t\t\"type\": \"DraftMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1169445179\",\n\t\t\t\"predicate\": \"draftMessageEmpty\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"DraftMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-40996577\",\n\t\t\t\"predicate\": \"draftMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.3?Vector<MessageEntity>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DraftMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1615153660\",\n\t\t\t\"predicate\": \"messageActionHistoryClear\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"82699215\",\n\t\t\t\"predicate\": \"messages.featuredStickersNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.FeaturedStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-123893531\",\n\t\t\t\"predicate\": \"messages.featuredStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sets\",\n\t\t\t\t\t\"type\": \"Vector<StickerSetCovered>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unread\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.FeaturedStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1461528386\",\n\t\t\t\"predicate\": \"updateReadFeaturedStickers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"186120336\",\n\t\t\t\"predicate\": \"messages.recentStickersNotModified\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.RecentStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1558317424\",\n\t\t\t\"predicate\": \"messages.recentStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickers\",\n\t\t\t\t\t\"type\": \"Vector<Document>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.RecentStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1706939360\",\n\t\t\t\"predicate\": \"updateRecentStickers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1338747336\",\n\t\t\t\"predicate\": \"messages.archivedStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"count\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sets\",\n\t\t\t\t\t\"type\": \"Vector<StickerSetCovered>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.ArchivedStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"946083368\",\n\t\t\t\"predicate\": \"messages.stickerSetInstallResultSuccess\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.StickerSetInstallResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"904138920\",\n\t\t\t\"predicate\": \"messages.stickerSetInstallResultArchive\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sets\",\n\t\t\t\t\t\"type\": \"Vector<StickerSetCovered>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.StickerSetInstallResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1678812626\",\n\t\t\t\"predicate\": \"stickerSetCovered\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"set\",\n\t\t\t\t\t\"type\": \"StickerSet\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"cover\",\n\t\t\t\t\t\"type\": \"Document\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"StickerSetCovered\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1574314746\",\n\t\t\t\"predicate\": \"updateConfig\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"861169551\",\n\t\t\t\"predicate\": \"updatePtsChanged\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Update\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1252045032\",\n\t\t\t\"predicate\": \"inputMediaPhotoExternal\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-437690244\",\n\t\t\t\"predicate\": \"inputMediaDocumentExternal\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"caption\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"872932635\",\n\t\t\t\"predicate\": \"stickerSetMultiCovered\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"set\",\n\t\t\t\t\t\"type\": \"StickerSet\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"covers\",\n\t\t\t\t\t\"type\": \"Vector<Document>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"StickerSetCovered\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1361650766\",\n\t\t\t\"predicate\": \"maskCoords\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"n\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"x\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"y\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"zoom\",\n\t\t\t\t\t\"type\": \"double\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MaskCoords\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1744710921\",\n\t\t\t\"predicate\": \"documentAttributeHasStickers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"DocumentAttribute\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1251549527\",\n\t\t\t\"predicate\": \"inputStickeredMediaPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputPhoto\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputStickeredMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"70813275\",\n\t\t\t\"predicate\": \"inputStickeredMediaDocument\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputDocument\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputStickeredMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1107729093\",\n\t\t\t\"predicate\": \"game\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"short_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"description\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"Photo\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"document\",\n\t\t\t\t\t\"type\": \"flags.0?Document\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Game\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1336154098\",\n\t\t\t\"predicate\": \"inputBotInlineResultGame\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"short_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"send_message\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1262639204\",\n\t\t\t\"predicate\": \"inputBotInlineMessageGame\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputBotInlineMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-580219064\",\n\t\t\t\"predicate\": \"sendMessageGamePlayAction\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"SendMessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-38694904\",\n\t\t\t\"predicate\": \"messageMediaGame\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"game\",\n\t\t\t\t\t\"type\": \"Game\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-750828557\",\n\t\t\t\"predicate\": \"inputMediaGame\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputGame\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"53231223\",\n\t\t\t\"predicate\": \"inputGameID\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"access_hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputGame\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1020139510\",\n\t\t\t\"predicate\": \"inputGameShortName\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"short_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"InputGame\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1358175439\",\n\t\t\t\"predicate\": \"keyboardButtonGame\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"text\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"KeyboardButton\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1834538890\",\n\t\t\t\"predicate\": \"messageActionGameScore\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"game_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"score\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageAction\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1493171408\",\n\t\t\t\"predicate\": \"highScore\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pos\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"score\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"HighScore\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1707344487\",\n\t\t\t\"predicate\": \"messages.highScores\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"scores\",\n\t\t\t\t\t\"type\": \"Vector<HighScore>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<User>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.HighScores\"\n\t\t}\n\t],\n\t\"methods\": [\n\t\t{\n\t\t\t\"id\": \"-878758099\",\n\t\t\t\"method\": \"invokeAfterMsg\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"!X\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"X\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1036301552\",\n\t\t\t\"method\": \"invokeAfterMsgs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_ids\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"!X\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"X\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1877286395\",\n\t\t\t\"method\": \"auth.checkPhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.CheckedPhone\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2035355412\",\n\t\t\t\"method\": \"auth.sendCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"allow_flashcall\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_number\",\n\t\t\t\t\t\"type\": \"flags.0?Bool\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCode\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"453408308\",\n\t\t\t\"method\": \"auth.signUp\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1126886015\",\n\t\t\t\"method\": \"auth.signIn\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1461180992\",\n\t\t\t\"method\": \"auth.logOut\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1616179942\",\n\t\t\t\"method\": \"auth.resetAuthorizations\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1998331287\",\n\t\t\t\"method\": \"auth.sendInvites\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_numbers\",\n\t\t\t\t\t\"type\": \"Vector<string>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-440401971\",\n\t\t\t\"method\": \"auth.exportAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dc_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.ExportedAuthorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-470837741\",\n\t\t\t\"method\": \"auth.importAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-841733627\",\n\t\t\t\"method\": \"auth.bindTempAuthKey\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"perm_auth_key_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"expires_at\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"encrypted_message\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1669245048\",\n\t\t\t\"method\": \"account.registerDevice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"token_type\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"token\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1707432768\",\n\t\t\t\"method\": \"account.unregisterDevice\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"token_type\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"token\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2067899501\",\n\t\t\t\"method\": \"account.updateNotifySettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"settings\",\n\t\t\t\t\t\"type\": \"InputPeerNotifySettings\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"313765169\",\n\t\t\t\"method\": \"account.getNotifySettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputNotifyPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PeerNotifySettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-612493497\",\n\t\t\t\"method\": \"account.resetNotifySettings\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2018596725\",\n\t\t\t\"method\": \"account.updateProfile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_name\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last_name\",\n\t\t\t\t\t\"type\": \"flags.1?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"about\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1713919532\",\n\t\t\t\"method\": \"account.updateStatus\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offline\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1068696894\",\n\t\t\t\"method\": \"account.getWallPapers\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Vector<WallPaper>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1374118561\",\n\t\t\t\"method\": \"account.reportPeer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reason\",\n\t\t\t\t\t\"type\": \"ReportReason\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"227648840\",\n\t\t\t\"method\": \"users.getUsers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<User>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-902781519\",\n\t\t\t\"method\": \"users.getFullUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-995929106\",\n\t\t\t\"method\": \"contacts.getStatuses\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Vector<ContactStatus>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"583445000\",\n\t\t\t\"method\": \"contacts.getContacts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Contacts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-634342611\",\n\t\t\t\"method\": \"contacts.importContacts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"contacts\",\n\t\t\t\t\t\"type\": \"Vector<InputContact>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"replace\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.ImportedContacts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1902823612\",\n\t\t\t\"method\": \"contacts.deleteContact\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Link\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1504393374\",\n\t\t\t\"method\": \"contacts.deleteContacts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"858475004\",\n\t\t\t\"method\": \"contacts.block\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-448724803\",\n\t\t\t\"method\": \"contacts.unblock\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-176409329\",\n\t\t\t\"method\": \"contacts.getBlocked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Blocked\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2065352905\",\n\t\t\t\"method\": \"contacts.exportCard\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Vector<int>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1340184318\",\n\t\t\t\"method\": \"contacts.importCard\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"export_card\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1109588596\",\n\t\t\t\"method\": \"messages.getMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1799878989\",\n\t\t\t\"method\": \"messages.getDialogs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Dialogs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1347868602\",\n\t\t\t\"method\": \"messages.getHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"add_offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"min_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-732523960\",\n\t\t\t\"method\": \"messages.search\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"filter\",\n\t\t\t\t\t\"type\": \"MessagesFilter\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"min_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"238054714\",\n\t\t\t\"method\": \"messages.readHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedMessages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"469850889\",\n\t\t\t\"method\": \"messages.deleteHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"just_clear\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedHistory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1510897371\",\n\t\t\t\"method\": \"messages.deleteMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedMessages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"94983360\",\n\t\t\t\"method\": \"messages.receivedMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<ReceivedNotifyMessage>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1551737264\",\n\t\t\t\"method\": \"messages.setTyping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"action\",\n\t\t\t\t\t\"type\": \"SendMessageAction\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-91733382\",\n\t\t\t\"method\": \"messages.sendMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"background\",\n\t\t\t\t\t\"type\": \"flags.6?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"clear_draft\",\n\t\t\t\t\t\"type\": \"flags.7?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.3?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-923703407\",\n\t\t\t\"method\": \"messages.sendMedia\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"background\",\n\t\t\t\t\t\"type\": \"flags.6?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"clear_draft\",\n\t\t\t\t\t\"type\": \"flags.7?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media\",\n\t\t\t\t\t\"type\": \"InputMedia\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1888354709\",\n\t\t\t\"method\": \"messages.forwardMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"background\",\n\t\t\t\t\t\"type\": \"flags.6?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"with_my_score\",\n\t\t\t\t\t\"type\": \"flags.8?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"from_peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"to_peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-820669733\",\n\t\t\t\"method\": \"messages.reportSpam\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1460572005\",\n\t\t\t\"method\": \"messages.hideReportSpam\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"913498268\",\n\t\t\t\"method\": \"messages.getPeerSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"PeerSettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1013621127\",\n\t\t\t\"method\": \"messages.getChats\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Chats\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"998448230\",\n\t\t\t\"method\": \"messages.getFullChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.ChatFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-599447467\",\n\t\t\t\"method\": \"messages.editChatTitle\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-900957736\",\n\t\t\t\"method\": \"messages.editChatPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"InputChatPhoto\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-106911223\",\n\t\t\t\"method\": \"messages.addChatUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"fwd_limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-530505962\",\n\t\t\t\"method\": \"messages.deleteChatUser\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"164303470\",\n\t\t\t\"method\": \"messages.createChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-304838614\",\n\t\t\t\"method\": \"updates.getState\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"updates.State\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"168039573\",\n\t\t\t\"method\": \"updates.getDifference\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"qts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.Difference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-256159406\",\n\t\t\t\"method\": \"photos.updateProfilePhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputPhoto\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"UserProfilePhoto\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1328726168\",\n\t\t\t\"method\": \"photos.uploadProfilePhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputFile\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"photos.Photo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2016444625\",\n\t\t\t\"method\": \"photos.deletePhotos\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<InputPhoto>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<long>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1291540959\",\n\t\t\t\"method\": \"upload.saveFilePart\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_part\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-475607115\",\n\t\t\t\"method\": \"upload.getFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"location\",\n\t\t\t\t\t\"type\": \"InputFileLocation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"upload.File\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-990308245\",\n\t\t\t\"method\": \"help.getConfig\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Config\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"531836966\",\n\t\t\t\"method\": \"help.getNearestDc\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"NearestDc\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1372724842\",\n\t\t\t\"method\": \"help.getAppUpdate\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.AppUpdate\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1862465352\",\n\t\t\t\"method\": \"help.saveAppLog\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"events\",\n\t\t\t\t\t\"type\": \"Vector<InputAppEvent>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1295590211\",\n\t\t\t\"method\": \"help.getInviteText\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.InviteText\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1848823128\",\n\t\t\t\"method\": \"photos.getUserPhotos\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"photos.Photos\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"865483769\",\n\t\t\t\"method\": \"messages.forwardMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"651135312\",\n\t\t\t\"method\": \"messages.getDhConfig\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"version\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_length\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.DhConfig\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-162681021\",\n\t\t\t\"method\": \"messages.requestEncryption\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_a\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1035731989\",\n\t\t\t\"method\": \"messages.acceptEncryption\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_b\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key_fingerprint\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"EncryptedChat\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-304536635\",\n\t\t\t\"method\": \"messages.discardEncryption\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2031374829\",\n\t\t\t\"method\": \"messages.setEncryptedTyping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"typing\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2135648522\",\n\t\t\t\"method\": \"messages.readEncryptedHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1451792525\",\n\t\t\t\"method\": \"messages.sendEncrypted\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SentEncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1701831834\",\n\t\t\t\"method\": \"messages.sendEncryptedFile\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file\",\n\t\t\t\t\t\"type\": \"InputEncryptedFile\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SentEncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"852769188\",\n\t\t\t\"method\": \"messages.sendEncryptedService\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputEncryptedChat\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SentEncryptedMessage\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1436924774\",\n\t\t\t\"method\": \"messages.receivedQueue\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_qts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<long>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-562337987\",\n\t\t\t\"method\": \"upload.saveBigFilePart\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_part\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"file_total_parts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1769565673\",\n\t\t\t\"method\": \"initConnection\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"device_model\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"system_version\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"app_version\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"lang_code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"!X\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"X\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1663104819\",\n\t\t\t\"method\": \"help.getSupport\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.Support\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"916930423\",\n\t\t\t\"method\": \"messages.readMessageContents\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedMessages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"655677548\",\n\t\t\t\"method\": \"account.checkUsername\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1040964988\",\n\t\t\t\"method\": \"account.updateUsername\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"301470424\",\n\t\t\t\"method\": \"contacts.search\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.Found\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-623130288\",\n\t\t\t\"method\": \"account.getPrivacy\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key\",\n\t\t\t\t\t\"type\": \"InputPrivacyKey\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PrivacyRules\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-906486552\",\n\t\t\t\"method\": \"account.setPrivacy\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"key\",\n\t\t\t\t\t\"type\": \"InputPrivacyKey\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"rules\",\n\t\t\t\t\t\"type\": \"Vector<InputPrivacyRule>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PrivacyRules\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1099779595\",\n\t\t\t\"method\": \"account.deleteAccount\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reason\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"150761757\",\n\t\t\t\"method\": \"account.getAccountTTL\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"AccountDaysTTL\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"608323678\",\n\t\t\t\"method\": \"account.setAccountTTL\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ttl\",\n\t\t\t\t\t\"type\": \"AccountDaysTTL\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-627372787\",\n\t\t\t\"method\": \"invokeWithLayer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"layer\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"!X\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"X\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-113456221\",\n\t\t\t\"method\": \"contacts.resolveUsername\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.ResolvedPeer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"149257707\",\n\t\t\t\"method\": \"account.sendChangePhoneCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"allow_flashcall\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_number\",\n\t\t\t\t\t\"type\": \"flags.0?Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCode\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1891839707\",\n\t\t\t\"method\": \"account.changePhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"User\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"479598769\",\n\t\t\t\"method\": \"messages.getAllStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AllStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"954152242\",\n\t\t\t\"method\": \"account.updateDeviceLocked\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"period\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1738800940\",\n\t\t\t\"method\": \"auth.importBotAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"api_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot_auth_token\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"623001124\",\n\t\t\t\"method\": \"messages.getWebPagePreview\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageMedia\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-484392616\",\n\t\t\t\"method\": \"account.getAuthorizations\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"account.Authorizations\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-545786948\",\n\t\t\t\"method\": \"account.resetAuthorization\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1418342645\",\n\t\t\t\"method\": \"account.getPassword\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"account.Password\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1131605573\",\n\t\t\t\"method\": \"account.getPasswordSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_password_hash\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"account.PasswordSettings\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-92517498\",\n\t\t\t\"method\": \"account.updatePasswordSettings\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_password_hash\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_settings\",\n\t\t\t\t\t\"type\": \"account.PasswordInputSettings\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"174260510\",\n\t\t\t\"method\": \"auth.checkPassword\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"password_hash\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-661144474\",\n\t\t\t\"method\": \"auth.requestPasswordRecovery\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"auth.PasswordRecovery\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1319464594\",\n\t\t\t\"method\": \"auth.recoverPassword\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.Authorization\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1080796745\",\n\t\t\t\"method\": \"invokeWithoutUpdates\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"!X\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"X\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2106086025\",\n\t\t\t\"method\": \"messages.exportChatInvite\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1051570619\",\n\t\t\t\"method\": \"messages.checkChatInvite\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1817183516\",\n\t\t\t\"method\": \"messages.importChatInvite\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"639215886\",\n\t\t\t\"method\": \"messages.getStickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickerset\",\n\t\t\t\t\t\"type\": \"InputStickerSet\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.StickerSet\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-946871200\",\n\t\t\t\"method\": \"messages.installStickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickerset\",\n\t\t\t\t\t\"type\": \"InputStickerSet\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"archived\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.StickerSetInstallResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-110209570\",\n\t\t\t\"method\": \"messages.uninstallStickerSet\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"stickerset\",\n\t\t\t\t\t\"type\": \"InputStickerSet\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-421563528\",\n\t\t\t\"method\": \"messages.startBot\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"start_param\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1189013126\",\n\t\t\t\"method\": \"help.getAppChangelog\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.AppChangelog\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-993483427\",\n\t\t\t\"method\": \"messages.getMessagesViews\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"increment\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<int>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-871347913\",\n\t\t\t\"method\": \"channels.readHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2067661490\",\n\t\t\t\"method\": \"channels.deleteMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedMessages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-787622117\",\n\t\t\t\"method\": \"channels.deleteUserHistory\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AffectedHistory\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-32999408\",\n\t\t\t\"method\": \"channels.reportSpam\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1814580409\",\n\t\t\t\"method\": \"channels.getMessages\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<int>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"618237842\",\n\t\t\t\"method\": \"channels.getParticipants\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"filter\",\n\t\t\t\t\t\"type\": \"ChannelParticipantsFilter\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"channels.ChannelParticipants\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1416484774\",\n\t\t\t\"method\": \"channels.getParticipant\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"channels.ChannelParticipant\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"176122811\",\n\t\t\t\"method\": \"channels.getChannels\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<InputChannel>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Chats\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"141781513\",\n\t\t\t\"method\": \"channels.getFullChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.ChatFull\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-192332417\",\n\t\t\t\"method\": \"channels.createChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"broadcast\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"megagroup\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"about\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"333610782\",\n\t\t\t\"method\": \"channels.editAbout\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"about\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-344583728\",\n\t\t\t\"method\": \"channels.editAdmin\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"role\",\n\t\t\t\t\t\"type\": \"ChannelParticipantRole\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1450044624\",\n\t\t\t\"method\": \"channels.editTitle\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"title\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-248621111\",\n\t\t\t\"method\": \"channels.editPhoto\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"photo\",\n\t\t\t\t\t\"type\": \"InputChatPhoto\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"283557164\",\n\t\t\t\"method\": \"channels.checkUsername\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"890549214\",\n\t\t\t\"method\": \"channels.updateUsername\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"username\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"615851205\",\n\t\t\t\"method\": \"channels.joinChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-130635115\",\n\t\t\t\"method\": \"channels.leaveChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"429865580\",\n\t\t\t\"method\": \"channels.inviteToChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\"type\": \"Vector<InputUser>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1502421484\",\n\t\t\t\"method\": \"channels.kickFromChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"kicked\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-950663035\",\n\t\t\t\"method\": \"channels.exportInvite\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ExportedChatInvite\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1072619549\",\n\t\t\t\"method\": \"channels.deleteChannel\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1154295872\",\n\t\t\t\"method\": \"updates.getChannelDifference\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"filter\",\n\t\t\t\t\t\"type\": \"ChannelMessagesFilter\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pts\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"updates.ChannelDifference\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-326379039\",\n\t\t\t\"method\": \"messages.toggleChatAdmins\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"enabled\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1444503762\",\n\t\t\t\"method\": \"messages.editChatAdmin\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"is_admin\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"363051235\",\n\t\t\t\"method\": \"messages.migrateChat\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"chat_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1640190800\",\n\t\t\t\"method\": \"messages.searchGlobal\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_date\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.Messages\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"889286899\",\n\t\t\t\"method\": \"help.getTermsOfService\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"help.TermsOfService\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2016638777\",\n\t\t\t\"method\": \"messages.reorderStickerSets\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"masks\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"order\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"864953444\",\n\t\t\t\"method\": \"messages.getDocumentByHash\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"sha256\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"size\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"mime_type\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Document\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1080395925\",\n\t\t\t\"method\": \"messages.searchGifs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.FoundGifs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2084618926\",\n\t\t\t\"method\": \"messages.getSavedGifs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.SavedGifs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"846868683\",\n\t\t\t\"method\": \"messages.saveGif\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputDocument\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unsave\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1364105629\",\n\t\t\t\"method\": \"messages.getInlineBotResults\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bot\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"geo_point\",\n\t\t\t\t\t\"type\": \"flags.0?InputGeoPoint\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.BotResults\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-346119674\",\n\t\t\t\"method\": \"messages.setInlineBotResults\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"gallery\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"private\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"results\",\n\t\t\t\t\t\"type\": \"Vector<InputBotInlineResult>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"cache_time\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"next_offset\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"switch_pm\",\n\t\t\t\t\t\"type\": \"flags.3?InlineBotSwitchPM\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1318189314\",\n\t\t\t\"method\": \"messages.sendInlineBotResult\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.5?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"background\",\n\t\t\t\t\t\"type\": \"flags.6?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"clear_draft\",\n\t\t\t\t\t\"type\": \"flags.7?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"random_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1231065863\",\n\t\t\t\"method\": \"channels.toggleInvites\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"enabled\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-934882771\",\n\t\t\t\"method\": \"channels.exportMessageLink\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ExportedMessageLink\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"527021574\",\n\t\t\t\"method\": \"channels.toggleSignatures\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"enabled\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1490162350\",\n\t\t\t\"method\": \"channels.updatePinnedMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"silent\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channel\",\n\t\t\t\t\t\"type\": \"InputChannel\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1056025023\",\n\t\t\t\"method\": \"auth.resendCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCode\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"520357240\",\n\t\t\t\"method\": \"auth.cancelCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_number\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-39416522\",\n\t\t\t\"method\": \"messages.getMessageEditData\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.MessageEditData\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-829299510\",\n\t\t\t\"method\": \"messages.editMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"flags.11?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.3?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"319564933\",\n\t\t\t\"method\": \"messages.editInlineBotMessage\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessageID\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"flags.11?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_markup\",\n\t\t\t\t\t\"type\": \"flags.2?ReplyMarkup\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.3?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2130010132\",\n\t\t\t\"method\": \"messages.getBotCallbackAnswer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"game\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"data\",\n\t\t\t\t\t\"type\": \"flags.0?bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.BotCallbackAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-920136629\",\n\t\t\t\"method\": \"messages.setBotCallbackAnswer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"alert\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"query_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"flags.0?string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"url\",\n\t\t\t\t\t\"type\": \"flags.2?string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-728224331\",\n\t\t\t\"method\": \"contacts.getTopPeers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"correspondents\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bots_pm\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bots_inline\",\n\t\t\t\t\t\"type\": \"flags.2?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"groups\",\n\t\t\t\t\t\"type\": \"flags.10?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"channels\",\n\t\t\t\t\t\"type\": \"flags.15?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"contacts.TopPeers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"451113900\",\n\t\t\t\"method\": \"contacts.resetTopPeerRating\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"category\",\n\t\t\t\t\t\"type\": \"TopPeerCategory\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"764901049\",\n\t\t\t\"method\": \"messages.getPeerDialogs\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peers\",\n\t\t\t\t\t\"type\": \"Vector<InputPeer>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.PeerDialogs\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1137057461\",\n\t\t\t\"method\": \"messages.saveDraft\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"no_webpage\",\n\t\t\t\t\t\"type\": \"flags.1?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"reply_to_msg_id\",\n\t\t\t\t\t\"type\": \"flags.0?int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entities\",\n\t\t\t\t\t\"type\": \"flags.3?Vector<MessageEntity>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1782549861\",\n\t\t\t\"method\": \"messages.getAllDrafts\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"766298703\",\n\t\t\t\"method\": \"messages.getFeaturedStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.FeaturedStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1527873830\",\n\t\t\t\"method\": \"messages.readFeaturedStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1587647177\",\n\t\t\t\"method\": \"messages.getRecentStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attached\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.RecentStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"958863608\",\n\t\t\t\"method\": \"messages.saveRecentSticker\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attached\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputDocument\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unsave\",\n\t\t\t\t\t\"type\": \"Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1986437075\",\n\t\t\t\"method\": \"messages.clearRecentStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"attached\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1475442322\",\n\t\t\t\"method\": \"messages.getArchivedStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"masks\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"offset_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"limit\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.ArchivedStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"353818557\",\n\t\t\t\"method\": \"account.sendConfirmPhoneCode\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"allow_flashcall\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"current_number\",\n\t\t\t\t\t\"type\": \"flags.0?Bool\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"auth.SentCode\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1596029123\",\n\t\t\t\"method\": \"account.confirmPhone\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code_hash\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"phone_code\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1920105769\",\n\t\t\t\"method\": \"channels.getAdminedPublicChannels\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"messages.Chats\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1706608543\",\n\t\t\t\"method\": \"messages.getMaskStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"hash\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.AllStickers\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-866424884\",\n\t\t\t\"method\": \"messages.getAttachedStickers\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"media\",\n\t\t\t\t\t\"type\": \"InputStickeredMedia\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Vector<StickerSetCovered>\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1907842680\",\n\t\t\t\"method\": \"auth.dropTempAuthKeys\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"except_auth_keys\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1896289088\",\n\t\t\t\"method\": \"messages.setGameScore\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"edit_message\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"score\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Updates\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"363700068\",\n\t\t\t\"method\": \"messages.setInlineGameScore\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"flags\",\n\t\t\t\t\t\"type\": \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"edit_message\",\n\t\t\t\t\t\"type\": \"flags.0?true\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessageID\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"score\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Bool\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-400399203\",\n\t\t\t\"method\": \"messages.getGameHighScores\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"peer\",\n\t\t\t\t\t\"type\": \"InputPeer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.HighScores\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"258170395\",\n\t\t\t\"method\": \"messages.getInlineGameHighScores\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"id\",\n\t\t\t\t\t\"type\": \"InputBotInlineMessageID\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"user_id\",\n\t\t\t\t\t\"type\": \"InputUser\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"messages.HighScores\"\n\t\t}\n\t]\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../schema/api-57.json\n// module id = 38\n// module chunks = 0","module.exports = {\n\t\"constructors\": [\n\t\t{\n\t\t\t\"id\": \"481674261\",\n\t\t\t\"predicate\": \"vector\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"Vector t\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"85337187\",\n\t\t\t\"predicate\": \"resPQ\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pq\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_public_key_fingerprints\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ResPQ\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2083955988\",\n\t\t\t\"predicate\": \"p_q_inner_data\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"pq\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"p\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_nonce\",\n\t\t\t\t\t\"type\": \"int256\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"P_Q_inner_data\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2043348061\",\n\t\t\t\"predicate\": \"server_DH_params_fail\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_nonce_hash\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Server_DH_Params\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-790100132\",\n\t\t\t\"predicate\": \"server_DH_params_ok\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"encrypted_answer\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Server_DH_Params\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1249309254\",\n\t\t\t\"predicate\": \"server_DH_inner_data\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"dh_prime\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_a\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_time\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Server_DH_inner_data\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1715713620\",\n\t\t\t\"predicate\": \"client_DH_inner_data\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"retry_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"g_b\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Client_DH_Inner_Data\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1003222836\",\n\t\t\t\"predicate\": \"dh_gen_ok\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_nonce_hash1\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Set_client_DH_params_answer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1188831161\",\n\t\t\t\"predicate\": \"dh_gen_retry\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_nonce_hash2\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Set_client_DH_params_answer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1499615742\",\n\t\t\t\"predicate\": \"dh_gen_fail\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_nonce_hash3\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Set_client_DH_params_answer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-212046591\",\n\t\t\t\"predicate\": \"rpc_result\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"req_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"result\",\n\t\t\t\t\t\"type\": \"Object\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"RpcResult\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"558156313\",\n\t\t\t\"predicate\": \"rpc_error\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"error_code\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"error_message\",\n\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"RpcError\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1579864942\",\n\t\t\t\"predicate\": \"rpc_answer_unknown\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"RpcDropAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-847714938\",\n\t\t\t\"predicate\": \"rpc_answer_dropped_running\",\n\t\t\t\"params\": [],\n\t\t\t\"type\": \"RpcDropAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1539647305\",\n\t\t\t\"predicate\": \"rpc_answer_dropped\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seq_no\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"RpcDropAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"155834844\",\n\t\t\t\"predicate\": \"future_salt\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"valid_since\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"valid_until\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"salt\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FutureSalt\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1370486635\",\n\t\t\t\"predicate\": \"future_salts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"req_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"now\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"salts\",\n\t\t\t\t\t\"type\": \"vector<future_salt>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FutureSalts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"880243653\",\n\t\t\t\"predicate\": \"pong\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ping_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Pong\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-501201412\",\n\t\t\t\"predicate\": \"destroy_session_ok\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"session_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DestroySessionRes\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1658015945\",\n\t\t\t\"predicate\": \"destroy_session_none\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"session_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DestroySessionRes\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1631450872\",\n\t\t\t\"predicate\": \"new_session_created\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"first_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"unique_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_salt\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"NewSession\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1945237724\",\n\t\t\t\"predicate\": \"msg_container\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"messages\",\n\t\t\t\t\t\"type\": \"vector<%Message>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageContainer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1538843921\",\n\t\t\t\"predicate\": \"message\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"seqno\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"body\",\n\t\t\t\t\t\"type\": \"Object\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Message\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-530561358\",\n\t\t\t\"predicate\": \"msg_copy\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"orig_message\",\n\t\t\t\t\t\"type\": \"Message\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MessageCopy\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"812830625\",\n\t\t\t\"predicate\": \"gzip_packed\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"packed_data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Object\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1658238041\",\n\t\t\t\"predicate\": \"msgs_ack\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_ids\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgsAck\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1477445615\",\n\t\t\t\"predicate\": \"bad_msg_notification\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bad_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bad_msg_seqno\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"error_code\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BadMsgNotification\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-307542917\",\n\t\t\t\"predicate\": \"bad_server_salt\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bad_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bad_msg_seqno\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"error_code\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"new_server_salt\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"BadMsgNotification\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2105940488\",\n\t\t\t\"predicate\": \"msg_resend_req\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_ids\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgResendReq\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-630588590\",\n\t\t\t\"predicate\": \"msgs_state_req\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_ids\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgsStateReq\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"81704317\",\n\t\t\t\"predicate\": \"msgs_state_info\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"req_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"info\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgsStateInfo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1933520591\",\n\t\t\t\"predicate\": \"msgs_all_info\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_ids\",\n\t\t\t\t\t\"type\": \"Vector<long>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"info\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgsAllInfo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"661470918\",\n\t\t\t\"predicate\": \"msg_detailed_info\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"answer_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"status\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgDetailedInfo\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-2137147681\",\n\t\t\t\"predicate\": \"msg_new_detailed_info\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"answer_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"bytes\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"status\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"MsgDetailedInfo\"\n\t\t}\n\t],\n\t\"methods\": [\n\t\t{\n\t\t\t\"id\": \"1615239032\",\n\t\t\t\"method\": \"req_pq\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"ResPQ\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-686627650\",\n\t\t\t\"method\": \"req_DH_params\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"p\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"q\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"public_key_fingerprint\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"encrypted_data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Server_DH_Params\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-184262881\",\n\t\t\t\"method\": \"set_client_DH_params\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"server_nonce\",\n\t\t\t\t\t\"type\": \"int128\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"encrypted_data\",\n\t\t\t\t\t\"type\": \"bytes\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Set_client_DH_params_answer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"1491380032\",\n\t\t\t\"method\": \"rpc_drop_answer\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"req_msg_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"RpcDropAnswer\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1188971260\",\n\t\t\t\"method\": \"get_future_salts\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"num\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"FutureSalts\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"2059302892\",\n\t\t\t\"method\": \"ping\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ping_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Pong\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-213746804\",\n\t\t\t\"method\": \"ping_delay_disconnect\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ping_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"disconnect_delay\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"Pong\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-414113498\",\n\t\t\t\"method\": \"destroy_session\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"session_id\",\n\t\t\t\t\t\"type\": \"long\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"DestroySessionRes\"\n\t\t},\n\t\t{\n\t\t\t\"id\": \"-1835453025\",\n\t\t\t\"method\": \"http_wait\",\n\t\t\t\"params\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_delay\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"wait_after\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"max_wait\",\n\t\t\t\t\t\"type\": \"int\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"type\": \"HttpWait\"\n\t\t}\n\t]\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../schema/mtproto-57.json\n// module id = 39\n// module chunks = 0","module.exports = (__webpack_require__(6))(124);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/axios/index.js from dll-reference vendor\n// module id = 40\n// module chunks = 0","module.exports = (__webpack_require__(6))(127);\n\n\n//////////////////\n// WEBPACK FOOTER\n// delegated ../node_modules/pako/lib/inflate.js from dll-reference vendor\n// module id = 41\n// module chunks = 0","// import 'setimmediate'\r\n\r\nexport { smartTimeout } from './smart-timeout'\r\nexport { blueDefer } from './defer'\r\nexport { CryptoWorker } from './crypto'\r\nexport { bin } from './bin'\r\nexport { forEach } from './for-each'\r\nexport { ApiManager } from './service/api-manager/index.js'\r\nexport { PureStorage } from './store'\r\n\r\nimport * as MtpTimeManager from './service/time-manager'\r\nexport { MtpTimeManager }\r\n\r\nimport * as MtpDcConfigurator from './service/dc-configurator'\r\nexport { MtpDcConfigurator }\r\n\r\nimport MtpSecureRandom from './service/secure-random'\r\nexport { MtpSecureRandom }\r\n\r\nimport * as MtpNetworker from './service/networker'\r\nexport { MtpNetworker }\r\n\r\nexport { httpClient } from './http'\r\n\r\nconsole.info('source loaded')\r\n\r\nimport { ApiManager } from './service/api-manager/index.js'\r\nexport default ApiManager\n\n\n// WEBPACK FOOTER //\n// ./index.js"],"sourceRoot":""}
\No newline at end of file