├── .dockerignore ├── .github ├── block.gif └── stats.png ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── index.js ├── package-lock.json └── package.json /.dockerignore: -------------------------------------------------------------------------------- 1 | ** 2 | !index.js 3 | !package.json 4 | !package-lock.json 5 | -------------------------------------------------------------------------------- /.github/block.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riptl/xpbot-telegram/5e7b990a531afe3143a9dee4599c5058a06a7a26/.github/block.gif -------------------------------------------------------------------------------- /.github/stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/riptl/xpbot-telegram/5e7b990a531afe3143a9dee4599c5058a06a7a26/.github/stats.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | .DS_Store 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (https://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # TypeScript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # Yarn Integrity file 56 | .yarn-integrity 57 | 58 | # dotenv environment variables file 59 | .env 60 | 61 | # next.js build output 62 | .next 63 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:15-alpine 2 | RUN addgroup -S app \ 3 | && adduser -S app -G app 4 | WORKDIR /app 5 | COPY package.json ./ 6 | RUN npm i --production 7 | COPY index.js ./ 8 | RUN chown app:app /app 9 | USER app 10 | CMD ["index.js"] 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Richard Patel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Telegram XP bot 2 | 3 | ### Blocks pictures + videos from low XP users 4 | 5 | ![Statistics](.github/block.gif) 6 | 7 | ### Keeps track of group statistics 8 | 9 | ![Statistics](.github/stats.png) 10 | 11 | Configuration: 12 | - `$REDIS_URL` Redis host:port (optional) 13 | - `$REDIS_PREFIX` Redis ZSET key prefix (one key per group) 14 | - `$TELEGRAM_TOKEN` BotFather token 15 | - `$MIN_XP` Minimum XP before pics/vids allowed 16 | - `$RATE_LIMIT` User cooldown after earning XP (seconds) 17 | - `$LESS_BOT_SPAM` Delete /xp and /rank requests + responses after a while to reduce group chat clutter 18 | - `$BOT_EXPIRATION` Time to delete bot messages from the group (requires option above) 19 | 20 | Commands: 21 | - `/xp` Get current XP 22 | - `/ranks` Get top XP users 23 | 24 | Redis keys: 25 | - `${REDIS_PREFIX}_${GROUP_ID}` Leaderboard 26 | - `${REDIS_PREFIX}_${GROUP_ID}_DELETED_COUNT` Number of messages deleted 27 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const redisModule = require('async-redis'); 4 | const TelegramBot = require('node-telegram-bot-api'); 5 | const escapeMD = require('markdown-escape'); 6 | 7 | // Config 8 | const redisURL = process.env.REDIS_URL; 9 | const redisPrefix = process.env.REDIS_PREFIX || 'XPBOT_'; 10 | const telegramToken = process.env.TELEGRAM_TOKEN; 11 | const minXP = parseInt(process.env.MIN_XP) || 15; 12 | const rateLimit = parseInt(process.env.RATE_LIMIT) || 15; 13 | const lessBotSpam = process.env.LESS_BOT_SPAM == "true"; 14 | const botExpiration = (process.env.BOT_EXPIRATION || 3) * 1000; 15 | 16 | if (!telegramToken) { 17 | console.error("Error: $TELEGRAM_TOKEN not set."); 18 | process.exit(1); 19 | } 20 | 21 | // APIs 22 | const bot = new TelegramBot(telegramToken, {polling: true}); 23 | const redis = redisModule.createClient(redisURL); 24 | 25 | // Triggers 26 | bot.on('text', incrementXP); 27 | bot.on('voice', incrementXP); 28 | bot.on('sticker', incrementXP); 29 | bot.on('photo', moderateContent); 30 | bot.on('video', moderateContent); 31 | bot.on('document', moderateContent); 32 | 33 | // Commands 34 | bot.onText(/\/start/, displayHelp); 35 | bot.onText(/\/xp(@\w+)?/, displayRank); 36 | bot.onText(/\/ranks(@\w+)?/, displayTopRanks); 37 | 38 | async function incrementXP(msg, match) { 39 | const uid = msg.from.id; 40 | const gid = msg.chat.id; 41 | const key = redisPrefix + gid; 42 | 43 | if (msg.chat.type == "private") 44 | return; 45 | 46 | if (msg.text && msg.text.match(/\/xp/)) 47 | return; 48 | 49 | const entities = msg.entities || []; 50 | const isLink = entities.find(e => e.type == 'text_link'); 51 | 52 | if (isLink) 53 | if (!(await moderateContent(msg, match))) 54 | return; 55 | 56 | if (rateLimit) { 57 | const ukey = redisPrefix + "_TGUSER_" + uid; 58 | 59 | if (await redis.exists(ukey)) 60 | return; 61 | 62 | await redis.set(ukey, 1); 63 | await redis.expire(ukey, rateLimit); 64 | } 65 | 66 | await redis.zincrby(key, 1, uid); 67 | } 68 | 69 | async function displayRank(msg, match) { 70 | const uid = msg.from.id; 71 | const gid = msg.chat.id; 72 | const key = redisPrefix + gid; 73 | 74 | if (msg.chat.type == "private") { 75 | bot.sendMessageNoSpam(gid, "Sorry, you can't gain XP in private chats.", {}, msg); 76 | return; 77 | } 78 | 79 | const score = await redis.zscore(key, uid); 80 | if (!score) { 81 | bot.sendMention(gid, msg.from, ", you're not ranked yet 👶", msg); 82 | return; 83 | } 84 | 85 | const rank = (await redis.zrevrank(key, uid)) + 1; 86 | const total = await redis.zcard(key); 87 | 88 | let message; 89 | if (score >= minXP) { 90 | const next = await redis.zrangebyscore(key, parseInt(score) + 2, '+inf', 'withscores', 'limit', 0, 1); 91 | if (!next || next.length == 0) { 92 | message = `, you have ${score} XP ◎ Rank ${rank} / ${total} ◎ 👑`; 93 | } else { 94 | let member = {}; 95 | try { 96 | member = await bot.getChatMember(gid, next[0]); 97 | } catch (e) {} 98 | const rival = member.user || { id: '', first_name: 'an unknown user' }; 99 | message = `, you have ${score} XP ◎ Rank ${rank} / ${total} ◎ ${next[1]-score} to beat ${withUser(rival)}`; 100 | } 101 | } else { 102 | message = `, your rank is ${rank} / ${total}.`; 103 | } 104 | bot.sendMention(gid, msg.from, message, msg); 105 | } 106 | 107 | async function displayTopRanks(msg, match) { 108 | const gid = msg.chat.id; 109 | const key = redisPrefix + gid; 110 | 111 | console.log("Displaying top ranks for " + gid); 112 | if (msg.chat.type == "private") { 113 | bot.sendMessageNoSpam(gid, "Please add me to a group."); 114 | return; 115 | } 116 | 117 | const total = await redis.zcard(key); 118 | if (total < 3) 119 | return; 120 | 121 | const scores = await redis.zrevrange(key, 0, 3, "withscores"); 122 | let users = []; 123 | for (let i = 0; i < 3; i++) { 124 | const member = await bot.getChatMember(gid, scores[i*2]); 125 | if (member && member.user) 126 | users[i] = member.user; 127 | else 128 | users[i] = {id: 0, first_name: 'A ghost'}; 129 | } 130 | 131 | bot.sendMessageNoSpam(gid, 132 | `🥇 ${withUser(users[0])}: ${scores[1]} XP \n` + 133 | `🥈 ${withUser(users[1])}: ${scores[3]} XP \n` + 134 | `🥉 ${withUser(users[2])}: ${scores[5]} XP`, 135 | { parse_mode: 'Markdown', disable_notification: true }, 136 | msg); 137 | } 138 | 139 | async function moderateContent(msg, match) { 140 | const uid = msg.from.id; 141 | const gid = msg.chat.id; 142 | const key = redisPrefix + gid; 143 | 144 | if (msg.chat.type == "private") 145 | return; 146 | 147 | const score = await redis.zscore(key, uid); 148 | 149 | if (score < minXP) { 150 | bot.deleteMessage(msg.chat.id, msg.message_id); 151 | let chatName; 152 | if (msg.chat.title) 153 | chatName = ` to ${msg.chat.title}`; 154 | else 155 | chatName = ''; 156 | bot.sendMessageNoSpam(msg.from.id, `Sorry, but you don't have enough XP to send that${escapeMD(chatName)}. Earn more XP by talking😉`); 157 | redis.zrem(key, uid); 158 | redis.incrby(`${redisPrefix}${msg.chat.id}_DELETED_COUNT`, 1); 159 | return false; 160 | } 161 | 162 | return true; 163 | } 164 | 165 | async function displayHelp(msg, match) { 166 | if (msg.chat.type != "private") 167 | return; 168 | bot.sendMessageNoSpam(msg.chat.id, "Hi, I'm XP Bot. Add me to a group and I will track users' message count (XP). " + 169 | "Available commands:\n" + 170 | " - /xp displays the XP count and rank of the user\n" + 171 | " - /ranks displays the top 3"); 172 | } 173 | 174 | function withUser(user) { 175 | return escapeMD(user.first_name); 176 | //return `[${user.first_name}](tg://user?id=${user.id})`; 177 | } 178 | 179 | bot.sendMessageNoSpam = async (gid, text, options, queryMsg) => { 180 | const msg = await bot.sendMessage(gid, text, options); 181 | if (lessBotSpam) 182 | setTimeout(() => { 183 | if (queryMsg) 184 | bot.deleteMessage(gid, queryMsg.message_id); 185 | bot.deleteMessage(gid, msg.message_id); 186 | }, botExpiration); 187 | } 188 | 189 | bot.sendMention = (gid, user, text, queryMsg) => { 190 | const options = { 191 | parse_mode: 'Markdown', 192 | disable_notification: true 193 | } 194 | bot.sendMessageNoSpam(gid, withUser(user) + text, options, queryMsg); 195 | } 196 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "telegram-xp", 3 | "version": "1.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "telegram-xp", 9 | "version": "1.1.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "async-redis": "^1.1.7", 13 | "markdown-escape": "^1.1.0", 14 | "node-telegram-bot-api": "^0.51.0" 15 | } 16 | }, 17 | "node_modules/ajv": { 18 | "version": "6.12.6", 19 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 20 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 21 | "dependencies": { 22 | "fast-deep-equal": "^3.1.1", 23 | "fast-json-stable-stringify": "^2.0.0", 24 | "json-schema-traverse": "^0.4.1", 25 | "uri-js": "^4.2.2" 26 | }, 27 | "funding": { 28 | "type": "github", 29 | "url": "https://github.com/sponsors/epoberezkin" 30 | } 31 | }, 32 | "node_modules/array.prototype.findindex": { 33 | "version": "2.1.0", 34 | "resolved": "https://registry.npmjs.org/array.prototype.findindex/-/array.prototype.findindex-2.1.0.tgz", 35 | "integrity": "sha512-25kJHCjXltdtljjwcyKvCTywmbUAeTJVB2ADVe0oP4jcefsd+K9pJJ3IdHPahLICoszcCLoNF+evWpEduzBlng==", 36 | "dependencies": { 37 | "define-properties": "^1.1.3", 38 | "es-abstract": "^1.17.4" 39 | } 40 | }, 41 | "node_modules/asn1": { 42 | "version": "0.2.4", 43 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 44 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 45 | "dependencies": { 46 | "safer-buffer": "~2.1.0" 47 | } 48 | }, 49 | "node_modules/assert-plus": { 50 | "version": "1.0.0", 51 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 52 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", 53 | "engines": { 54 | "node": ">=0.8" 55 | } 56 | }, 57 | "node_modules/async-redis": { 58 | "version": "1.1.7", 59 | "resolved": "https://registry.npmjs.org/async-redis/-/async-redis-1.1.7.tgz", 60 | "integrity": "sha512-phpZe2/U+Ih4Lpy72KWF4+c8gymsUgzg6NV/TZUb8BLNn7soQewFxqcq9nndobfPmzXiuhMLi6GNBiQVIor/EA==", 61 | "dependencies": { 62 | "redis": "^2.8.0", 63 | "redis-commands": "^1.3.1" 64 | }, 65 | "engines": { 66 | "node": ">=7.6.0" 67 | } 68 | }, 69 | "node_modules/asynckit": { 70 | "version": "0.4.0", 71 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 72 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 73 | }, 74 | "node_modules/aws-sign2": { 75 | "version": "0.7.0", 76 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 77 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", 78 | "engines": { 79 | "node": "*" 80 | } 81 | }, 82 | "node_modules/aws4": { 83 | "version": "1.11.0", 84 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 85 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" 86 | }, 87 | "node_modules/bcrypt-pbkdf": { 88 | "version": "1.0.2", 89 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 90 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 91 | "dependencies": { 92 | "tweetnacl": "^0.14.3" 93 | } 94 | }, 95 | "node_modules/bl": { 96 | "version": "1.2.3", 97 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 98 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 99 | "dependencies": { 100 | "readable-stream": "^2.3.5", 101 | "safe-buffer": "^5.1.1" 102 | } 103 | }, 104 | "node_modules/bluebird": { 105 | "version": "3.7.2", 106 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 107 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" 108 | }, 109 | "node_modules/call-bind": { 110 | "version": "1.0.1", 111 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz", 112 | "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==", 113 | "dependencies": { 114 | "function-bind": "^1.1.1", 115 | "get-intrinsic": "^1.0.2" 116 | }, 117 | "funding": { 118 | "url": "https://github.com/sponsors/ljharb" 119 | } 120 | }, 121 | "node_modules/caseless": { 122 | "version": "0.12.0", 123 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 124 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 125 | }, 126 | "node_modules/combined-stream": { 127 | "version": "1.0.8", 128 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 129 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 130 | "dependencies": { 131 | "delayed-stream": "~1.0.0" 132 | }, 133 | "engines": { 134 | "node": ">= 0.8" 135 | } 136 | }, 137 | "node_modules/core-util-is": { 138 | "version": "1.0.2", 139 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 140 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 141 | }, 142 | "node_modules/dashdash": { 143 | "version": "1.14.1", 144 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 145 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 146 | "dependencies": { 147 | "assert-plus": "^1.0.0" 148 | }, 149 | "engines": { 150 | "node": ">=0.10" 151 | } 152 | }, 153 | "node_modules/debug": { 154 | "version": "3.2.7", 155 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 156 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 157 | "dependencies": { 158 | "ms": "^2.1.1" 159 | } 160 | }, 161 | "node_modules/define-properties": { 162 | "version": "1.1.3", 163 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 164 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 165 | "dependencies": { 166 | "object-keys": "^1.0.12" 167 | }, 168 | "engines": { 169 | "node": ">= 0.4" 170 | } 171 | }, 172 | "node_modules/delayed-stream": { 173 | "version": "1.0.0", 174 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 175 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 176 | "engines": { 177 | "node": ">=0.4.0" 178 | } 179 | }, 180 | "node_modules/depd": { 181 | "version": "1.1.2", 182 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 183 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 184 | "engines": { 185 | "node": ">= 0.6" 186 | } 187 | }, 188 | "node_modules/double-ended-queue": { 189 | "version": "2.1.0-0", 190 | "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", 191 | "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" 192 | }, 193 | "node_modules/ecc-jsbn": { 194 | "version": "0.1.2", 195 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 196 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 197 | "dependencies": { 198 | "jsbn": "~0.1.0", 199 | "safer-buffer": "^2.1.0" 200 | } 201 | }, 202 | "node_modules/end-of-stream": { 203 | "version": "1.4.4", 204 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 205 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 206 | "dependencies": { 207 | "once": "^1.4.0" 208 | } 209 | }, 210 | "node_modules/es-abstract": { 211 | "version": "1.17.7", 212 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 213 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 214 | "dependencies": { 215 | "es-to-primitive": "^1.2.1", 216 | "function-bind": "^1.1.1", 217 | "has": "^1.0.3", 218 | "has-symbols": "^1.0.1", 219 | "is-callable": "^1.2.2", 220 | "is-regex": "^1.1.1", 221 | "object-inspect": "^1.8.0", 222 | "object-keys": "^1.1.1", 223 | "object.assign": "^4.1.1", 224 | "string.prototype.trimend": "^1.0.1", 225 | "string.prototype.trimstart": "^1.0.1" 226 | }, 227 | "engines": { 228 | "node": ">= 0.4" 229 | }, 230 | "funding": { 231 | "url": "https://github.com/sponsors/ljharb" 232 | } 233 | }, 234 | "node_modules/es-to-primitive": { 235 | "version": "1.2.1", 236 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 237 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 238 | "dependencies": { 239 | "is-callable": "^1.1.4", 240 | "is-date-object": "^1.0.1", 241 | "is-symbol": "^1.0.2" 242 | }, 243 | "engines": { 244 | "node": ">= 0.4" 245 | }, 246 | "funding": { 247 | "url": "https://github.com/sponsors/ljharb" 248 | } 249 | }, 250 | "node_modules/eventemitter3": { 251 | "version": "3.1.2", 252 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 253 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 254 | }, 255 | "node_modules/extend": { 256 | "version": "3.0.2", 257 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 258 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 259 | }, 260 | "node_modules/extsprintf": { 261 | "version": "1.3.0", 262 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 263 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 264 | "engines": [ 265 | "node >=0.6.0" 266 | ] 267 | }, 268 | "node_modules/fast-deep-equal": { 269 | "version": "3.1.3", 270 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 271 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 272 | }, 273 | "node_modules/fast-json-stable-stringify": { 274 | "version": "2.1.0", 275 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 276 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 277 | }, 278 | "node_modules/file-type": { 279 | "version": "3.9.0", 280 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 281 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", 282 | "engines": { 283 | "node": ">=0.10.0" 284 | } 285 | }, 286 | "node_modules/forever-agent": { 287 | "version": "0.6.1", 288 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 289 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", 290 | "engines": { 291 | "node": "*" 292 | } 293 | }, 294 | "node_modules/form-data": { 295 | "version": "2.3.3", 296 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 297 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 298 | "dependencies": { 299 | "asynckit": "^0.4.0", 300 | "combined-stream": "^1.0.6", 301 | "mime-types": "^2.1.12" 302 | }, 303 | "engines": { 304 | "node": ">= 0.12" 305 | } 306 | }, 307 | "node_modules/function-bind": { 308 | "version": "1.1.1", 309 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 310 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 311 | }, 312 | "node_modules/get-intrinsic": { 313 | "version": "1.0.2", 314 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", 315 | "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", 316 | "dependencies": { 317 | "function-bind": "^1.1.1", 318 | "has": "^1.0.3", 319 | "has-symbols": "^1.0.1" 320 | }, 321 | "funding": { 322 | "url": "https://github.com/sponsors/ljharb" 323 | } 324 | }, 325 | "node_modules/getpass": { 326 | "version": "0.1.7", 327 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 328 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 329 | "dependencies": { 330 | "assert-plus": "^1.0.0" 331 | } 332 | }, 333 | "node_modules/har-schema": { 334 | "version": "2.0.0", 335 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 336 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", 337 | "engines": { 338 | "node": ">=4" 339 | } 340 | }, 341 | "node_modules/har-validator": { 342 | "version": "5.1.5", 343 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 344 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 345 | "deprecated": "this library is no longer supported", 346 | "dependencies": { 347 | "ajv": "^6.12.3", 348 | "har-schema": "^2.0.0" 349 | }, 350 | "engines": { 351 | "node": ">=6" 352 | } 353 | }, 354 | "node_modules/has": { 355 | "version": "1.0.3", 356 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 357 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 358 | "dependencies": { 359 | "function-bind": "^1.1.1" 360 | }, 361 | "engines": { 362 | "node": ">= 0.4.0" 363 | } 364 | }, 365 | "node_modules/has-symbols": { 366 | "version": "1.0.1", 367 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 368 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 369 | "engines": { 370 | "node": ">= 0.4" 371 | }, 372 | "funding": { 373 | "url": "https://github.com/sponsors/ljharb" 374 | } 375 | }, 376 | "node_modules/http-signature": { 377 | "version": "1.2.0", 378 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 379 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 380 | "dependencies": { 381 | "assert-plus": "^1.0.0", 382 | "jsprim": "^1.2.2", 383 | "sshpk": "^1.7.0" 384 | }, 385 | "engines": { 386 | "node": ">=0.8", 387 | "npm": ">=1.3.7" 388 | } 389 | }, 390 | "node_modules/inherits": { 391 | "version": "2.0.4", 392 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 393 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 394 | }, 395 | "node_modules/is-callable": { 396 | "version": "1.2.2", 397 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 398 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", 399 | "engines": { 400 | "node": ">= 0.4" 401 | }, 402 | "funding": { 403 | "url": "https://github.com/sponsors/ljharb" 404 | } 405 | }, 406 | "node_modules/is-date-object": { 407 | "version": "1.0.2", 408 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 409 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 410 | "engines": { 411 | "node": ">= 0.4" 412 | }, 413 | "funding": { 414 | "url": "https://github.com/sponsors/ljharb" 415 | } 416 | }, 417 | "node_modules/is-regex": { 418 | "version": "1.1.1", 419 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 420 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 421 | "dependencies": { 422 | "has-symbols": "^1.0.1" 423 | }, 424 | "engines": { 425 | "node": ">= 0.4" 426 | }, 427 | "funding": { 428 | "url": "https://github.com/sponsors/ljharb" 429 | } 430 | }, 431 | "node_modules/is-symbol": { 432 | "version": "1.0.3", 433 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 434 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 435 | "dependencies": { 436 | "has-symbols": "^1.0.1" 437 | }, 438 | "engines": { 439 | "node": ">= 0.4" 440 | }, 441 | "funding": { 442 | "url": "https://github.com/sponsors/ljharb" 443 | } 444 | }, 445 | "node_modules/is-typedarray": { 446 | "version": "1.0.0", 447 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 448 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 449 | }, 450 | "node_modules/isarray": { 451 | "version": "1.0.0", 452 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 453 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 454 | }, 455 | "node_modules/isstream": { 456 | "version": "0.1.2", 457 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 458 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 459 | }, 460 | "node_modules/jsbn": { 461 | "version": "0.1.1", 462 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 463 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 464 | }, 465 | "node_modules/json-schema": { 466 | "version": "0.2.3", 467 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 468 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 469 | }, 470 | "node_modules/json-schema-traverse": { 471 | "version": "0.4.1", 472 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 473 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 474 | }, 475 | "node_modules/json-stringify-safe": { 476 | "version": "5.0.1", 477 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 478 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 479 | }, 480 | "node_modules/jsprim": { 481 | "version": "1.4.1", 482 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 483 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 484 | "engines": [ 485 | "node >=0.6.0" 486 | ], 487 | "dependencies": { 488 | "assert-plus": "1.0.0", 489 | "extsprintf": "1.3.0", 490 | "json-schema": "0.2.3", 491 | "verror": "1.10.0" 492 | } 493 | }, 494 | "node_modules/lodash": { 495 | "version": "4.17.20", 496 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 497 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 498 | }, 499 | "node_modules/markdown-escape": { 500 | "version": "1.1.0", 501 | "resolved": "https://registry.npmjs.org/markdown-escape/-/markdown-escape-1.1.0.tgz", 502 | "integrity": "sha512-f1+ARFbzLrBdC0Lj30uREn+zthrK/h1PO5UhN5IMDQvI2lSFn+8U06a5LHaxxYMhHD0mJoJ2BROJ/Sju5aw6+g==" 503 | }, 504 | "node_modules/mime": { 505 | "version": "1.6.0", 506 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 507 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 508 | "bin": { 509 | "mime": "cli.js" 510 | }, 511 | "engines": { 512 | "node": ">=4" 513 | } 514 | }, 515 | "node_modules/mime-db": { 516 | "version": "1.45.0", 517 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", 518 | "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", 519 | "engines": { 520 | "node": ">= 0.6" 521 | } 522 | }, 523 | "node_modules/mime-types": { 524 | "version": "2.1.28", 525 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", 526 | "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", 527 | "dependencies": { 528 | "mime-db": "1.45.0" 529 | }, 530 | "engines": { 531 | "node": ">= 0.6" 532 | } 533 | }, 534 | "node_modules/ms": { 535 | "version": "2.1.3", 536 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 537 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 538 | }, 539 | "node_modules/node-telegram-bot-api": { 540 | "version": "0.51.0", 541 | "resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.51.0.tgz", 542 | "integrity": "sha512-4SYAHBOhm8beNm/Sj6jo67GLbjMKLXejU/gjeIGsPMB9BAap4+ZT9viZkq1xC3t+0JeyQHOMudPp/vwpbK04qA==", 543 | "dependencies": { 544 | "array.prototype.findindex": "^2.0.2", 545 | "bl": "^1.2.3", 546 | "bluebird": "^3.5.1", 547 | "debug": "^3.1.0", 548 | "depd": "^1.1.1", 549 | "eventemitter3": "^3.0.0", 550 | "file-type": "^3.9.0", 551 | "mime": "^1.6.0", 552 | "pump": "^2.0.0", 553 | "request": "^2.83.0", 554 | "request-promise": "^4.2.2" 555 | }, 556 | "engines": { 557 | "node": ">=0.12" 558 | } 559 | }, 560 | "node_modules/oauth-sign": { 561 | "version": "0.9.0", 562 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 563 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", 564 | "engines": { 565 | "node": "*" 566 | } 567 | }, 568 | "node_modules/object-inspect": { 569 | "version": "1.9.0", 570 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 571 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", 572 | "funding": { 573 | "url": "https://github.com/sponsors/ljharb" 574 | } 575 | }, 576 | "node_modules/object-keys": { 577 | "version": "1.1.1", 578 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 579 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 580 | "engines": { 581 | "node": ">= 0.4" 582 | } 583 | }, 584 | "node_modules/object.assign": { 585 | "version": "4.1.2", 586 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 587 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 588 | "dependencies": { 589 | "call-bind": "^1.0.0", 590 | "define-properties": "^1.1.3", 591 | "has-symbols": "^1.0.1", 592 | "object-keys": "^1.1.1" 593 | }, 594 | "engines": { 595 | "node": ">= 0.4" 596 | }, 597 | "funding": { 598 | "url": "https://github.com/sponsors/ljharb" 599 | } 600 | }, 601 | "node_modules/once": { 602 | "version": "1.4.0", 603 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 604 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 605 | "dependencies": { 606 | "wrappy": "1" 607 | } 608 | }, 609 | "node_modules/performance-now": { 610 | "version": "2.1.0", 611 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 612 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 613 | }, 614 | "node_modules/process-nextick-args": { 615 | "version": "2.0.1", 616 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 617 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 618 | }, 619 | "node_modules/psl": { 620 | "version": "1.8.0", 621 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 622 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 623 | }, 624 | "node_modules/pump": { 625 | "version": "2.0.1", 626 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 627 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 628 | "dependencies": { 629 | "end-of-stream": "^1.1.0", 630 | "once": "^1.3.1" 631 | } 632 | }, 633 | "node_modules/punycode": { 634 | "version": "2.1.1", 635 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 636 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 637 | "engines": { 638 | "node": ">=6" 639 | } 640 | }, 641 | "node_modules/qs": { 642 | "version": "6.5.2", 643 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 644 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", 645 | "engines": { 646 | "node": ">=0.6" 647 | } 648 | }, 649 | "node_modules/readable-stream": { 650 | "version": "2.3.7", 651 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 652 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 653 | "dependencies": { 654 | "core-util-is": "~1.0.0", 655 | "inherits": "~2.0.3", 656 | "isarray": "~1.0.0", 657 | "process-nextick-args": "~2.0.0", 658 | "safe-buffer": "~5.1.1", 659 | "string_decoder": "~1.1.1", 660 | "util-deprecate": "~1.0.1" 661 | } 662 | }, 663 | "node_modules/readable-stream/node_modules/safe-buffer": { 664 | "version": "5.1.2", 665 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 666 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 667 | }, 668 | "node_modules/redis": { 669 | "version": "2.8.0", 670 | "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", 671 | "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", 672 | "dependencies": { 673 | "double-ended-queue": "^2.1.0-0", 674 | "redis-commands": "^1.2.0", 675 | "redis-parser": "^2.6.0" 676 | }, 677 | "engines": { 678 | "node": ">=0.10.0" 679 | } 680 | }, 681 | "node_modules/redis-commands": { 682 | "version": "1.6.0", 683 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz", 684 | "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==" 685 | }, 686 | "node_modules/redis-parser": { 687 | "version": "2.6.0", 688 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", 689 | "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", 690 | "engines": { 691 | "node": ">=0.10.0" 692 | } 693 | }, 694 | "node_modules/request": { 695 | "version": "2.88.2", 696 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 697 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 698 | "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 699 | "dependencies": { 700 | "aws-sign2": "~0.7.0", 701 | "aws4": "^1.8.0", 702 | "caseless": "~0.12.0", 703 | "combined-stream": "~1.0.6", 704 | "extend": "~3.0.2", 705 | "forever-agent": "~0.6.1", 706 | "form-data": "~2.3.2", 707 | "har-validator": "~5.1.3", 708 | "http-signature": "~1.2.0", 709 | "is-typedarray": "~1.0.0", 710 | "isstream": "~0.1.2", 711 | "json-stringify-safe": "~5.0.1", 712 | "mime-types": "~2.1.19", 713 | "oauth-sign": "~0.9.0", 714 | "performance-now": "^2.1.0", 715 | "qs": "~6.5.2", 716 | "safe-buffer": "^5.1.2", 717 | "tough-cookie": "~2.5.0", 718 | "tunnel-agent": "^0.6.0", 719 | "uuid": "^3.3.2" 720 | }, 721 | "engines": { 722 | "node": ">= 6" 723 | } 724 | }, 725 | "node_modules/request-promise": { 726 | "version": "4.2.6", 727 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", 728 | "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", 729 | "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", 730 | "dependencies": { 731 | "bluebird": "^3.5.0", 732 | "request-promise-core": "1.1.4", 733 | "stealthy-require": "^1.1.1", 734 | "tough-cookie": "^2.3.3" 735 | }, 736 | "engines": { 737 | "node": ">=0.10.0" 738 | }, 739 | "peerDependencies": { 740 | "request": "^2.34" 741 | } 742 | }, 743 | "node_modules/request-promise-core": { 744 | "version": "1.1.4", 745 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", 746 | "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", 747 | "dependencies": { 748 | "lodash": "^4.17.19" 749 | }, 750 | "engines": { 751 | "node": ">=0.10.0" 752 | }, 753 | "peerDependencies": { 754 | "request": "^2.34" 755 | } 756 | }, 757 | "node_modules/safe-buffer": { 758 | "version": "5.2.1", 759 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 760 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 761 | "funding": [ 762 | { 763 | "type": "github", 764 | "url": "https://github.com/sponsors/feross" 765 | }, 766 | { 767 | "type": "patreon", 768 | "url": "https://www.patreon.com/feross" 769 | }, 770 | { 771 | "type": "consulting", 772 | "url": "https://feross.org/support" 773 | } 774 | ] 775 | }, 776 | "node_modules/safer-buffer": { 777 | "version": "2.1.2", 778 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 779 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 780 | }, 781 | "node_modules/sshpk": { 782 | "version": "1.16.1", 783 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 784 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 785 | "dependencies": { 786 | "asn1": "~0.2.3", 787 | "assert-plus": "^1.0.0", 788 | "bcrypt-pbkdf": "^1.0.0", 789 | "dashdash": "^1.12.0", 790 | "ecc-jsbn": "~0.1.1", 791 | "getpass": "^0.1.1", 792 | "jsbn": "~0.1.0", 793 | "safer-buffer": "^2.0.2", 794 | "tweetnacl": "~0.14.0" 795 | }, 796 | "bin": { 797 | "sshpk-conv": "bin/sshpk-conv", 798 | "sshpk-sign": "bin/sshpk-sign", 799 | "sshpk-verify": "bin/sshpk-verify" 800 | }, 801 | "engines": { 802 | "node": ">=0.10.0" 803 | } 804 | }, 805 | "node_modules/stealthy-require": { 806 | "version": "1.1.1", 807 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 808 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", 809 | "engines": { 810 | "node": ">=0.10.0" 811 | } 812 | }, 813 | "node_modules/string_decoder": { 814 | "version": "1.1.1", 815 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 816 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 817 | "dependencies": { 818 | "safe-buffer": "~5.1.0" 819 | } 820 | }, 821 | "node_modules/string_decoder/node_modules/safe-buffer": { 822 | "version": "5.1.2", 823 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 824 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 825 | }, 826 | "node_modules/string.prototype.trimend": { 827 | "version": "1.0.3", 828 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", 829 | "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", 830 | "dependencies": { 831 | "call-bind": "^1.0.0", 832 | "define-properties": "^1.1.3" 833 | }, 834 | "funding": { 835 | "url": "https://github.com/sponsors/ljharb" 836 | } 837 | }, 838 | "node_modules/string.prototype.trimstart": { 839 | "version": "1.0.3", 840 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", 841 | "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", 842 | "dependencies": { 843 | "call-bind": "^1.0.0", 844 | "define-properties": "^1.1.3" 845 | }, 846 | "funding": { 847 | "url": "https://github.com/sponsors/ljharb" 848 | } 849 | }, 850 | "node_modules/tough-cookie": { 851 | "version": "2.5.0", 852 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 853 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 854 | "dependencies": { 855 | "psl": "^1.1.28", 856 | "punycode": "^2.1.1" 857 | }, 858 | "engines": { 859 | "node": ">=0.8" 860 | } 861 | }, 862 | "node_modules/tunnel-agent": { 863 | "version": "0.6.0", 864 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 865 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 866 | "dependencies": { 867 | "safe-buffer": "^5.0.1" 868 | }, 869 | "engines": { 870 | "node": "*" 871 | } 872 | }, 873 | "node_modules/tweetnacl": { 874 | "version": "0.14.5", 875 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 876 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 877 | }, 878 | "node_modules/uri-js": { 879 | "version": "4.4.1", 880 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 881 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 882 | "dependencies": { 883 | "punycode": "^2.1.0" 884 | } 885 | }, 886 | "node_modules/util-deprecate": { 887 | "version": "1.0.2", 888 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 889 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 890 | }, 891 | "node_modules/uuid": { 892 | "version": "3.4.0", 893 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 894 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 895 | "bin": { 896 | "uuid": "bin/uuid" 897 | } 898 | }, 899 | "node_modules/verror": { 900 | "version": "1.10.0", 901 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 902 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 903 | "engines": [ 904 | "node >=0.6.0" 905 | ], 906 | "dependencies": { 907 | "assert-plus": "^1.0.0", 908 | "core-util-is": "1.0.2", 909 | "extsprintf": "^1.2.0" 910 | } 911 | }, 912 | "node_modules/wrappy": { 913 | "version": "1.0.2", 914 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 915 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 916 | } 917 | }, 918 | "dependencies": { 919 | "ajv": { 920 | "version": "6.12.6", 921 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 922 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 923 | "requires": { 924 | "fast-deep-equal": "^3.1.1", 925 | "fast-json-stable-stringify": "^2.0.0", 926 | "json-schema-traverse": "^0.4.1", 927 | "uri-js": "^4.2.2" 928 | } 929 | }, 930 | "array.prototype.findindex": { 931 | "version": "2.1.0", 932 | "resolved": "https://registry.npmjs.org/array.prototype.findindex/-/array.prototype.findindex-2.1.0.tgz", 933 | "integrity": "sha512-25kJHCjXltdtljjwcyKvCTywmbUAeTJVB2ADVe0oP4jcefsd+K9pJJ3IdHPahLICoszcCLoNF+evWpEduzBlng==", 934 | "requires": { 935 | "define-properties": "^1.1.3", 936 | "es-abstract": "^1.17.4" 937 | } 938 | }, 939 | "asn1": { 940 | "version": "0.2.4", 941 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 942 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 943 | "requires": { 944 | "safer-buffer": "~2.1.0" 945 | } 946 | }, 947 | "assert-plus": { 948 | "version": "1.0.0", 949 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 950 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 951 | }, 952 | "async-redis": { 953 | "version": "1.1.7", 954 | "resolved": "https://registry.npmjs.org/async-redis/-/async-redis-1.1.7.tgz", 955 | "integrity": "sha512-phpZe2/U+Ih4Lpy72KWF4+c8gymsUgzg6NV/TZUb8BLNn7soQewFxqcq9nndobfPmzXiuhMLi6GNBiQVIor/EA==", 956 | "requires": { 957 | "redis": "^2.8.0", 958 | "redis-commands": "^1.3.1" 959 | } 960 | }, 961 | "asynckit": { 962 | "version": "0.4.0", 963 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 964 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 965 | }, 966 | "aws-sign2": { 967 | "version": "0.7.0", 968 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 969 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 970 | }, 971 | "aws4": { 972 | "version": "1.11.0", 973 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", 974 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" 975 | }, 976 | "bcrypt-pbkdf": { 977 | "version": "1.0.2", 978 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 979 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 980 | "requires": { 981 | "tweetnacl": "^0.14.3" 982 | } 983 | }, 984 | "bl": { 985 | "version": "1.2.3", 986 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 987 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 988 | "requires": { 989 | "readable-stream": "^2.3.5", 990 | "safe-buffer": "^5.1.1" 991 | } 992 | }, 993 | "bluebird": { 994 | "version": "3.7.2", 995 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 996 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" 997 | }, 998 | "call-bind": { 999 | "version": "1.0.1", 1000 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz", 1001 | "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==", 1002 | "requires": { 1003 | "function-bind": "^1.1.1", 1004 | "get-intrinsic": "^1.0.2" 1005 | } 1006 | }, 1007 | "caseless": { 1008 | "version": "0.12.0", 1009 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 1010 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 1011 | }, 1012 | "combined-stream": { 1013 | "version": "1.0.8", 1014 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1015 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1016 | "requires": { 1017 | "delayed-stream": "~1.0.0" 1018 | } 1019 | }, 1020 | "core-util-is": { 1021 | "version": "1.0.2", 1022 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1023 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1024 | }, 1025 | "dashdash": { 1026 | "version": "1.14.1", 1027 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 1028 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 1029 | "requires": { 1030 | "assert-plus": "^1.0.0" 1031 | } 1032 | }, 1033 | "debug": { 1034 | "version": "3.2.7", 1035 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1036 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1037 | "requires": { 1038 | "ms": "^2.1.1" 1039 | } 1040 | }, 1041 | "define-properties": { 1042 | "version": "1.1.3", 1043 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1044 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1045 | "requires": { 1046 | "object-keys": "^1.0.12" 1047 | } 1048 | }, 1049 | "delayed-stream": { 1050 | "version": "1.0.0", 1051 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1052 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 1053 | }, 1054 | "depd": { 1055 | "version": "1.1.2", 1056 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1057 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1058 | }, 1059 | "double-ended-queue": { 1060 | "version": "2.1.0-0", 1061 | "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", 1062 | "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" 1063 | }, 1064 | "ecc-jsbn": { 1065 | "version": "0.1.2", 1066 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 1067 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 1068 | "requires": { 1069 | "jsbn": "~0.1.0", 1070 | "safer-buffer": "^2.1.0" 1071 | } 1072 | }, 1073 | "end-of-stream": { 1074 | "version": "1.4.4", 1075 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1076 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1077 | "requires": { 1078 | "once": "^1.4.0" 1079 | } 1080 | }, 1081 | "es-abstract": { 1082 | "version": "1.17.7", 1083 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", 1084 | "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", 1085 | "requires": { 1086 | "es-to-primitive": "^1.2.1", 1087 | "function-bind": "^1.1.1", 1088 | "has": "^1.0.3", 1089 | "has-symbols": "^1.0.1", 1090 | "is-callable": "^1.2.2", 1091 | "is-regex": "^1.1.1", 1092 | "object-inspect": "^1.8.0", 1093 | "object-keys": "^1.1.1", 1094 | "object.assign": "^4.1.1", 1095 | "string.prototype.trimend": "^1.0.1", 1096 | "string.prototype.trimstart": "^1.0.1" 1097 | } 1098 | }, 1099 | "es-to-primitive": { 1100 | "version": "1.2.1", 1101 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1102 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1103 | "requires": { 1104 | "is-callable": "^1.1.4", 1105 | "is-date-object": "^1.0.1", 1106 | "is-symbol": "^1.0.2" 1107 | } 1108 | }, 1109 | "eventemitter3": { 1110 | "version": "3.1.2", 1111 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 1112 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 1113 | }, 1114 | "extend": { 1115 | "version": "3.0.2", 1116 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1117 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 1118 | }, 1119 | "extsprintf": { 1120 | "version": "1.3.0", 1121 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 1122 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 1123 | }, 1124 | "fast-deep-equal": { 1125 | "version": "3.1.3", 1126 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1127 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1128 | }, 1129 | "fast-json-stable-stringify": { 1130 | "version": "2.1.0", 1131 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1132 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1133 | }, 1134 | "file-type": { 1135 | "version": "3.9.0", 1136 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 1137 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" 1138 | }, 1139 | "forever-agent": { 1140 | "version": "0.6.1", 1141 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1142 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 1143 | }, 1144 | "form-data": { 1145 | "version": "2.3.3", 1146 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 1147 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 1148 | "requires": { 1149 | "asynckit": "^0.4.0", 1150 | "combined-stream": "^1.0.6", 1151 | "mime-types": "^2.1.12" 1152 | } 1153 | }, 1154 | "function-bind": { 1155 | "version": "1.1.1", 1156 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1157 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1158 | }, 1159 | "get-intrinsic": { 1160 | "version": "1.0.2", 1161 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", 1162 | "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", 1163 | "requires": { 1164 | "function-bind": "^1.1.1", 1165 | "has": "^1.0.3", 1166 | "has-symbols": "^1.0.1" 1167 | } 1168 | }, 1169 | "getpass": { 1170 | "version": "0.1.7", 1171 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 1172 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 1173 | "requires": { 1174 | "assert-plus": "^1.0.0" 1175 | } 1176 | }, 1177 | "har-schema": { 1178 | "version": "2.0.0", 1179 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1180 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 1181 | }, 1182 | "har-validator": { 1183 | "version": "5.1.5", 1184 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 1185 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 1186 | "requires": { 1187 | "ajv": "^6.12.3", 1188 | "har-schema": "^2.0.0" 1189 | } 1190 | }, 1191 | "has": { 1192 | "version": "1.0.3", 1193 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1194 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1195 | "requires": { 1196 | "function-bind": "^1.1.1" 1197 | } 1198 | }, 1199 | "has-symbols": { 1200 | "version": "1.0.1", 1201 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1202 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" 1203 | }, 1204 | "http-signature": { 1205 | "version": "1.2.0", 1206 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1207 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1208 | "requires": { 1209 | "assert-plus": "^1.0.0", 1210 | "jsprim": "^1.2.2", 1211 | "sshpk": "^1.7.0" 1212 | } 1213 | }, 1214 | "inherits": { 1215 | "version": "2.0.4", 1216 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1217 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1218 | }, 1219 | "is-callable": { 1220 | "version": "1.2.2", 1221 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", 1222 | "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" 1223 | }, 1224 | "is-date-object": { 1225 | "version": "1.0.2", 1226 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1227 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" 1228 | }, 1229 | "is-regex": { 1230 | "version": "1.1.1", 1231 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1232 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1233 | "requires": { 1234 | "has-symbols": "^1.0.1" 1235 | } 1236 | }, 1237 | "is-symbol": { 1238 | "version": "1.0.3", 1239 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1240 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1241 | "requires": { 1242 | "has-symbols": "^1.0.1" 1243 | } 1244 | }, 1245 | "is-typedarray": { 1246 | "version": "1.0.0", 1247 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1248 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1249 | }, 1250 | "isarray": { 1251 | "version": "1.0.0", 1252 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1253 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1254 | }, 1255 | "isstream": { 1256 | "version": "0.1.2", 1257 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1258 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1259 | }, 1260 | "jsbn": { 1261 | "version": "0.1.1", 1262 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1263 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 1264 | }, 1265 | "json-schema": { 1266 | "version": "0.2.3", 1267 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1268 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 1269 | }, 1270 | "json-schema-traverse": { 1271 | "version": "0.4.1", 1272 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1273 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1274 | }, 1275 | "json-stringify-safe": { 1276 | "version": "5.0.1", 1277 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1278 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1279 | }, 1280 | "jsprim": { 1281 | "version": "1.4.1", 1282 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1283 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1284 | "requires": { 1285 | "assert-plus": "1.0.0", 1286 | "extsprintf": "1.3.0", 1287 | "json-schema": "0.2.3", 1288 | "verror": "1.10.0" 1289 | } 1290 | }, 1291 | "lodash": { 1292 | "version": "4.17.20", 1293 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 1294 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 1295 | }, 1296 | "markdown-escape": { 1297 | "version": "1.1.0", 1298 | "resolved": "https://registry.npmjs.org/markdown-escape/-/markdown-escape-1.1.0.tgz", 1299 | "integrity": "sha512-f1+ARFbzLrBdC0Lj30uREn+zthrK/h1PO5UhN5IMDQvI2lSFn+8U06a5LHaxxYMhHD0mJoJ2BROJ/Sju5aw6+g==" 1300 | }, 1301 | "mime": { 1302 | "version": "1.6.0", 1303 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1304 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1305 | }, 1306 | "mime-db": { 1307 | "version": "1.45.0", 1308 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", 1309 | "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" 1310 | }, 1311 | "mime-types": { 1312 | "version": "2.1.28", 1313 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", 1314 | "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", 1315 | "requires": { 1316 | "mime-db": "1.45.0" 1317 | } 1318 | }, 1319 | "ms": { 1320 | "version": "2.1.3", 1321 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1322 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1323 | }, 1324 | "node-telegram-bot-api": { 1325 | "version": "0.51.0", 1326 | "resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.51.0.tgz", 1327 | "integrity": "sha512-4SYAHBOhm8beNm/Sj6jo67GLbjMKLXejU/gjeIGsPMB9BAap4+ZT9viZkq1xC3t+0JeyQHOMudPp/vwpbK04qA==", 1328 | "requires": { 1329 | "array.prototype.findindex": "^2.0.2", 1330 | "bl": "^1.2.3", 1331 | "bluebird": "^3.5.1", 1332 | "debug": "^3.1.0", 1333 | "depd": "^1.1.1", 1334 | "eventemitter3": "^3.0.0", 1335 | "file-type": "^3.9.0", 1336 | "mime": "^1.6.0", 1337 | "pump": "^2.0.0", 1338 | "request": "^2.83.0", 1339 | "request-promise": "^4.2.2" 1340 | } 1341 | }, 1342 | "oauth-sign": { 1343 | "version": "0.9.0", 1344 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1345 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 1346 | }, 1347 | "object-inspect": { 1348 | "version": "1.9.0", 1349 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 1350 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" 1351 | }, 1352 | "object-keys": { 1353 | "version": "1.1.1", 1354 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1355 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1356 | }, 1357 | "object.assign": { 1358 | "version": "4.1.2", 1359 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1360 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1361 | "requires": { 1362 | "call-bind": "^1.0.0", 1363 | "define-properties": "^1.1.3", 1364 | "has-symbols": "^1.0.1", 1365 | "object-keys": "^1.1.1" 1366 | } 1367 | }, 1368 | "once": { 1369 | "version": "1.4.0", 1370 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1371 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1372 | "requires": { 1373 | "wrappy": "1" 1374 | } 1375 | }, 1376 | "performance-now": { 1377 | "version": "2.1.0", 1378 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1379 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1380 | }, 1381 | "process-nextick-args": { 1382 | "version": "2.0.1", 1383 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1384 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1385 | }, 1386 | "psl": { 1387 | "version": "1.8.0", 1388 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 1389 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 1390 | }, 1391 | "pump": { 1392 | "version": "2.0.1", 1393 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 1394 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 1395 | "requires": { 1396 | "end-of-stream": "^1.1.0", 1397 | "once": "^1.3.1" 1398 | } 1399 | }, 1400 | "punycode": { 1401 | "version": "2.1.1", 1402 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1403 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1404 | }, 1405 | "qs": { 1406 | "version": "6.5.2", 1407 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 1408 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 1409 | }, 1410 | "readable-stream": { 1411 | "version": "2.3.7", 1412 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1413 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1414 | "requires": { 1415 | "core-util-is": "~1.0.0", 1416 | "inherits": "~2.0.3", 1417 | "isarray": "~1.0.0", 1418 | "process-nextick-args": "~2.0.0", 1419 | "safe-buffer": "~5.1.1", 1420 | "string_decoder": "~1.1.1", 1421 | "util-deprecate": "~1.0.1" 1422 | }, 1423 | "dependencies": { 1424 | "safe-buffer": { 1425 | "version": "5.1.2", 1426 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1427 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1428 | } 1429 | } 1430 | }, 1431 | "redis": { 1432 | "version": "2.8.0", 1433 | "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", 1434 | "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", 1435 | "requires": { 1436 | "double-ended-queue": "^2.1.0-0", 1437 | "redis-commands": "^1.2.0", 1438 | "redis-parser": "^2.6.0" 1439 | } 1440 | }, 1441 | "redis-commands": { 1442 | "version": "1.6.0", 1443 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz", 1444 | "integrity": "sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==" 1445 | }, 1446 | "redis-parser": { 1447 | "version": "2.6.0", 1448 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", 1449 | "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" 1450 | }, 1451 | "request": { 1452 | "version": "2.88.2", 1453 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1454 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1455 | "requires": { 1456 | "aws-sign2": "~0.7.0", 1457 | "aws4": "^1.8.0", 1458 | "caseless": "~0.12.0", 1459 | "combined-stream": "~1.0.6", 1460 | "extend": "~3.0.2", 1461 | "forever-agent": "~0.6.1", 1462 | "form-data": "~2.3.2", 1463 | "har-validator": "~5.1.3", 1464 | "http-signature": "~1.2.0", 1465 | "is-typedarray": "~1.0.0", 1466 | "isstream": "~0.1.2", 1467 | "json-stringify-safe": "~5.0.1", 1468 | "mime-types": "~2.1.19", 1469 | "oauth-sign": "~0.9.0", 1470 | "performance-now": "^2.1.0", 1471 | "qs": "~6.5.2", 1472 | "safe-buffer": "^5.1.2", 1473 | "tough-cookie": "~2.5.0", 1474 | "tunnel-agent": "^0.6.0", 1475 | "uuid": "^3.3.2" 1476 | } 1477 | }, 1478 | "request-promise": { 1479 | "version": "4.2.6", 1480 | "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", 1481 | "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", 1482 | "requires": { 1483 | "bluebird": "^3.5.0", 1484 | "request-promise-core": "1.1.4", 1485 | "stealthy-require": "^1.1.1", 1486 | "tough-cookie": "^2.3.3" 1487 | } 1488 | }, 1489 | "request-promise-core": { 1490 | "version": "1.1.4", 1491 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", 1492 | "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", 1493 | "requires": { 1494 | "lodash": "^4.17.19" 1495 | } 1496 | }, 1497 | "safe-buffer": { 1498 | "version": "5.2.1", 1499 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1500 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1501 | }, 1502 | "safer-buffer": { 1503 | "version": "2.1.2", 1504 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1505 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1506 | }, 1507 | "sshpk": { 1508 | "version": "1.16.1", 1509 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1510 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1511 | "requires": { 1512 | "asn1": "~0.2.3", 1513 | "assert-plus": "^1.0.0", 1514 | "bcrypt-pbkdf": "^1.0.0", 1515 | "dashdash": "^1.12.0", 1516 | "ecc-jsbn": "~0.1.1", 1517 | "getpass": "^0.1.1", 1518 | "jsbn": "~0.1.0", 1519 | "safer-buffer": "^2.0.2", 1520 | "tweetnacl": "~0.14.0" 1521 | } 1522 | }, 1523 | "stealthy-require": { 1524 | "version": "1.1.1", 1525 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 1526 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 1527 | }, 1528 | "string_decoder": { 1529 | "version": "1.1.1", 1530 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1531 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1532 | "requires": { 1533 | "safe-buffer": "~5.1.0" 1534 | }, 1535 | "dependencies": { 1536 | "safe-buffer": { 1537 | "version": "5.1.2", 1538 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1539 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1540 | } 1541 | } 1542 | }, 1543 | "string.prototype.trimend": { 1544 | "version": "1.0.3", 1545 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", 1546 | "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", 1547 | "requires": { 1548 | "call-bind": "^1.0.0", 1549 | "define-properties": "^1.1.3" 1550 | } 1551 | }, 1552 | "string.prototype.trimstart": { 1553 | "version": "1.0.3", 1554 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", 1555 | "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", 1556 | "requires": { 1557 | "call-bind": "^1.0.0", 1558 | "define-properties": "^1.1.3" 1559 | } 1560 | }, 1561 | "tough-cookie": { 1562 | "version": "2.5.0", 1563 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1564 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1565 | "requires": { 1566 | "psl": "^1.1.28", 1567 | "punycode": "^2.1.1" 1568 | } 1569 | }, 1570 | "tunnel-agent": { 1571 | "version": "0.6.0", 1572 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1573 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1574 | "requires": { 1575 | "safe-buffer": "^5.0.1" 1576 | } 1577 | }, 1578 | "tweetnacl": { 1579 | "version": "0.14.5", 1580 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1581 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1582 | }, 1583 | "uri-js": { 1584 | "version": "4.4.1", 1585 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1586 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1587 | "requires": { 1588 | "punycode": "^2.1.0" 1589 | } 1590 | }, 1591 | "util-deprecate": { 1592 | "version": "1.0.2", 1593 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1594 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1595 | }, 1596 | "uuid": { 1597 | "version": "3.4.0", 1598 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1599 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1600 | }, 1601 | "verror": { 1602 | "version": "1.10.0", 1603 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1604 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1605 | "requires": { 1606 | "assert-plus": "^1.0.0", 1607 | "core-util-is": "1.0.2", 1608 | "extsprintf": "^1.2.0" 1609 | } 1610 | }, 1611 | "wrappy": { 1612 | "version": "1.0.2", 1613 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1614 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1615 | } 1616 | } 1617 | } 1618 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "telegram-xp", 3 | "version": "1.1.0", 4 | "description": "Telegram XP bot", 5 | "main": "index.js", 6 | "files": [ 7 | "index.js" 8 | ], 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/terorie/telegram-xp.git" 12 | }, 13 | "keywords": [ 14 | "telegram", 15 | "bot" 16 | ], 17 | "author": "Richard Patel ", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/terorie/telegram-xp/issues" 21 | }, 22 | "homepage": "https://github.com/terorie/telegram-xp#readme", 23 | "dependencies": { 24 | "async-redis": "^1.1.7", 25 | "markdown-escape": "^1.1.0", 26 | "node-telegram-bot-api": "^0.51.0" 27 | } 28 | } 29 | --------------------------------------------------------------------------------