From 154831b2d469b67cc1a002d9a1ae8124fd48727a Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Sat, 2 Jul 2022 20:21:50 -0700 Subject: [PATCH] initial commit --- .gitignore | 10 + commands/help.js | 87 ++ config/config.js | 20 + content/Logo.png | Bin 0 -> 15995 bytes content/quakrsbot.png | Bin 0 -> 59179 bytes events/guildCreate.js | 3 + events/messageCreate.js | 55 + events/ready.js | 12 + index.js | 6 + package-lock.json | 2602 +++++++++++++++++++++++++++++++++ package.json | 20 + structures/QuarksBot.js | 184 +++ util/Logger.js | 28 + util/RegisterSlashCommands.js | 40 + 14 files changed, 3067 insertions(+) create mode 100644 .gitignore create mode 100644 commands/help.js create mode 100644 config/config.js create mode 100644 content/Logo.png create mode 100644 content/quakrsbot.png create mode 100644 events/guildCreate.js create mode 100644 events/messageCreate.js create mode 100644 events/ready.js create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 structures/QuarksBot.js create mode 100644 util/Logger.js create mode 100644 util/RegisterSlashCommands.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c77c82 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Node modules +node_modules/* + +# Testing/dev related +*_test.js +dev-*.js + +# Logs +logs/* +Logs.log diff --git a/commands/help.js b/commands/help.js new file mode 100644 index 0000000..b340637 --- /dev/null +++ b/commands/help.js @@ -0,0 +1,87 @@ +const { MessageEmbed } = require("discord.js"); + +module.exports = { + name: "help", + description: "Get information on a specific command", + usage: "[command]", + permissions: { + channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], + member: [], + }, + aliases: ["command", "commands", "cmd"], + /** + * + * @param {require("../structures/LinesPoliceCadBot")} client + * @param {import("discord.js").Message} message + * @param {string[]} args + * @param {*} param3 + */ + + SlashCommand: { + options: [ + { + name: "command", + description: "Get information on a specific command", + value: "command", + type: 3, + required: false, + }, + ], + /** + * + * @param {require("../structures/LinesPoliceCadBot")} client + * @param {import("discord.js").Message} message + * @param {string[]} args + * @param {*} param3 + */ + + run: async (client, interaction, args, { GuildDB }) => { + if (GuildDB.customChannelStatus==true&&!GuildDB.allowedChannels.includes(interaction.channel_id)) { + return interaction.send(`You are not allowed to use the bot in this channel.`); + } + let Commands = client.commands.map((cmd) => + `\`/${cmd.name}${cmd.usage ? " " + cmd.usage : ""}\` - ${cmd.description}` + ); + + let Embed = new MessageEmbed() + .setColor(client.config.EmbedColor) + .setDescription(`${Commands.join("\n")} + + QuarksBot Version: v${client.config.Version}`); + if (!args) return interaction.send(Embed); + else { + let cmd = + client.commands.get(args[0].value) || + client.commands.find( + (x) => x.aliases && x.aliases.includes(args[0].value) + ); + if (!cmd) + return client.sendTime( + interaction, + `❌ | Unable to find that command.` + ); + + let embed = new MessageEmbed() + .setDescription(cmd.description) + .setColor("GREEN") + //.addField("Name", cmd.name, true) + .addField("Aliases", cmd.aliases.join(", "), true) + .addField( + "Usage", + `\`/${cmd.name}\`${cmd.usage ? " " + cmd.usage : ""}`, + true + ) + .addField( + "Permissions", + "Member: " + + cmd.permissions.member.join(", ") + + "\nBot: " + + cmd.permissions.channel.join(", "), + true + ); + + interaction.send(embed); + } + }, + }, +}; \ No newline at end of file diff --git a/config/config.js b/config/config.js new file mode 100644 index 0000000..81fe536 --- /dev/null +++ b/config/config.js @@ -0,0 +1,20 @@ +module.exports = { + Dev: "PRODUCTION", + Version: "0.1.0", + Admins: ["362791661274660874"], // Admins of the bot + DefaultPrefix: "?", + SupportServer: "https://discord.gg/UnxZtEZ2", //Support Server Link + Token: process.env.token || "", //Discord Bot Token + Scopes: ["identify", "guilds", "applications.commands"], //Discord OAuth2 Scopes + IconURL: "", + EmbedColor: "#6e5145", + Permissions: 2205281600, + mongoURI: process.env.mongoURI || "mongodb://localhost:27017", + dbo: process.env.dbo || "knoldus", + + Presence: { + status: "online", // You can show online, idle, and dnd + name: "Grand Theft Auto V", // The message shown + type: "PLAYING", // PLAYING, WATCHING, LISTENING, STREAMING + }, +} diff --git a/content/Logo.png b/content/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f6594b3561bc9b4a83d488b20259b21c6feaa9 GIT binary patch literal 15995 zcmdU0Q=d6f01mxVyW1aSargAjP4$2MF#i1%kV~yWG6@uekTa zW_N$t%$aj?cI267B7Z1KqoWa_y?gf#T~T%ae!wdr2n3Al+ki|_YTMPzXNX7oZR!>J7FwYNwJ@v`X^Z^o=Iwp z9pv70A(H}ulL9i>1q@M9QAos%4aWhqdQJLkO{e~A_#P{I9V==Y(8@ByDvGwKYm8h8 zOH?658Tfdrdy%`u$bKFR@!?U^;pQp^0#?-YbdS|FuR|}z=G~jkcI@yT?Bt}omjg%M zJS;lLaOx;0cn{vZPybIZF;$0?8R&LKQd80JoICCX;`m7Va&@n~o!0JOPrsOaRWJXd z_V;JX;cS_Fo3~q`Vixb!+1FixwZVg`@xjPZMn3mrubRrob(QKhgVbmjs#YA>uW+n;VeYTKQtO;!4_A9PdnB>Xyn(5d;MJQWXyR&{&tSDts_dR3Y0M;UfqF%T^_X2|hohLY z;?Cg37G2Dws@cwPL#_3!HuY^*LVEIN0%maBzY9{ubu-COG`xaD?CUf(jp1{n;6mm6 zFqLNKLgT&#gMgQYOhGTX+hfJ#(CC!mXBPb7MmvF+C;z!S+*r*4RLFIeUd!+(~kH~d89+;rT$tkCfoEMK@XU94YlzCXv_YBV^1387Xm#nNayJo63k2>AtD z){)M@m+dKO@+5tsR{7b#YI0emdv6+lf65Z^*wbY3dn9p3R%~1LI}NcKXnIK>Zz7V3 zS1-d>ITeK*qT_wLe`^O{!FpM{Ev1Kej;!5i%Y3rf5bt6!F|j%ZQ;SCIb ze>fi*$+VN*>X0gi@MOa`iX1dPE=&*Nwo7iX;Te3qAvPPCJ4wjMC^BQmae?W<(J|4n z9(i^Im7lZ~BlF&OZXpEe0^C2K){S#MjIi*{7@>>2B3Lx0tpZbt4>=)~M zzENE3vPZU8JMd{dDEyt|e3b!t^H!`*fmR)@x|q3{#YjxL%T5E7cJP?bVDR+?Wru;< z^Ki*GUQ)n#*{*h5^M+KweW)~(q!gE+7|7PB$n!dO=eS^#hP1ifCE>g&S%kKRO$=Lw zUt#D+BPUHOpR+l5-a@hpM8r&v-(zs2^KU5h4J?M44m?ZPN; zB+k)!Nk!e&JSmP+wfv%EnT5~k>FND?cQ3!F|2n~AviJ4`v$X!SC-i8WPU(sP%{m?zL8{tF1MSjckHe%B$z5d@Sb^I!vTf zN`CV>)Y5`@Hn&{pYl=qP$Y1H^{<7(Vm*SQ1AP=~7SmJX17+be4Mzg9pUBjbWfy$j= z_#kGhxza@I`vC$VANt-jd(GIszPlecOiB?&=!PZ_dw_k;aQr{X{`B|+@o$Kw2xZ*u{+F%3B zuJwDp|751L?RjTtO?Dvm#5c|#h437zpGD!&ep6{`ZvH@q{z0?#_9W5tc;2SaBCb-U z&6|tQ`#NnjgG;GMA*W)loiVh_IQ$2y!G2e9?PQ*pD)njq^dB*y7yZvB%?wEs4U3RD z0KxcCEI;?c@lt@Oii-P)I__%0@jQJv2C37IhzM^W3M%6s%oGe&y**iY_joTfyEHwY z-UY&pweoRNP@9e)}Q3%7vnPa%yW$Zj3DdB>jQey7z;5y zVPcoF^IOeqAZO7ulXJcX@MO}Z}E9`6PUhG z?60=9jOrTqiPTKXn);uBA$7GR>-H&<@jpP z(K$T3Pen*&b_T!W+33iADI3?m(k5~D5V~7tV81xQ^o^4wgV1p|*Ps2Sp_cx@)_qD{ zq1|vkTg-wHM2#89F!m!#$Vb)e?zF8oU=42Umf9Zqdp4inH--+@4N&{21(YV!HtL+@$U!DHREX9J|BC zISTO$b$i4--oeKT3aY7@r5sWRD552tsHFU^GF4_=b?fUw^ZF<{W~D$5)}FZ*V!(eh zghODCr<6d(10R6-nrv5SRg1=_@7Y!Uh!r}ltvU~!G!42zfhn=1iwB!(n%w}I1j^&m zf96BsWnN0W9&G^~2i@j+RxpMi1BDbEx`TVAZ})?M2?rRwGMN;+OTgm5lgl> zh&YFHY8rC@9#?PgFxo^aIAeoF*)#Bq`9t3XdGb^~3v|(4KcH0v%b6}Fv1dW zqvQ4Zpi!^j4y_c*knG7rp}GhiQ5xhhJN%BiklUKu?Mh1o-+%RK@(t%?(K1}Me3hH1!47k1mNz;K}m>O>G^>EVKZ9l z>+z5Ffy_+RTAwDTH>K=rp-WQm?y)9=96Ku!%s;ZKm8snvVc__fTbPAsby|&5s<*wi zlcIn6{@f>(H~bUxx|4i~=%9S<3861V2w?W&6+E4SH0IDvK0< z3#chD-^)Na#G){6MZJi#3xpMCdd+P4=lC zYcGS~^S2Zw;q3BYnqhCb(V=721T)!svE<=o<_wVtb=bT==twYVGy+Jlf1IHc1mfyo zk_&74p9fz!pETriO6Y4o(dp<|jAt@T2;J3w&%6($ZTfUVf{`ig@{NF;7((a0IU*1! zAP1;q`X^&+*fsPR7Tn1f_dKUFFpPOh%!0sjQoLgHievS`(iH!R*a1Ra1$j*IZFVem z&k4n46g9|cy1Rw>rs~8o)MaJud0myES|%LjL{kPE4SY+qhldHWsYG?yD{@JkbD6=R zWSVjB9V>V>8htrbtm=xR!0R4*aX6BC6(A5E4gF~S-+WT?#6yF)9C1_&50=poBhpOb zvVAWDfb#x@_EGeV@`^7RG>dC*ubJhV&Dx5Yyx91FBw$piry>nkuv$2#$A2R1D_;yn z*FH{S#VNptDD(`>=Ch=VylyxhK$|>rwakc|xijt`YjR#w6=nE5_p8xpGE2=@m2RwW zFKM7zbB1(|(xqaY+<`7OQ(d<}2S>4zKlznbiT#JMZ=>KH@b+stH;{_6e3Iw2Q$l2l znG+H#^T)g*Lwn#ZsKmut@ra&vW7+T{Bh1DI^|2G_g)jR5s5Kcm%<@>J@>q7N*)dhxbeFR-ZJv?H2zk@W#JCt1*ix1FM+V^&`=gJm-nRKVAew}noJEh{V@5V>rPU)@y~5c7 zcpUJUr~xkLcq9!Qe!f4 zkclfY#xb49(?ZYXtz7k(DLwOwObt^CS&Ha_G3q%{Cu~)LUZn{I=LP6J7%^-eNRnwchUYIo5ptiAEB= zGSJ&Sdggx}kFw*xr5H!T_nj_eQT=hV6BvwVTIu2L-c{F!mE4i=AsTJ$Q=!uoHqQV8 zkVF0H@u-U1-pg;zqa8CEGx+@)+h#VuoBB_!Q^9%0e}(eWH&Kx4EugM+dH<@HWO64q zOGP@kB2M`6_p<+z0+FiAd$J2_CoxQZR4!_X@MDMhYT0&Ouq4xF{Xty?K8e#4anLWM zi7Yz(+L72D2czDxr>$itdq-k$!SR~^RfUIHidMw1b&^W;!AxneH+$nmN|qyt+a9=Z zsY#}sC^f*2@o7?{ve`Q+Dr50W&{vEI3JwMxy3|RMK;mrw>ogJ(f89GN3v+Y%{u-0r zr*JMO6ZxN0RF7o_LPbn@`n-*Mz&8j}Rflkmq{8R#x<>y78=(4y3(mxlA}*Ubo27%= zow87l_B`xwtU|YmZ^a8PXQEP-U3q;YI~N0QB{^n{xOngb;;MD#mWCkiK2RVKkCw2` z>xz4!)~vPQWQk5%ZHCUZUn4f#(Q9>?bNA>OiO=Dc(YBJ0nKKwb?tOj=PiW`P+4j~| zd^yU&vcDFMkSKQ6dWO+#KWaI)`4qjyN4DRWs-LP>Huuf#PW|at_EMzdr7#=3*@n;A z^!w-Y9iZx=!m<|)`z(*62c-540~eskad{CSyzJzx@=KGr7j6IR{G5@T*JqD()(at0 zxENkox;1QM(siZSBFSh0Y}H5u2d??C3*2dvv1k{SskZ()XF)b=^*L+PvnLVguL56m z5)hZb_jR1FIZ|A;O%5L=o%b`>rn@3UbLTEKIy=a-3DWodj5q2!Ix{;ALy>aDn zqo><$&Z#?oV^dcpuDxxru=|YrF2vW$uQ-)|ZH=>hKP2SaZaO}8fvcrXkm>F1n{`hW zjscOzXYCa_O{vKctY4WtPRihM2zxu2yYjor4$ z_oV+Tu7IXZq;qtss<@OU>upjp}3_KYWJzySb)@+4S164QwTZWaK*I&;|Q{=C>* zYc|pt?ft3i*Ii#&+(r+}KaNrVhiGZnKPKTACk5U>>y~q>vt=8ywCM4VYWQv$DVO-8 z%PUS#J6Rqg)0Y%)v2Ii<>zbjjFOP#O{Y-ny^u(GC_4O|;6Y1C;e#}eK-?L=|$BM*_k5BtDJENv-f23M!m34;$xbrd1#5F=HYRS>!`=A!S} zTbJIW#i{N6-^CE;1v7+t)5uR-V^nHWA@uL{t_TaUD5%re*<-EdCGfKX@s>P}lVlT% zMwXia*K4uw@pw8maNa6)nv{j_&pD`%hqN&Wh^`EYm8XU^VFy82RJ{nU{g})N4)shQ&|7>(vDA~alPl}{=EtziJ70N^uDe+w6F4wVXJ$|YGGVB}=+#2+H&9w}1L z@s0B(ANK1B!{7$Y+Z|@z>vZyR?^mFn!2$z=J>8N&9oZ>s%S?ZfmOKLQy7u~lX5002 zU{Vt;&C1?P4*iGO=+*FCw!j} ze#$fN9Xjj1aZ5)UaeN= zD*Ks}UV1b!mV+Pew@I}yVtbznuX7<`iNA21rLLS#-h1PuuK&J|Wz4$4ZHM5bQUE?+ z(>dZOeK=_%MUk(%ahd4IbF$JJU+*^Ahc>0U&w6p}MsS<$*=w2V4n0#Rd1bQ6->vu* zx70SiEH7UZ^VpBu8EZ9uW$Z=oov9D2jcaeNnUoSjDbMqo@MQEYl9jb9a7o2j)4qZ2 zCOLKYZD1T450&CNiGxoMI#g2+I+R#^P!whBVv_WEc}a8Kex>D8+4GBC48)$jEd=|) zX7)pxp(cW!=jwR5preFV=l(PrffE81O_L~2Vp>`U-HiOCp0^Y>KQ!cS^g^~mr(wos zs?5WKsg6|GRT9(IH7OMltw%T1K!sF`ngf9fEy{w(-g0k|;792Dep2L$_uBshxXL zB>}v0w3!(s&wb-4i8b9W3H%f{mmvw;~fT3GfVTFzba^5nU z{v?&oS@RL4Qm87v=icgNN4L&wMB@NCQx1=z^p{u8`&VP*y}d77x2G!-VIK$!$lwaa zx&yB=akiH4qH&zy$$3tZt)}wQrPk>$cT(l+;{-{B?=Sncfi1@18e!DkhDWmNu8ve@ zyYOAAu z{t`S@_)RtX?&X~9%aiZ(g=spcS4PWC{DIR%Tqk&oJbFTnGoWbr{N)a~?ZAlI(YlRh$x;5Q2l#iz zpr4A(eW)>qk9rI2D{K~qeZOZ7m%p>S<2PB*^XlE(ZnuQ7km@dag{Dha&JV3*&8-tv zQP1z4`>O_UTd~sX>p{K4qMeb<>}+*EplS2I`QnIhUWGTJF_PV8Wz959RMg1o6`Ck$ z_nAeJIJakn!T(Q(@9t>xhrY6#t?Bqesz}pEd46remoucYNmxS zfe<``j7_A!KXMzCT-%oo&KyatO3={vlXrMFGzT_^nSxtAju?YcFq2?Wz5J}T8fPnc zNks}oI>8LQ`MQ2(T)ej0R$4pc>o1_{E+6*5OOgSNrMWw$u5>ocw+ zfUjQITT8WxIQ}=_iitf+23o@q4rN@+L@Hf?uB4xNX2%+uDtm%;{QMi}~v;%ZADu zPqsLD$*F=!xoGLG`0@ev0+@A%wfR5@a;4A9BdWG?^L%BSCEX>WJ)>^Usu0)IZYbjD zs*sg+Uk|0ZnXl@deKQLEeJkJ9`VBi$5>v%Ye6UdYFRUPUgD@3mH2OK5)Ks8gedc%u zpHgkDeB%#ewe-rXGJ{u5kHjhPbiOnJ5cKc%1gd8k>L<*|I0H#v8;|cF(I`*JKal1s z$gS!$V2>TZ;unE7t4e33`ma7Sd(%|!Za6B1WJKWdlB>X0xWQuSX!Ej*`gy^neNwZs zeB-8GL2hPxybnP);YC4epLLgPI(r1BTat~zmWW9YK+6o2) zm108ZuX8w%qkFZL>BiUF>x?XW`o|W1l!Qo|NOP&pi3Q1x;G*%UYheW%R%V~Di{sjQ zTLO8>f=(^qlm4`hMU7WiR(^kr_YHqVa?0mXC!1+-e9Pa}zAqxS4!&n?O52G_#UYH4 z&Y(I2pY0uq3h{J)yOfrL&w*Px--uJm#rDEK@ae-vqZl(_m<|xWK+MPZ^(cBjnJl{t zVg^9*a}&!={E5xD@bNp)zjMlR( z`A~C8mUlk5ulHl+;h$d>a*a^@N25vW+ggR~xp@!y)>^pgp5`B-HxpZNm2^B^j*8 zfi-j6nDb-bWD{&0f@yTaF=VH~vL=32+wdjYk{sCdj?1o$a89ILKWe)kj6TOjNB_f_ z^f#gZk{;5+JUr&Ql2*3ePh9mcZ3>xii(b{@5CX297wvW-<8}N&K(MSo>_W2N$r?Gm z4HuE<6b&;qnubOu(E0dlSE01rdM_Md)nOZ$4VXdP(V|wD)E`;KY(&DdWVN1xq|-Fo z(-X8e|It@1Xn02u9`TXalEqmuwr1w$2H~ou6KtO(m&O_-khX+RNEBb!`GJU2^t5dc z1Lh1$4Wh-nQRMs2!)p&ashB@^rMAv;NVR28Yjfcn4yW|qfyW;<7Ge3XB9daFJjMEr z3XaL-W^Qme=Nz5jdD990MPi3l;=DG}M9NI}ut)s&|3dR%Zze5u+G2{`XSPpyn+WzZ zCGkHwQv5q=e$pv!-wLA;)B3%hhu_KG+3P){6ko`iCZh21{n?CVfj?ZXWA5`RdP;61ezdI8b-d0nj6z;Vh@;03U1Hv zDiLZk#I1oxv6q3N*cyLJ97C^k4sXrLb-p6`Tc)?!S0Vg8F znP$_LYCxgbT}kD7a3kOO{(a=aK9*N6fJ7$2v0ZcJp4U#T-tLs*n}zU_O-=G^he3OS8?rWdA?luf|;-)j=xenp21;>60^|ds4QXN zM_gNahxzXwi|zH|Av?~;I_zHM|BIzA!c61MP7@|tzA3@t-3Cq+3Z|sZPk&`a>&LcjknGHR634b7WR3|y>c|r%&e>QRp9ZG*`vO1_i2EBxBC!KWJ{uT{zKy(l%#n>7 zeexnqwFb6|9_L^{bG2A;{rBl%D()0&E5uYx0+Gp!Am-3rmdEF684JT8{JAc4g6#U`3B&SUQe|$=xA$oCwX4wL(N1f07L!K#vtwtJ5#C`2W;|^gq#tFu z?`8`v$mwl;HBQ9lkDa&&v^mE%=RobknS!B>)ve*!pF9#JFz60Sd8%LK0CmCLPM$_4y zqGr}{BURotoDhf=xLhjb?hnSkCG}V~UTzP%(Pugsv`_Bepp2 z@NemnTneq{d^M*uvgbt?_WG?#!7!GKxiOP2bst#VMbZ%Do1cTaD*FzV5twY^2I)(d(# zbs?-XOd7I9TEG;p68(oc;X%crs`QI#$c7nRko*oga$(WD>+|u2d;7)XU{$pQHZ(hS zP;^xym%$k(d0)ypH4fGe{;15m?Ci(F2~itUfIZA86DV#0x;v~y zZF)X`cBQHXRWkN7P&&5|6VAv^1KBg0dWUTaI!J5k?#(lh=zDFHOC8}^;C%N}<4C@G zthkl=-|K^&c%OeWrItT?&7tySfaA7OZRxVlUF1{Cf81RdQ<&l->PokNfx{bUIVW>e zsA{{FYhHrH)tFRGX?eg%3i1{Bt>^IZE}}Vnd?bubbC4Cfd7dx-c<{ zL1g*(SZCLAL&)d$Z~`C6eiDLIz`Gvkh`(6Tv|7@G^~po(A%cii8mlsf)ZYw$+U*aqq$2uxHv0GrD^tFbPJ3Ps$?Z-GdEheQplbDeymVE?37uHnF7pdG_LfTBb7a ztBySl?B3TqNQhdxo;kJ!l>QB7c{MSaW9o~0^h_jG`><+KuWqaadnUjBg;wr`7 zeBmQ;J=xZ2kIjWmF?y++cS1qwCpj?!m(b*I11q}*;d0bm7C0|a+ubu95?c>@Wsbvc*!0#k4Q z>B;IljzK|b$^F3SlM_V+g^@8&oyU!>t*z^Ae9#j)?=T*97^7bfZw*u7unFPqJYHO3 zs2N06>sJ$-%bZ{baY9CuC2fUv6XS0?OpVOW=y&SKJkHw@xh*F%t;CU_6xlETiYMlp zj|t>|PpvfiztFaAv|08q^xn;YgOP%$1J%<8ALhCw!re5~tTw#%B|4)xBDw&wOd+_; zSo$^pfO7^cG_nG2whk59A=HZNQtzhpri+Wo3~Y`{$L%<^a&?65c&dTh+rSp4DcV|m zCXkglou)lM0PE(Vn_Go-&~dupK*~Cc2`#C|@|n*})^LXmJXtLYaM0@F(rUB~U28k6 zz}1l(%Rm~*+<*ZIQiEj#bvDsrkNQ)TDSEAUgU?=ohJogi-)gJvWB%{n;mUlWU$EW@ z{6(C`=XeIW$~|7ldTfLK3C2;m8w!a$8zC@YycW{-E+O4Q&*WFDjtsZa?a*KOLq`ye z1`Yomlx4v^|5sj|Qxo7w;RN6DenzBbIfktEhCx+D3u4(!<1k-vp`)DJYIl?2)mz;r)=J66IsRP{Z~4DY<*22*Zhu_j z>Q}+#($LUY;&A9vufbz-hP-!Z~Zeb0Ji+~AHeM1 zvS55$P#|g7a^6^vjHdsDZBl4HmQft!zo`_EO80u7^t_exHb;wdUrw5{IIxa;iD1d-Cu&OPCVKQ?V+9>$?NP*Gb z#;;%@BvI#Z1~q$W*rrpc_;rL9Z(M!vtm_a!rxAE`bdqYZK{FK=O~!1`g2FjdVRQGz zxqXojGex}RmqRC-ROH`ML%rQH~3%#+$hbAG>MVsS}JMbUXNNgq1?2899 z6s_{*HzmRg?Th=_V%h93imGt9E||n?%Qe@nPeO7~fU#-V;_-rkZvCzw+wGaipCRr5 zd+)XOwwd7f1keV~Okq35`>Fi7VK|_W?iG=luKy;#$Nr?^)3x0y;>Jk7f{wheyLX8b zd{ZZy;z}!wCIPbnnCXV*tqa;L(SY>BnD#N;GF_Q&JwRIDsAoG3%uR$8W}gk3nYD6jU{M2l+it@qclKO>Ji9x+paVCNm} zg;o!P$t%3TZq#M*I5IuXV7sk?W-+HRz!5wHGyg|th1v$r(CX4I9*0%Nugk82DO&^S zQI~#z*v^F&^;Y#Uio1;f@=E&L$zO1OH`Rm68XtJ7at(>UlA%yHr!wi~>iH|KW24#E z_zyOmwDp5{91^)~peXf8Av?Q*_C=xd33jq}OZ&=@M!wZ}o*br{|H-^^F$I&ah=SPIrrACb*NhSyOn~% z%9#(1V?p5w^q+#Q1ooE&U1wP((kYUI^H=sdEKf0j<`ko$X=QNRZ%V^&96(Z^iswy& zxM3lWHD(xhVRmwq)_&M$B&8~e&!yvcKH&gWzjrXMr|^CW5obxx=}@B>$Kc`YQ3q+> zCz(%s5X%b{JI;$BytAdMIND{Z6$Ohwrt0R6w9Am6l|QH63o?IM@zLc8GikJ*6+dmg zQ+!x52w)L;xR79X9TdfD6{!lmHNjuS6n_4WS;?p<;LN*@m>ox}kdZdu8qGD8s6)1p zCvhG;)fX}{Ot!56YScdJ{f?V!#+|vyCl3#077!TGod{|@{i?pr+P4UY%L|}R^qAlD z8Jo@D9-<4NV`)Ff^t#`8;@YJRjI4fP%7Cb2WvvAtip+6^c*qhZ+@Q{Z)-r#PwH><60G)+%YYQS{yIrH*NdHoT_{KYOi!%gb~J>pU(3qwlM>Il*LZ6LZM$Q~;T6~Cn z$d7j1O2byX%g9E_ns7chszVJ4{($B6Wr)vBZjq*O&NNZJA*7mqn6YhbxjV=`~83EB3j^OBf$5Vs08|A9I7WM&a2e zf6r$iore+_q#B64N_%Zaz9mNDiu`8j&}CfmDA@1*G}b*%y^A!?iqryvNH29iTp7s! zbxO3NM(29}>-8E)+_Vqe4@JjGC1glzt(dwq3~`);@C0m94Grb#Xa^$fFbTrr%km@2 zp4K3+E-s&UM_2{oPEdWMEuO!ngcY7gZtVm{7!SJNy?R~Y55`kVqeZ|`ULQ}X#XT{V zF{Ko4#MD%C6F`C`d zJfQm;L*ppbAIRv(EKE9$5hWqSP$;wG6`s+m3@`3KjReiOU3{Hq1)TRsq!@mKNr!{4 z(~ynO{@>$z{Bm#pZPde2do6q1fvGMR9`7Qx0$p%x;3!u$9Y8zOyG+r?&FK07Hy!Rg zPfYZ8<@f(J4H#1ij8RFDtm&SMgs%(>$)xW*L^nbUg)IAD}&HsJ)u`;kOu8lY}x;YwH)}yg^-6}B`bKE>gY~@Cih1dIL3oeB49t{NnBIF z++heYTZla702vgGr7_Vde$2!S_na@}G9OjrUt=UO+9)?>y&KRZW~XIZ{ z3xo~XxK2~?oP{GBmStD4@t!BZ+B#!2o67(e814I93si58WpK?ZcfF2-ndL1R|7th< zJu_Gfzkix3t$Geuj5Wsohfi`ecFd%sRRsHPy3_>)PoB5?TM`}vba2{?!SzodfjQ{r za8{4W3p}P$rB+t-^Uh_LPakiugAYLV3HHCLDk+LM&+vznKvOc=Os_ZRoo2}KuX9*8o!_m9L_tKm^YEf&3D*5WJP;e-XovHXf+&Fw^0A(+Ja~e7ocqt` z*(?zqeIaCHf!R)kmh>KO-(M1MVd$hZc1w*IX}p@e_j-ZOFLiZwTpMAn;}7QgB|I+e zyeZ4>B@$Y{e`7fa<)ua;Q{p;-sabokC#4w448R*Oe>Dph5QzxPMSK20ti(%LS5Qf< z<&_}MNCYI}n&havZ!_&`OKAdAIQLG$$i=d(7mXfln_dfC9`l}GA(#P$T|Y$kIUEf| zgotDM=tOka{;NM;jJ_6C@<&OJDyj834lL-cW?sMmcF&@`7`9pyTaBOlw^ckgwnYBQ>9G0}S5ob-dh%a2hBBm00Hx~Ejt{Eak=zz7&~@4A?o`jUV7i1sdN6s{ zCL(f=Z;x0Wlr*D`*}Zkg(GE2bYA<2sIgNZ?f0i^aY8f&G4PAQo!D&h@YSi44yqnMUOE~T6SMfNTlfs1L zDYXc^*W~_KO8y?Hjvicg{HxX*;o)Bz{0;L?XLp9H?B|{mL+fvnj zyj2_(`Jvn(AqC4Iq&;xS^Lj#+L5DIvqb4JrqUj@S_>{EqyuI*6hPka5OyN1FzR@!D7o>qe`FJ5?*xjzuKZbzun{U zFLPii_0}bi?R=*vE|T=ut8C5Ryb4@GLVBTiQ3b?&F*a4Ch589RAG(8$jnPd?;Tz`p zVCm_v&kK!AQtl_KWjr+M8S@SG;(IAO{h#M()K^V5$E^ODA2{*Tq{5?5I6e2GTA6i+ zB4;1IJNG}FDW$$S`aCFxdzGNo)NqW9_7!iX#XY{PvPD-S^SK&aP;fk5Dd>$u64-;f z49`P?nv=``wX~J_Fm|mX8N_qnq5o03&euF=I%(&36PvJw zc#483E|``HQEs$fphdwT`3X140CdF0=>EJr_QGGWHZn9c)sH*gBR)BF#B(6|Q}<#h zXW}=EvUAWu7)bIx8r75f;DFHk_q$VGkRSwr3#0>IZezxhz~JGFkk<~;ZgFwc%NDl$ z&-A4VfuUhXTrki_3u5XeBOa=m_g~8(^Lq1pnV@4AA(Im<1Q2hDM3HG6(In2paN z+P=Je)YdJ|%9zg{G12Kb%_|fAV{XSx1gg`T_mL){%So~}pvj9|OH1prFR1UoeuxZS z&tPW#z@X3_7+Wv}g&Zsm<6Zsd7aG%$uH#@)`jQ=KU>_<3@kfujCbg59KI*Yf>N5CR z^G;N!Yg*K+%5I69-5*8>cAj~EQdt-1193e-^V(a98_i)rxFpjw{6Z>xn@B$Vn=<&i zVLRN03&!jhT5T%NaL6Ov%S(NiZ`StUH0Cs7Ww4`EPKM60v1`7`hh>jt!BL1DeQJk` zH0eC z7Fe%5Kny_WE(XQfgD?9zWVxs;E)`@cZg&lP$%S2WT6R|_-^E$n9J*cRyg@1e1=Q!f zfdg0}*h$+ZTs+pAYiEI>?{kK+K965Hz+a$QLx{OZ~_Kn#>t;1U# zug$j`OM*!Fpk@~WOUPNd$GIbXoU)8%O*Hxjjt2+gl)0JH!Vts+=r-YdWBur&>4IbG z?HTgGlZ>eSqqNz8&l)WFe2%bK=77uN$ay7_{n`}!>)Ubc`g-j?+lNhR{EmZuwnd|F zw)XPvJK-Ulu}LenPFv=9bn2whHqX_ z!s0`%W~ltc4Ate3Tm0N`qvf)O`7vnj1y)l+ph-UaFb;N zgx0Ng^)>IaVZi6VD!6A+M_DcB#)tQl1>o~y@^4o!Cw1I=1)O@4al$DZ1UzM7y6#I> z3p|i0u49mYur4N*>3_7eaRKtfb_X68CQjZ!f%ec{SpQ#) zv7*9?MTnQ!VJ|eEsQ-q!bP}6K=-IZ~>&cG#bQ{QQLnf~K;j}vF4=&E(p`%PJwK)l% z-#y8JX<3$!QBCLP;{KO|V%3-%{alci?kK5tW+!QAxBmV8y{FZ`qU7t-71hV<(@GTa z$soBbh_O`T)b8!(zwkJp9E~85NI)*EHB(*3G)rEe8>UheqB;nXM4;zWNPOD7b_SON zqub_Yy>gh}SyD$DP0!CvSf0j@%=f!>nxt<4)|g;Bn6l@;gWf&}oT%Ac(*^(8D`@sx z*$Bi1_h9#Z)Carrl3)Y>_XZ}ML^QzQ51o7d}A3-fOP8<{Wd3u@bJE>a!o>JG5)p zE_Q=!y5_rf?K9i8>krQZ`+(mddEGAV+9k5fK=-m`*zOhVVvaxuN_zztb9d#6o}SL` z`@0P8UEg(o*HPVptixv$Z(q#HmCq6|88EobDRS`u=dsHN4E}X6?cHrmm)2JJjX|;_ zm==b@$g9_VEH5*Htm$ai6Li=&=*64&cJJf;Uq2WlZV_j+2{>R^0UwnG&Qv7o>iDP;P#s1g70X}xX?2*Lq)&KoM zydN)!=ypqR;|qhH{lj}dlF;GCpZbUA+y>tGHg{r>S$$gI`PR5>cOqaR%zk_^_^J@I5e|paS!+UhnpXfZ3G2}V< zzc!Tj=B4;ky3hXUIhP*q7B$o>xW-eG^bgx9qI zivQ_3|4y6XtN*y2ztiS_X7TT|`QKUmJ8gca%`Z*jceVK?9KST9-%aY5aQwZh{7#$S zY4hJ`^f$Ko@0k3BOMgS+zasHpv(E3d`JFbuB*pJZ>X&f*GHCxEz<&wH--(>xY4ba6 z{u`G4=578vCV%1j-*n$!k@)*?^YeGV)8=>D{E`&ES>j*9@e7akTU_`h9Dmo0ey7dv zwE1sX_FI$s@0k3B>wim`e?{W&!_Cj%{r^5~8j$yQCoxa43lD2ow+#mb)0Mp^OW3E9 zL4ba%+Pr=8FE7B~36TJoOYwiW_+CKJI?mBZ52RVRB`Aqx*k>M?<_nrE|{Mzg~O^5dVj>-ZiJ4 znjiS3H+<{8$Juc;O^C-tVK_?BoLr#wbC>ym&%bvRo8C5F{rj$q_yIyWfYJ~B^|T>C zWbQ~XnlW`)uhWESK){}3F@u^R`VlKL{KJq&hiAUc3lD<&NgxnU-ZnC5{9s(k90yKT zu#LIufyN??kUotbQ@64Hn$+ah(PzY=7`gu-V9OEKn{kP2|5dOraR7@F7aY^T-zlL` z(NJwu1|4~L20||n8Z^l)u}IOn;M0izpb+%(Oys6`wIy@wD(*k#f(Gbr(Zr;)rU8E~ z=e`iI6k@3Jm)ma|)OcR)s9%z_Jh9=XnYM}~C#KwV?PZ@>{e*sFm902moco_IMFF;j zraQC6kN+On=c(^n(n_Po+UtyV8q2Ozzn>mR1@{@G;zF;et-hfT+Z9=@e!|_&mt9=G z0{KrfW_nzTpDj#C5}O>pt2x3ePse_+$B`kSdJEm zj1Y+2gj4PQ{hg0Rz^d+7-k17iKe~;CKu+s#OdQ*H;jB+o?Cgw1;>W#Yj0ws1aDCzQ zxE2IE_3~d&y>}mYmj9;@2ibo89}l=X^Y>{anA_elmk6RRg4jmdLmj1z{m(D^pC9HR zuf(M%T)g!&wO=uSNbalHSMm3aN~d!4ugY@Npok8t2jiIeR4C6=JhGWygX#K%vBil_&jtVMw(dH->FFz z_bK1TJXbsK5En^oxY6=sWv*FSsq*Fh10X$^h5|hziCyi%^9g9=g$}+Oc@V$x3E{Rd zWz^<36uwYCCNl&ZlBN(1&lq_coiyRiPd*w;JK$R6&3oqw5QaVV4~71|PbG2>1I4dy z%Y=#=Law9_u!SpwA<=dr2S>V>gx9g!oA797YViS6R!(ou@dT>L+#bv!8>h|%fN?k+ zyfmk6obX+gJ|d*24= zx3vTdTg`Ewx55P^b+k}s!U;i4AM4VpFU4MwoQ0!}zIG_-!!|oS9+k;wi}#b7&eAts z*F2CdYUjx`l6Fp>5SrN;G~}dSIv?$t2(zNxW^RIro`0TN&cDtN>(nN46^CeEK8L^o zD}OBEf0-0Fh%@1b$s_ckH>zfKpo}WBeLV+FTb$mUD7;`VU0=)SR^o@{Q~2N{^j zm;wk-p@Nn!{;;_cuXa!PlfX#_zW6VRrc|y9m$~447fUr z%Y<6a&<7hy6AG8`4Lggl#nMG+lN1p_EcJLhJ6?CLv8~k!<1T_`o#^~#fv{zTb&SVr z{@`|?X*2*UHH;js-*Rx$WHVboTKJ)(#ZMcee$c#UqY^by)7r96Ts!8*c94Ni`qbDB zb@)TM_PA1Y#&_DLHZJE&C4yf}0Uc)qmxGok|L8`!?|Kabt$%stMME!RH(z!(0DS5JZYg*aMC83=1zjr>`Nn0; z)u##`L^+R=%V@)13ix7m%llUi^io0@+n|aPYGZk{PAB8Q%{Jf=1kFh52e*RrdpZ$! zz=tmk@c`l9Gw}GZ3hludZt2^f+4vghFNXAG!h95RQob9LCz*gF+G(ud0(PC99!Wt>k?@kyvpXy;B|XZr7e<1r|Z1691p} zsR@#yK**0JKv(JPImz}av#&pHNbafq3m z^yvFOzgKcVRRDJKjvWx0u$&Wqs{12giUQ$0V(rt9>3fa6Db*TdJl+)W*2vxT2(6AR}k6Gz&mZ+j9?sMlu#lZuQDw7YA=QK@L}X1?TCrcFAP_gd&IgdG3aYeFT4JV^<#MNt9QPqKsY|PO^ z(2nmrpD`2m^=qN8HuI+5lxt41)T%5^mXXxZzCb9`U){b!-6k|&)s~;qH73G|X9+iU znv>6iq18SYhuVNtmdRGR_sh;qQU3L=`_|VMp2Ba+x(RGS6An>&sclad-{)tTkX*%d z@u(*%J=P}$-z*-v%5yJOWG*)?^_ss%r4=@rU-i6WG@~1zlZsnWyrxRddRVd5JT?_g zN|S8|;KjGGpQ!2oteY#VHUF(b0P>N<_7O8@!h zYv_)VCrTh&cg$F-1ErkSk|LvJ<=on+FJEvN*(8sj`PjYk0e&UO}bNjF#f&l7IO75+ip&3 zx1o6>K*z5(&{hq@UuCuDOgHq_ZMUcE9dYu*k3NZcu1{in3$wK;;1wQ^X0UX=6~B^7 zGB~)TVIb?7$NS~>kXjL!w^hO;p zTNf_end{ms$b)Fe=tN{#Niv;zilrPW#h-EZT(P*eh61E-Q}L3e)1Y>=wOu6nt7c~u zWV=cyhU;>VjJ;oOskZ#QHewzFnlVMI2jQ~!s>CA7WYJ*P?fV{O)k?!*=2xny3Ct+h4zrNXr1 zJ)}&&Yn41`6a4vA!`*@2m!NyP=pSh9^Vh@$YGb;%j*tClbtcK(?Y^p(ucEs36gARs zod=cCCKWfdyAjIfX|fr;ZQ&n>lS=x}*1Q~0Tl=m+e1;j;uLm2ijrN5?+tL{8{W~dj zQYRwx!h~T-ua;6bO3U1ZQDTC@U-CWX-}QbAh)EjDV~#A!UH|;&`>Xx({@-^^bzh~u zNaie2)k$x9dOWzK8sTSOZG~ksOs zHS1zA&RH_w^yHf#vV^V4l63OhGfZ`#3(=M>o4H)Wk@ESb+K_E0D%4N=+R=D!HeAD&>towqTCYm^S=sY?5_%w!9K7QcfXnLQTa zAz<4;tcEMmAbscYS*&byM+fPhk^Qta)7+MMO1Hdf z=SL-I+Xs#Rz^Vy{9`C8;jHoggHYFdWGl7y(j0%}Lhm9d*;1^|aQZ`!HRAKm!ZK$@i zF$qofo(iutc)&ez3sWJDFh`5&ehO1``g?sggvdlS3@2Pgt{6$n)TD3Z`^&8WAhL22 zt?U%00=Y;U+nmrw;fB~u=hF=eCRSU?0NO@`_NH+g}L`2 z8;zhvMUUzD<5Pv&0u7^u9>lS@vMUsfqGkk%j0Z4Ue}C=yal>#zM%OSRr^?+^cG1b_ zlaPHiiKp;R6Q9g48H?c2up<^1=53V??WIM~qm$Ujmp?gq-C(#p<}it5L?p3bLW%e) zS`NZ^M`&*5y=15J`cg&R^@ENOd^s)4dM5GSxf+$8zVP#o0Vr)x2mIt>itk0Pt%`W zbY=~0uQLG_!i!ut?hUo*>7d!QmF9~YT49ZOHBaTmEPs+*2!+i@Tg{=|(Mn@`4=o~( zpX4l5IpIcr7*2Jpid)|VP(YT=foJy3m)RC3UXe3DnUx2JJ0ZV7S zv^`?$nnp$*xN>43T-7A<8zQLv_+qhqsHBH)X@ZB&TNLpEL>c589t5ro5c(+dWXC_z z2{m(KpI3^Ze16R9o7y|81W;)nB74*&cj8d6;+^iR!$KIpe4!@#@@7}_2-`jbY$_Wz zhJh2-G8As5N43y8jYihuh?yaiZgUNc?8=g(z3kU|W!8F~dS&wW+1+|;F8Hpeyh|XL z)!3Ga-RW6sfjI_*P3lbbbZT8KC&}EMV~c7 z#SB=)597mU`6^4wEqu>~9fi%fj*>Tko28}^bP@;?zCTPyxZ^V7z8-TXw(8UltLEr_^gG&30w05d~>Z$Z@h z5Vu!_rMdXg(v?;mkRVN9E^|;QU)p5` zs?suA{F8IJLjC5( zNFL0Cn5jcFmtScn)mW2<@+L}u;yI)nr0jVeDh?9%L1J`QZ z#>dmf4Jz6Bb7vDe!m^9)Xlg)D8$OZ)gD&((lrC*)(v}1z-@o#N)KETw<*wVaFrlH~ zui1ilcvoDt-@a|$=}q|-VMCzs5ur(BlkQ%hj(kjSQ8Jcmd}>I_7n_jO}#Ag z@2pOD21aWGNznd#TY*-yjYRd(}%2c>hes$UIgdBWA z9cC)c_airQ{h1)4{98el&qGGa{aK)Z>`M>UjKA}=gTHv)OzS7w3zrkoy(K4mVgn&a zK46##(UX59Vdk#vY_6>;M%e@pBt@iZ$G$=YdhjpA=zO8VvD83qex?@R`gWq%oz6|JnO&or0 z>si5Oxp9h){L&rKQf+$ig|(hlzkuZxwiDH1Iya$)FoJ9557Gl3ofdFk`Pg9pvBF1{ zEad!ko(zx~5u1K}nZ9knJhWVJc0Jl-hniR6sjCu(mo}LKgFC zupc;v073eH) z^{AnGHg3VYTjqv0Jt#aY?zpJ!+J@E7H?m7P1k{~lgJz%YFK(8HN;VA`jmv%A;BW$k z&fGPa^1+yl1kg_mVi|fO>2T~C5@>g3Qy!HD>@m)z*r^oySRTMo8cIPt{v_0C8|r+4+@m09h0e!`5Q1hu3*rQpC2D647aR_+Et$biQf*8x1tj;xQV^cYRS{I$IHeVX_ zQA@q-SuguXVzg8AjKNik2NT-}+LPJWl_pQF2!vYT+H}IL%UWZBgVL-ybm!Zc$G09c zRTh0u^tze%No+VDJ##8=3wdSObull!2D#Z6gn{#v(tMjwv7m^@RC{B|+!2gy;CT^U z53n+de6sz8qgn?RhV(<*s@*2#0nLS!IiNoOI_T@kE~O6io|p}S@dk<*y2uPg$6Jt~ zIe3F~iF!Y+==!COqKI^`J9fJQEH!bDGxlXb|L6u;-4Ep-5!z|7m-aam+M-;o@&7_&nvb34l?J~E30KC8C*G>qN0hRs@2Yqj@%$ha%L$}*!qfDxW4L zU2H^f0-T#4Gh4$g-nfB_Qu>Kd%e31vW@|t5zWrd}KCQ{i7BG;fT0Lj>bx{aeG$*rA z57N+J&GjA|33DSK3wo70zLeO_FF_i*_4sT6V6XN^Qu`K8+A)k;i(jMpUh~hiT}0o3 zIf5>^p_Rx?COWL&QQ2vDEp(0IzgEmg8zyfoZ_}kfIO_}|Oz-3VZeRf#2PAXdx%ZF^HFqc4e zI|_58M-r0=nsZ4yS`xA3uetN#Ga{YnT{7`u4MkHan66tD(EeaE_pRv23a@;F%V%IN z@Qe9mNPHtitHae`O81i5(!;A5EYZM%1N$7q@Jqh&xFl}1^(=%rxza}@&A4|kJ}4%+ za7?Nv+xcJfJ&__?lFxw+%`Bva%^pp&c!DwvmxX;2mm5+6+L~x$N=qzzRr7M<&ryd1 z8}6g8G7J$h?}xg`H8zQzE+xmS8`?Fy;5>Sh6OTNou&u%32#IW_-H=J4z>iMsQczyY z#%xp*=P{lOr*`323+%MJVxJ#ynGK{KtFrV`?}0!=4x4QOB_~CTJ_sJH&W`hnj)`zX z9xdDyctvXJc+6s(vKU*~{mt7vY|r&D+n7+{(t}0%x5r(}>9c^Up#ESypmao{5xek} zoB{O07s)emZaD)42ByaQ&dZLyo#vQJ@@+D{HSsQ2{x$2b0fP@VeL3m!_<+^a*MuRx zSP6Jdm-!46;Ca09h><5m6ium1!6qhGS+gG7l_to63wD$t+y$UT$iGg>m7eQxZfF-@ zMaua!Y%Q@GcwjRKODH7_>I*ixf1+!wzJUPpflhjj>jEu*QM9Lc&GnS7$5*x`KASmy z8?j}P(&?u8Y_{RD4X{+iD;d`}=G|Vi-5FU_mkn~4GFGIlF@md*+s|GneRh5%2iDYE zKVD$q=c6w3^aGcaKaZC~F5V|6G7@b^j{!KPwGZ7U)_Iw2^kStEiST134NCl8_jbN- zBiS_(Cp?Y(3vQioF=#auC)Q)qf9!$JmKTJkre!o7N9$-m2P^EB9xZ{r4E`Ea`=sgghu<; zYbIPIe#P+Fxv`jh5K)W}hW&_}hg5NDiCs^)Tb7Z39mvh-C*HS_cPN8eL1@Pj9^rwH zD=y4M499RDP?nMyvc8{r0XCv#b|=lk+j?=W>hr{%$a-*IHe&iN(P8DvnQ?&e`Bq44 z9hAW+jBVb|NRLI2l_{}s0A~rF<68gpE~&{anYe;`_3d&(M|l{8)>V< zqpLtLICg$!2prq>AYSf_UeS~bSW7woIzHOJSe9gwjP~f@bR9dsFZj{ySZ+;aW8Kzi z!!;%3`WM$>fP?RIRZrf2H>iq_uS+ej{pej)#x?SsyijzU363|Pj+&UWRBTICUE#;S zK3S?GZ8gxZViiwKQJk7h7s$P!3?OE<-al@9#~WCs z95SXbkEk35GdE#y>m)%g#`Z`TzH+bph|h%6=+V}1<*l?9X$xOu%NPF(`MguNHrV-` zKoG2QOj)Y8_|LL4(9(VQ!vhz00SvC(;x8{i=pEK1{$T&C^TX$@JGeMf>(klVF&lyA zNi|1N!?pVlI7`B|A5oe_%zG70mp=`-(A3LTUw19KLiD6!C0z8+Lw(z*JEQSQiaP1< zeL?^}^I3l6%D}Xcp9?lSfG3^9i_}Wh^`%HwR$J3TfzK>>$(^kXp=Z#d`y)ir$2$+1 zS?Ap{EGV<}x>b`+nv97HlO6lfvoxuCLF93amT21^!Od@JZ1rk+6kl z7^8?k&WvA65Z{=K3b@M!!i}M1SOBe0EfK*lYE!RyYYM{L$z`_b2;L}50a$~O-GV#I zZ~Zz01X}u@OYWTEaN2(_rK0jS2REe?m^7z)XM29Pc()yITwwd7eGm^el5{sWt zcEMU}2+!fEaH``O(L_bFLyei|ll*VJwj$ds(>f#cY%wn;aB#!0VN|qp1 z@r3(m!H5+%8VO)f;Wv3*TmQ*u{9DbKJQiQi?bR4e;%Z^;0Me(q05k^Gu}>PVb?sjU zxTqbsck~!9>YT^JwMykN|B4%!H2N@(;>NPHe6n4fzBGL+V!D8aa0nZQ3~jDO%9hbX zun0*F;PeYS#7b!PikG52;oplR`F%eO_6rmSZ4!a`zm2w;_dxsx`J4r)aMQb9?p_zS$%q5o=a@T-rRY;3CMoO&p+f%V|7&a z@-k-(k=f&w)KjV1V-){<185S?kqRGl$gS8?u94}NBZq|U*6$PPXCNo?AtF8v<4X=4 zr+~AMDdC*Q&2#bS&i)Zx-`Lyg8&m&SA_u0eWeq_BfAK+Vghg!`=zl|CO`#z%eDK+) z&r{PLzOYl!jGBNqW1)JRvOuHE*TqjdsbNegu-d2JAB2KEU!!bgHSGfI@ojYSj_SDT z6LCepPeOd;mq&T4QNma-egYXifUlkbwK)P{Ma>pO* zJb7!#&F)tGOUxL2FyY=j06anBg29(;U2@zimL7V;SdK4Tn< zz=#1r+WLWl`~G6q*DT7WM+vWr2)l~M+R&sIQUU5&oQ2%l@oZ*{8(MO~)<{Rr@=)zj zZ&5?z-mr<}%x^V*=!IGNi(P-z&gh{C4I3LrX1vP!d@8zjQRDY)U1QSPA3P>Tx}Ura zNroGD!Vm%7u3QVV3y-QOo{PAHKw5QGjtw0792oZ)gIsA%GxU`mn<53wh?lM=ZZk1( z%@EVI8>TPEXz&i1Xha0cma9Yy;(Df(gW8|6w>{AYe7ncTdK}L2MEtrhYT>~qQQVI* z1?#Ypda#OHX>#R5c%xf<-Oso>t>R|xcBle?#vSB-LUhxw(oG$I(#9hMFo)5wJT5M!6cl^6v5qeYIN~@K!pCWf>04JW`hr(InSUUHyJ@%p7 zAv2b@gZe#>CqlEpTemsl*gOt0#Tt9)^EvM=WE2Xc)wJbH-@a71<=x%&0T^~&Bm9>& zn-wOSLCI7*gZN`EBYHlei;GI_K~7hw(l4AV#s_?SM<)aur{8>2vLJ1w*a#P!%|CA( zOcs%Zfl3aTF(6N>Lis%=29w0ES@XWJD?X{lzOy->>o8C)tZZ*1P6R6(2an%~N-i^BZ?Xb< zbb}IZatk7jYJJRc@+nI!R$B&y2S6P@qZu+t#uM?WWguLPG%)JBMa*@?S!j4%1iVp) zgqV~W0O{i2v>-|bNMf(Us0H?H3?D^;=Suu>wfrb)*WKHn+W`GbAz47})qMLya#yM$ zv@a6=CCq!gH?>4s*#RjNY}rrUaw=&IbRDyEJ)_&*y*G%x63%DUOgtxbSG_hkqq}_Iuw@@J+QT6BLG%8Uye(Kqy#VWIf|31 zJFK|{Lcy!=O^u`ABCaNuPZQvpTKX}ams|l7N{3r8StaCqgMIvL%J3}Dm6paiPe$${=a~~@xobOD_JXo2Y>#BLStDTy7bE5inyV|D zI3d?x6572Rwz8hf^jR*KzGSvN=R9Mo#g8I|=MNA*h>0t=MyV0pGkuf>#==d{3*nl5 z+D-_of7o;iKWGk==`Om=N4op=CRpK*v<|hMn%bT>+=QyDcaDKFHv!!Co={nHL84w8 z-5R?6TYg5xfqc z!$CIIas)%y6zZxEm?bujgd8%P{TDiq=aEm4aQXzN>*$+z_@YT!B@^7t0H{#+vm*I^ zPJq3&T!+4D7cy(TJ^ew4?0_En3@aUEyBrq1CLDr0HorY={8lP0ox2fW>r)n}?MWur z@XL0aOe#=6J1#HkgHIIPtzIr3r5rD`M586(D>?XJpcxg5Egh&A7if#g-umu?m&NtL z?2ur;m2)qBL`(NX&c(*DMGvqEC*W{ps4nA!95)S5A{ewjkxcm3X9TVGOkCx zHCr~&L!x9Jlo6HkK3_lrXnOyPkb`Ekr@PYyP~fU6S7v$_kRF}%plBRPsme9{cmyeg z-OO2ZB+{?B^-H%;!Ft66X;7QI#2p&`BJg4$00p2JdbxFT#=0s{PR4b&2jwoEj}{<6 zxm!jM>D1R9Uh8%FPSf6^m+&+j(N5dsBS4lgCl`8E&%)ciGHGM8lBM;4`~)sjhoMzi zS{6zx!^{`TbF1&sSe$#xekCV&hff~w+)zb@7O5G%T=*KG+()=CT=DYBV0OvKdcT+?3 zjWn5*E~7%^dyGd&d7RJ#SVnF!h7V=ifcK3X@2&z$)q9UUbPn@h+gD(7VFld+vK5rs@5H0b?+>#rmSrlw6N zgGlbZvo;xJ0rk>UOzTf8VnxWMe)X+ZZ(OXqKu)*_G5U|C#Tihm^B2UR zjQs@m4e+k-P-9op4_t2;oWZzj_DFyL65yaq&Q^CZz;p~~ZhxFc%mIqYGt@mJN$}0hZXV$Jk!ud*%_5=Yw0{PzK1t8~Uh2 zW<3Pimd04Co$&q}R>tDOkn0hQHFd8k;m+8tu;;fMiAvHD6bgYV^YE6!E)< z$bR5x1^JG`jgFaiCO(q)Bg@ard9}+?e-Dsaf$w&k7VN3Q@n|1R!i&wWVj_fYvc^-l zYJtMAKT5(Pt3qQkGC5s=>OZ!5x@CNR%2yQV-J}c#wQRZH!l|Dc&N3{&KE6K_Vyr&b zbR}7~C+s~OsI(j-;WtJcDpA(c>{>wc?Df4eCZw+wjbop>ebT3nJ1#kU$|&AEY8p&L zq%BhThyB)mItImsn^ajH;)c&$t?xBsx&mQdUwuZ~_q7T@8>*MSNs(+nl+hbMzpq%b z5q#sWy))!Bkm)sFa6A#XRdlKg&Pm0veK<(pwIeZe4n%Ay$MJv1W9j68vZe6Rq;bU zXKWz8V2@glNKauTwrkLzYYCu1%(oh<`|X4f_QF$!tk#^4&}o z+!hDd#^aWyq^)@df%3cOzSUtf<6g7qoGN|o@g+`IfIU{io?5ph56g)59Le!}sufMj z=;NBI3MgMBE%b$*^JyAi(h_WUuD%!H>m?Os1hwII8Ygicd_F1D#g z9sceOtq-HI^QPf8-Qm!m<>Yyt&kHmbkYRrEq|ppdU+7e*@nu0}bqzAWm*=LX7$be_ z4Z1A&e)31B4XOZFhq%%#$yva9=>bGTE^s^{j^YvZ$yQt4xAqqG2Wt3zk+wsGm7R~x zHfS^?+Da-a+4iC{A3}$|v?$znP2YH?s8G!#HlU7!I_~zVU=9-QD44zYFpS z8<#!Eu57RiX60`)*isHuS+2GS-^#&rbem(u)@S11{KcE8=TL3uBrAC{$0}<8DA+|O zSH$T-24pbaxj(&8fH(9!5)wn1RLAG%$QaQ`2uD6;=h&2vuVNRX)o%8vtw7;cMYaVyYz0)9m$7BVUncVE2UC{)!X-U3|8P$<@JOgEk^h>j#YE)wgJ2z*P-bUkh-jfn3Rl%0Xj~ z&u!dZ9AMcfc_JX3Ymo?m&o`}?ehx7h{sV2O!wqm08)0|fd30?y3zAE~c!qN6P8B+d z7a9zUv)ehZE2*^#yZUl*UUTl?cw?Ei*|@(_zS>JIA|vSgjCzSp?`?pyU)r!ZTk@ja zKwt3s_tO5)`B`cevY;04HpY+V&@U*K2MXvRV}2v_gx~LQUvGK40Rp#WZs8!b#1!jLT$qQEZIw0j zv~D?bFUfA42uxPx)I99GlRy~YEQEKQlRXVie92puVQ)R(=Jd0A`i3jD6XptOorEVw zvc@Q6afl$O{6ilXK+m1)7zMMy_<{`b#hf1ndj@jRFXEjKgk_91eE32#JZDyKh~-n8 z2`49TiyGG=cmZc>z}A{a$9=kCG_wZdR7tXSK!DY}nb=`_n8r-)zHVz_)U(yLwddTR z6Tsykw96s5r}oj&X4%>{?3GZbv}PgSs`7e3=n1%Cm4_jE(a6EetvhNwg`?m9PMoOlEFf@c^_A;P9Emg+^}yCa7IY4rMc%_8m8t41ewK)0lYSq)m;Y0sY8OVbl)zQeR5U@3g(-kWxX1`t-EcI9d0OzM2{TbcOnn$1jhkso5o*<~! z5@`bOr5!X|$DuQw zq>oGhPL=V-by|odJMBN6&lkRt(RC>0pj+$r>r>A3H54K(?4nCMT(7K)gsh!V{Av77 zfm=D#CtAnmBV4QvSm^HE`jST5hvdvbtqA=@{Ln1^sagBJvIEa5;MxROvz^-FH!*V! z#VFz#_hOcNsLW%m0q-Tc!(3HE;TRAjsO;1DQ?K1-WbHV`~)b6`&=pjW5g3@ zVrbhzy<m|ugzQ+0x^|~zXdUy0hd~zIF`O)Kfh>YZ^QVETgCd{7fU4v_A2sN z5>v*SB%XIcydV2ioYt*<6Qz}MbP*a6G}aY5pC6OeDJ6WOaIk#7!3pT|bBq9tNj_MZ zPVZ*;!I8BvJje(V7KmLL+QZ@kWlaMk#wWWvg*` z@y4;j4_Sp7J%uMJ^UF!5mDJBQ)3vjJWNxc0?d}rGi_Wl5EouF;_8Oj4>h*G#PChxP zZP}2DCUhDNpX*)pVt;zz^6bIq2g2&8n+Nm;R2V}Kh+-$~(97>FB8el;j;RM695T^Krn$5>otH6H_0S= z?GwKV@sw!O(?c!EVwGp1kolbgeL0-XUM>0wNt4 z){8+4sHrzTtDf~V3Sg(T=97=QGfA_&0}h=IXm?n3r_cuoEb1*^*TVrSobTJR+*$!I z(jiu+uOg zI44*mvBL|4^WUA8B%j-8FZZy4Odei5(Uyw8Dyu>N?BsVT;nFO_9%k%SlZ_L~hNnr4|S6i&50v_(=TeeR|CdV-5_i!+!+to-c~B>jx|ei9AF0 z>~VBSSbI{ESl)h&8-p+OdndOjOl#v(mqX#&M_+jo$UCyi<+=$A)cO>?ypnF!EU^xl z7u8K$=Dg|~an2ZUD(5`#dLBI&ckXN@Nv`%Jmmi=`F%>Q1>+lg?#j5i81FnuNvrNO* zay!j|!}}LOp$rb*zORX(KN34j;d`a49t9AUfyjM^FYuR*q@O$Y)T+#MS*U@fb29*G z@BM@M5qmJ#WlIO~@JK2betpB#ur`c-uOnu%NTVLnK|0i^3S6Vh2Eqrh{ByA9_xWYC z%Lez)&m5V8|6sy+1`O9!)^|s)K0Rx~o5O0ouVb^s6;~Zn-nry@(|2yHZJT@5_Gh%Z zD}q`80L!t}&sV50clBA*=c7D5E|LygQHI8 z`A-)BWMU;ZanMMxO35hx7-+P0Yh_P!RVB-4#?tXCM)fBmkc_(ez*@AwS!v_il?kG6 zEJ-uL9P_j|z1C?nm}|nOdYM>Z3GEMQzbYU#_gUEGo;gLXR7yRHiM420b3=+2<dj8oZVS^%y{u!4m*%V;B?SY&&)_r4R;61OO#HfD9dMqNtOYHi z$JcJ(hWkC2bjP(KAk?$LdC-;CO9d3cXnuC#FK?f~A&6>JKYki9Z&4!!$3zLWUr@8ZqsgMy_y@ zHM91YE1n{jPg9ccU+bnDsDQC0nZxY;GL!K}q(h;F+{V>p>)Z5t!A5i{=n2oM>ynMo zJ0A#@bOnH32k4#*>P{xKwei)Ojl2B#)JFot_d+yTf!XiQ=F0>O_%9H|i)SajQHmoR zP_odg50N!9z5Or3rPEe1$Gej58!0^{zaZ8N$a z0^FOf>|wBGw9`3qx*m^{P95d7q^+@xzm#&dvIw z<*>M*B8<~wG!NCTw^pa&Q<%<~{CoYhu!8J40BfxI$JB3POT68y!p&d%I7Y7Fo3&Qi z`9I5|$USqw2_Aof0f=dUwqQtA!>K)ho74SJn^KQRe$!G|cF6mz3T(WMq2TC-qCbO+ z!1&M-jDt{3yG&{!dFzBS*~Mc18WnL9fksb0fL3`ST^})?I_L>)YkUbzC4l8<@?f;Q z;v+*uFo3A%Lp&>Ocu7@UM=CLn5ptZ}8;+i=@%u(AD^5c|oVquFqbf3tv2@JXyyeJL zl1Wh*Nt1*F+_M2HE2(uTA*d)uILU#*sG9TCk`2uVw49vp6>Ok>A3>8Dm$(W6zZS$` z4Nf_tG%?5EFE0SKPGvk4n;$}T0}vOL~NHO~iWg&B2OMA*_em9;-KOxLCm(pWBH z20d;sMe)HS8+$*1nhdACk|tVB3U;#g>SXM{~}R?fwKKGBlV< z^oQJOcoem`vQZ;WVlh9!(wDFVT&SLC#STQ_pFLh>dZ5*d7igcyob%g&J8!bO32kz| z0*Pzx($(L{kCVbKp7y<6G2g}$LE@GDMlMhH#NIo_nuTR=7oCh@ZdHP~H4rmFW8oe@ zo-)`y+)G}#8k-%zWl%t1uYFALnQ%;J-4J*;5%fe67uh^_FnK;29#%tX91W0M46YrR z@#qqI?vxb)>S`Xsp_#Am*t%u}Ke{f*ZrAs(y0u5O<$}Gnxfdx@TX+}yf}g+)p?<*% z`L%Ozb=5=nqG+B_2{2&C^O!snJvr2poYvgbTVghUeJRjob;l4O^%I4ca)3LQb0ZdV zCKhm025nh$>h28GupBtki)Gi}FAurCc-_PyHKyxyC4I?dz2(Schr1v+6M2MRurN1z z+K;gC#u7%3ax9R0j8oRSnLws`-V)7k{b*0u3o{!m10BlndcrdsmfN_VaJPI&DRU$8 zXCkS(zNAca@&(2UblKf5vg)JEF6#?#<`fnz0A3&oDzlcva!09cFYOsg+{4e+x6tvi z=V7M7e!5#%imj4!b|Z^|ewD1_Hrrxc1>;qoFcxUEbL@-@m(<35(xST|$5>^_JmZ}! zQZaXco(E{Rllw<>_D_25Xf4c6`;H_uSBwC6F!^X!)s*yYIRi$kr)~dSn#mH z7$?#zZ_7Mv)Yx`#&em+K_^R*g5ddnwUKNVmu!Auvrw!*GK6m!f=nRJ+I5FEjGB@HWb=dQB^bx=zDM&z!Ry^r};BM`Cv6?l$vc3T_1#X5&&;dvP z1HD5Tks5-VqYoR4#W<$LlAXevA7}V9(^kpE5lT5>n7}GdpAxKZegVLhBu&I_>5Cnn zgtogN&$^=~Ly-65xs|H!jZW$Q6%5pK_R=Kb1I zAm7(hexg0V<)oZ8y9-jvU0Bn&HF7Or3%!zQTjxt2T`K!9t79Z)yf81197mBhPFAec z(id(hssT4-oAHse9%C93B~Lt+ZQ$sLW{zZ%O6+0HBFX&CI#`PA_~}XS*=!aad5xvlwtU%i8DDktle{W05$&KZ)kpIWicSkj~ zKG9y~D%XNa6A=MLL3;01rAasR8l;Offe?D4B1lJi4J8Oj4IK$hrAZ6Y2_Z!3Eg&@{ zp}fQIt@r*WYmqbgW@gXcd%n|PK$y|?6H+VveKAPjX|>3b|4Xr@0bszIEP1M3b3xbk zR7AM8vcp-KCPm-sd~z4==kJ#(e!4bW)gHnOI1)tw3%Vrbnd8)9?$kd;b#YznsK9Je z>&%1xG`1>4HjLlB%cef=dhZ_KRJRP)Jzp*NF;PJfW%P>$LVwiMAyO#^?N(K<0xXV! zLeDRsmWDODmU5ZoMc!P8k?~c7e0kRaH_k4~V6MUd;{bAKzHSW|hF8Mgk*{Wug&s@x+4Nmu@YmzKp! z0Lx`n|62+1B7{!w$cbT2fx%@h7T6CN`>|bP9%5}E8?x)^x*U_RKYh3bSff{X_X2iT zCR~a?XH@wEjkc^dq3G@o`fzP*-0uKL)Y0B+tD>fy4t1%nVEr#y9^O-cGgZXx(}>?U z(9rg<($Y`mo2KWS47?7=$;^I%;V~b_gMq*`DpKW(bENqHHfWE(II9@-1y8*8UaXK8 z+HcYL$g7$L7VI8p8dmfP7LI4bZ|o)bmXrXz$?9Is=NHZCyVQp_ryt5VF&O=}@&3-Y z_Cq3`cwk$R3>^g)BnVqAIx~AyR-b_d9|K_H9rsCGuqfwRTXD-Jl@%HDsK?z`Cmc#U zh6jwn6B$`$ z(HkWKW$u+c<#*d?tHtnXFV+8~qGJ1@Z1ir&9wlZB*naVR9%-TzGuIMI!9dI0&K;!l zVTKA)8C6uu9GgM9-={(OH>Q-9{~q1-?tMPx!%Lz9mqRSugMPD=%#FEF&y|<=z>QHbpkLAh2+(v4mQm&X?Q0;pWrzZh!0443I{)3xf)>I z%(0$3j&&!phhP?QmH=2tfHGlDu+~aN& zV`E*nX;R4^*rnAO;j+4wxwiH~$@lE9wUU8>f&YY@KccM4Al$BMpp381v|(tTb{IA{ zmg4lJ4nd5GoS)qyB^QWp;Xh*~DvBA5*idO!QEQ~G;w*Mb_ zH|3y?VK4Q_qB})`Rwas0JF~O)KFX>5{j% zaOi$N_g%E|e@1E}tk(w82gQFpHuW=}I;?yq)WR=nQ6!L#S$mR5A4X+u8ob1%y|2b( zvu&$MMn@&`{I@B;F{C%6cNB+taZN!Op@5bWpgus#Hc|C{4-QBg^VwJz$8rW@E5g;{ z;YYil>R%f_7N}~~^__34mpGeWp&F$r;Ikceza|!}JSCkf1inmm3W8HlQzWZ=Jtkep zv9D|qa}MO|2OCLdk9COsPIWN-*_%RalS$lrJiW&+8+0wWbfWSOX5@_WQr!m9J{g8% z1-Ly8;>pZmdL$XH=$IRjF@!ed_@;Om#jmdN1Eat*6_o_oB5atSBAOv)7aEKweAkcY*nWli+ ziE%++Prb7AcQ#R|XXYmc>NzX|cSxHZDUG9tYN|!$Mj~g4*w!Bt&m9<@E72aPtXn0L zbUcILiSL}A#CPZC$KTD&2wqb6aK;vHQ@(FVcfM$NCCo=dAA}n`^rXDs(sEwd%n@j02~ilcpNe%GJkLxuUN;)G3_f zL;eVB|9eEgFxplEge(4q4k;4`_V>!eS$99`xcl8Mnin=BmmR#JtKG4QSPS)Abd(N^ zn)f1kSqaI1DuN{boh$@mRUC15Uol? zcG^H9o-^u3V~+A4zEab}y9T4?HIASWY-JRe9@5rtIo|W{Rxem)oe|$@iWAA~N)plE zO6mQ0Bl3zL|K^e*nM>qIqW}7Rs6+aTE;_nCe-Fv2<(XJSz*=w%|y|Mv2*l%m?^MsI9j z#_7|8i*qn*t3T^p;)gpAb{EVv4bvLJC2Vi8UtiLcpPe&u@m#(9m)%k(v8SP2I}5h^dh1!XlDkXSGOYG^?%Mn&uyP^)q0{BlGyjSAb zM`;|U@p){E{Ftf>{6p%TXl{8hHk3+Mwz6ISt=&QE^5xgTH#~l+ki-%#Y?ijl*fOkQ zBg-#9$bH<@;KjWZ{juZN@=p6gCYd!%??8bIcu=rOE|{sSI=#TB<=<46K+*z-9cpdM zdGQu-a@094(RWuB-0dRsdfjqkrh!0QZb9pUG^7z+JFOX_qvkTAaV5QGVgpRUUw?AwZJu>?1BGUb$xZhq(?={8jLv2S>=$z zO^U=k3TDA@UMi8f`K2;Ou9IRS3a1_%CnZ-=BjhisUN<3 zU>AK09LZ}Z67^X`LrNeGBYT6J`aR){9)#(mFvncXTl*9x;+Ntsy~Aq;qxRl(aU88n zxYRhSJ`KHQspf5Oh*J|WxW|p&e=!Z!B9Tc4ZAz6HY|BZh{IarGrD#HUTS}Q#_Wybs zenyJF!wp-VRsmZv89B@{iX|UUO9w(1e|<|oG%Rqzq_~V(_6Ufb7$`zeBEfGnHmA~U z?|3K}X;Lj9+ezBoF%*tqzvUNkyWC6d%1r~yemX|AMKJ2#D63p8Rh3ozxBdqv%9~J^ z@kO6|(3x8x-nUHOuCxBP7yi08!rvETtG8~wF@0apeUrRnp^z_5*A>Z&5itT{Vka_O zfK)9W%!IXJs&)!PiqR!3Kvre@c1SM-It2dor(aq@CG>zz^@QO|I!sBN9rE|I$vP&= zokyq1QeKxvn{R2%G32=>MJAamL-L2O8Jy{~%aKY)bUndTQ%i5NjSRIGTC!ZWk|IN> z{pdw9HOFJM^;kz+K=>ptH@xv*GTyz0PEC?apu?vud19 z6}Nw5OD6RpSbO=IBOshf?qj!#2pfj;{2E;+sUacTahap}mfhdn4Xe~1xZ*0>1+z|& ztE26GYg(ta;T+5x9HD=6V-HEuNeR#0V7)lrBTjnm&Kvu@vZ<03wgAYLu*IuFU(WJ4 zrMRlKm7d2dt28P}X17aj?ZkRSN6uUK=(2!*AL}|Vw6x}P-Qe- zXp5h&PQ?+hGg_p&(bFz+t*EiJNKXRW;2Nmy-OG;&@rQL73!4m@WJZ>8`tb?c%nbK) z1nHAfnhUhro_H|irS9%OB*h5xIj1*v?Xjp3L^3zGnN8q{p7y9HpiSLJ{%fg~Vg8@E z-dKBO`DocJgMd6rxv8Taq)%}>6<~Z;w}!h`;^J;}-o)_`dhS82W3z0nvBN8KwjO5z zafBmD$G8Ehi5UzO%c9FdHW2vFx7#={sNZ zdi5KakHq-j42;qWxjgbAvFb>|*L$)|yr7V<5O|%k3Y9Yf{v8zFTCqX_xqQC9Mlgbr zm(8^!I639Nkuop(m8UQwhBhVZxJ+0#CQIWs4&#J_Ckjj$o9hPjYV_7ku18*^;cS)a zorKGe75YzQt6D7UhNE+BX8O!ZNYlk4BY9`d0frpxqbdy22^U#DC(7mt)13F9f9I~V z{)$^*5U9Sdk}d=_(Wh)A(r(=tDt04SeX7v|P@jOsn0iXJv)-$UUwW^{D)S2=Hs(~M zqX4qrWAc9ebfKc6visW+#rw!(ZsaT4@U^fzkS9+*5fgb8-Ef-QM~%i>)8vGtNTiVMLhCKw)lY2$dPk3DEeD7ZaN-9-}QDu3rf&bIz8BV9g>UZtYyi3ux z%vPR~sriM}aJlXpi{#$Vv0;7frZtPjX;Xc@<>|*>mt!%a!AGYpAw#}C^0TKZAul*J zvvu!M&F@o@(?uPwh}S-jQy*QU9N@=qEFt;N*0{_ZH#J*Ud~;>5&|rWA;W+*7#tY1o zrLfQ+mMi4_?*=}NKG%KY7KJv_oZZcUpGEd1I+9`e?uzHsLi{s#zaXu>jTU$Hly_}j zz9EUb0{9)Osfd~Q!V%-6YmvP0DBg7u1U6qH{e3;0XZSTX-}#GRZ>BWy2(uv)yj3@< ze#(ljEaXA*4ggJAaAsLNioOKPF_qRPUtjNR)#SvW@V;GoklO?w&5Kqsy)(-}Xd2l& zVy^G-JqR>VQheU70RNVBjhRWl!DAWc1Ln7%oo+4oa%;0|$$%xkzrVQs$U0^p}a?j^O9 z_fBNFP7-&vILz^t;^SWV(A(on69N?{)f|Mx4$nQ zbSkXdf@TIm>i&w_XL;V{aI#(TnelT)CEmmfti-#Y*nVskzEl)!vdWMTgZ?lRu{FFs zoSBl;m#VYUM;Euzf9g^0ftrw%(Q|-*QL|kiv~D@kwT0P19%U#s`nOf;L2Q!%bQh7E zV42$gbEA$&e(Mj?TPySnxw%bsBlc2_TE{Ln6n7c7lukTv%g<2vkxY>K?@SsGE%TZW z@npFT0d^2$nhid7_nDe^6)!#LDzufSmc1w--PN*?7uk9+GycmyL0BNYG%l>2gTCmc z#iWy%rBs0CKVM%S<6~aeXvnCpmAC~)ob(7BmNV*g zf{3UP7a`ltV?7qdDqzjkc3z&%9m5iBxsk?zGWk8yw!uJ8s@L=E;sY)__+!FfgkS4- z;pOQ|^q1(vpJZR4vC}6GJJG8PgzMOHK-~ws*rdRm9kMkK7sTHJ?I!90l4&zQ&rv#^ z?Fonp1og1w(4GbHQ1Bys3)75}Dv`YD=}t@5GH2IkSk{z925O)q@_vRNEz)K&8P9tU?Q9vBTT-m()m`Fwd>9v3s!zK25DN%s zy_v9yplQeIoPnjvk!#)U1Glb!86IEmIGfL(#jP}&%R}CD|9u+DPMR`5`#vB0Z&*(Q zDphJ5(@~*&e0(6*Tuv2gUnU6P%8r&CJ4=U^So@cEP022-Rx)w2`2S8vTrLkYV-Yd&jc6&t==t06F17{~YIf~Nt@SX#W zPs$VN#QebcAA3;var^&|3L2^?FI2+t$Utwyv~KYtJ$JAQuIAQfIAh+DsoE9aZ{cS1 zD1?aYHs=Z$XG%)7JfvLjrP#QD0p%+5%;PV(_SczKI#g(JZvp24_y02pE;Vatb-GvI zuS#YJx2JhmZ+(1-@0$)4$-y#O^;BrDF}Mt;rSM|l|vfN0NFX%5b0Q#?9kfyoJpDO5#`$wy)tM!!N z(W!Fv-Se?88wo)kb&#zU$*Ut6D3A@zVqE=8>?rTs#Eky%Js>(ivM!MFVjgpWNL)zs z^d$hbaZOEBxL4e4NIv@prAqx;*x}_&*coZY_RLm$uyn^QC40d96EFq!)TB`VGaJ0n zfH=^5tVFPRYo{oh|B^y)jh}fEilnQ89@a~e)@SCDh9SfuztcDOB5eFvQO3b_o>ph^ zk~%XBYL{s6oZVG9YuA&`xvDOUZnx+j=|uR^DQtH!lB%}Qd_#H&dPT4ewRH*E>%P6T z_z*!~LL;#0j@+g#COVW->s!T0+~l<%ARMGTvUuLKM0!YkwS<~ElrnRS37CpjpnuM zM)11xqZGN2)9Fh$(?ukmOKHoe3)oYE)MnIfTX#Vqh;4q8<*9Ara=p4tUNdw~F*d2S zs-jl#l07Qlf~KW7z`exfB@dWpKy6Mi16;u|o+Y;9T53{S4_foj_JXkxr&D82RnOVJug*W8m_JNcQ9uj1gcfDT z^2q%2p2A7rO^s%y?`~h1s0ZnRrQMOd$bXq#lJXc+m8x!mHU|K^*Y{JUxT^H*DHQ#T z;IQMe9tFO+pjx}j#ue>Pj3A{CUadS~aoHta8WRe9g{ye_%GFoF;m3eH9u*wUhy03n zbDnfu!A#2P!0r*O6vvVbI*vO-+hV-H*jnR10`|c+uU5XYJIK@6Q9hJ>2I!dd9i)Uj z#czXmC1Jbzqkgm~lJ|cxk1W%&hyl^3qJHzP3^-?M=#Nk0_ZyYjADjW?yFDPu6&>1J z4&_+1XPs1B(?|n%HS2CA>S-Ds%ykcL{y#5(4>yg0m!g+^nbg&L_kq*qbWkL$Y5{bJ z!cc6jU1f^ftKR0p^g@c>RN8Ry^$3r0YjcbaQRORvy`cNg*PDp-#3QMvoHw`3lbQ3d z)kKn)rjjDBWL^u<nxGZ)(VRX1SgFRaCGcLav?+pV#t1@59-@1^Jfu5&bMV>=(AEPE-5e?{*)}Jmbq|$w2G_K zL6tg?UgD2S%T$5M3h6BCrCpv7D0Wm!?;f?_gf4keBm5n*(X@#&p%Gg#sh%y1KQfg@ z>pc%r0tX)v8w64lxl#Hx4IgK;NU!@AbDx57`5HwjI*s}P6kEe~HK>GF*dXKZZoBQ} z>>w{7QPh|m1TGt0JDzVAkuz{+22*SFF~mFwSlFXpx*LX#XM%D_FW-&#BJi`o@>|9pPrvUFLq$z1uG)JU%fC=4uJzk(t06Zf0ETj2fg%(`fS!@YkdeS#*-ZvkktqfHGLVqAE#$j z$3)#K zP$~-jF*|O|I#PsUAf{f+>%40b9hnrW`YTFBEd@|qgr@4icNwF6Dlfhj#?q^WI#DDx zrJ4Ns87b^s(M{ef^W>9)y;n`1$Ls!JIw242xL4_&8ynPW=gJ-jkTen1*`j&8av}{tLDR5;4%As3nOCMOM1w9%In|Ri`}A9gMQ_Cx#AQ{LZm5) zRMmzOHhT4v!^=d{(cTQw zyJ0s}8@rdPR|3yaZU}~EAX8?>g>BYyY$~B^Fc`~=s<&UZq?#YzecGxFMmN5^$M2V}TQuNB_s)rmDZ>;aE&K(#Q zz9&iW*W;HTJ=;8W3?Et2Cq)GY&cD)Riw{|yoBo|}e|m}4x$D;PZxrYG+!b4ONB8QBm$tcC*(fZ!Vtd70isqMKU;-?BotP%PiLqRt31}zf#uoFTJeN?~Eo5 zHgLE7u;!qn?Xx4HVz)9|`rb%*rQ*0SHw4ZW#>Z9-n{P}mj~P&`t5mcJY0 zl7y*uQnwq=XY>d8=$H5L>DDS$W2KEI11UeRbojN`gnNW?T=VRPw{pDR{Vfe`jL9WOD;9IQ)fC^k@k&=Nuk{jIJG> ziDbRtrw(duZUP@BC!^BiE=kx{FOKV7UywO%%$uDtQ|NAK^x}Seh`lLp{FGQovh{CZ z$=*_x@}dNgm$Dtw6wfF`@66pJP)=iUM9kdHf9m=?C0O zmQ^f6xsI;ag#6KtGeebksk`n?v5(HGU=3G&Chaszw!%wvnz_&7&xT?z9Ce3u{7 zb>I7bh|{EPL^W2rFVNYjBrN3KNn>RGgI>D!tf7$dGcFPtLS7>nlRR-1?`lq`;$n=7 z2*cai9ElCx843N5rer9wt3(>BK*` z@L=uA!xzu%A70_I(I5Vqn#rpq-*m03SHE$5JI6V|O(}Vu1cT*Ws{{SW4M(2tAcu-{ z_^E3fkgYaiq5r7ohJ3eZ`(D$@Voy6i@9bz}<|>1szF_MfWx%lND>ah~I6aAN*(%kc zJsk#HDOAcV#~qifZJ_dNkD(_P4{uaDz1*(y(d?BTZH3X5T9;*@)_%FT1^0SdjGb94 z@=5S06W#94Rwo^?vH!F8uG4U4#)bX>R@imCi*21w^-@01Ofj^fXv34avAQ~s&d$=2 zg(ZJZGGP3mOJe7O1gJGe!6*+t z8rhidiE-j?3k-Ib#puQBHOFr}aDw)EInIw0(8r-mmj zl%UxI8=I(xZOm~09JoY=4C6;u1P{af66!u?L?yXPoRWk+mkNc>HT2jjCS9QvyR9gC zFXOe#_E0z3?AJ{JXaE|yU|+?o2>mRyqIVkEWKkUo^Spkisf16{1||KRz^&r8(BI99 z?W+2o6Jo1!mas0)&LcQf0DG#o(?oxdnSQAk75@|HN{d}Es#MpBV6Q1@awNthdt#WE zCzD|SF$!w4)@t6H%w8me9y(6o_UxTr4A}9&i-+EfNJkmvR<_se27X%capH*Jsb!g<)vo8`>>z&N(req`VG?&FG0j>Ts8nX6HU6O9S@$b{nPxm=dkvkg@RU_=l4zrTA-yJ~lE%7Ep?jv91^S%&f75&q_{kQ67 zT^1%=tNQP{B{K}-yC2{nx(UQgom6y1g6K7v?QV@lkVi9KcvDCV!B@Mf5FJlTW=!YM)u0v@ZSM6QS*>J7qXq-waYN+vLtE})TwPX?|VMTi6csP>Gw%I zgXSh|L2}6}cy-jB@5Gw64GU!Nl0wL@rTd7LRAHZR!Au!!VkK&r$SgBpV5!s*vh%Fg z3&)QGZh8j<;xMWoBY--$eb;h?*%~PbGY=2=@-JssFe)Mu`pZIH-eKDHCi_wuz$wJ( z!iBxnz^$%q8sFn1dF71B8W+A=YcBvz%0mFxmCn(jvVr~rs&Pvl?dIOpV@*E!W2y#B z(K@TAGOj#Ho>%W2uC_k@NJs}+h%PNDzh-|}Jgs+53U$y;0s=__-I{IwtVk}^aJ5FR zCYKfJ<;7?5(^f^ji0)-7Mz1{m!xoC!Yl!dLClh(b;Rnco&b?h3=kTpyq4IMH1qdp; zd(;wsd$_J7Rxfi>&9w8lBA7F)IyRls6?5`pzERSNGf%eVsci5NK$WQ)^6jAs(Sl>1X#MbFI3usdjL*FsAZC8uVmPRp9M zr;GzS^D7b`m7|7yeukgmb23IO?ux_*su_RL9)ut7HRTbLKW-0)U=2!Kf)4ORcF#`$ zLtU%eRBY?Q)Zl47WwbL?Uhm5ZC;X{K!4K7e0=`o(jw$(3Mi+g}<#5{6awl5m%L35T zL?_czN63?4N4gvm{ra?Y*r1WS{gF*|_U)h*|W0 z8286)FJsN8F={7v7~3r&vN?qYv5&OjE9R4P$BMFYL+!s9e?`CPH&4|H+HYF}pjT69 zm8a<0V&v1n5g4nSd%iVgx4K9OcD!D#8+0gU;E@-Vw^=pe6h-np{U$!-od#+2nh@uX z)oHQGmF0vf{-7-leG3$oXD^1{zpEy_jWqidG(N)ExxL|#qtcK(V0=NHm=+hA^qS(1 zgdZQzmg?30I-WbFXvD|KsO%vEwxtHZzD_jB8tJcL&U(_mr8gKaF*N`x{dxpgI?m2W zJq4TGD-Y#))%#7GMp`1imzNm13U^^K6XRz)Q(tNV{A<@5I7YC~GH3X=aMkgk+^E|5 zA#4Ff0qY`Pr^tSm{l6$7KiOx!MM6gpb>vTn7VqN6l`;#f&!+s7ba%fs0H9R7W_#9k zSbi7cNcxD(#EH4p3- zsJWjY5*Iw15p8H&T%RoQ^Vo$_;jWfatpJ-3oVam6wBQ0?IQQh+Fe&`_@3RegY zh!N6}f9~^R^<$B?E8Lk8Q0sN|iA}Z^e*m|X7OILUVkIv%6+&n;vceq|(b!GGtDpBX z-?WY8HCenm5}G-QGGF|f7uWM7RP$;f{QlJReHCnPvvu8rbD@B)Qjk^DqYzRl=~r(( z9rp^qKl^#^euh7RE#iib+ zy0Y!^p{=4^e|?-wVsHAp-or~u+Z4}Fg%25xtEFIM8gH@du{YwA@;V$kTU@E&jm1Sm z_TRH}2k9JG)UP@mcR_l`XA2_f!~+!%LyuR-8~ST25NyCV!<~}74Q>E8>o*c!oKDXj zj27AG*g6+{ciQY%x^;Nv zOTULTqQ^3h-w=%((U()tAbH8atkZZBaFE?|bXIarb1^p;5lRX?%e8q%_)m7ELz5Je zVv?(e6I9A=+U}6$oe`tgV3qb(bDb5AI(Ix$_^hD13?Rt3O|g!)F(AGI5=v*rofE)M zq$YD=Xi}tkKbZaRAIYmSHLcVG3x!hghEiKsEmAuOAitP4cVz}=84Wy?yayk$lIOaf zvScOrYBohTI*BjI;xe15j_~z;=t+~vIVFrr^-*S;kDg+R zGI?d1nsH?X^14a5h3SJx5Y*L0fqC*@EAyfU0C+vhZ;z*AEq9@W>XRm32)7+J&y9T! zeLD}mN9wAs*egTq>`*hI;}(2zuP@hK|D@bIeuG{B7)g(CFC^8~M&cxZ0dvwsZhNvO z4&+xa>_3(tBGjl#fRPLKS0VzXO!*x)#`*S0pd zDFa4_b(C}6L^`8Cq3s33iPcUPa(4@9cF#iE+u@)~(UEF#$qeD`z%rb$jpN08xw5^o z;I~=KtJ!UVe3v8xjvXV6a#TqufYE&%_Aa+$!2OeR$8%>#@8eGD#DM5&=chicy1gux zKvz=4@dHzO5JK`mwu`?!u__^qG~uL zT~ zt9W=Eg62~##%O2_cH|K+F&jXZb>{bUsTCf<9WDi3STXNRv>JR>@FOtnxZM717phzo zWBp(N49C_ugkU!$KHJ6hSIrye3`63JuG-Sa5cDPN+fPC|jCn!Rr25avV3jIR!RxL1 zo!u4g4U4Dfwd3C{TYsg_vM!&DwV7?LVYwS;)XOX$M>*N3Y~#?;wVvh{q%hzQ+f*-p zDi`v_&ydRNh8Hpf2xec=)u4wq$pYg?XMn-y8N@l7#pu-UAqKFb_vH==#KIDzSMXaI zm66En8$VTAs2@YYY(_vse&|=0GW4}#3S}y`?10aZ*bJFgg5xMotSbY;TN#RM++t__ z*--oGrH9FT{(c?ZuV9RO9tVJgM$mAa=86{H8!zxnuCSQ8@Gsgif?3rrXAEsliv0Px zq6fwPW~H)*ep0?)J{m5;6Mq{)rjNiAb4!C&x{29aBU|972)O&|TXQRYobS_}W1# z>*Y&08Z{)J8|8AAokyoNJ<`kD-#DXU?@9mKJ1&1~(roPQ`l1rKzcHzG8A;+n|`EBbDj{SdLhYfm~Va3CjJUX*V5hnQ$ zCob==^P|t6mgygAG?Ychhm7mp1a_^|AGIU?)~_)dzgfq# zJU&xyHaa~X2}Cg}bR6#v?M$D-ZN#l}#d%wHb6(D0h2FqmB6&Id@@YKY{K|Um#y+vv z9mU>Ace5pWxPA|9m+4tsHsFg;K8kv!imR6l%H$AHV?qQ4`y&NZ0v%TdcQS!mr#E=zqzBi^%i%4EeBSzVzaJ>t8{eKAxT2-Ddrh)K}WE` zDTNsIvu7Egn)?86;lPKHn*-nGnz}C!NtK)7eE`e*@I8D}2L!rF)p5po@}6xp^*RK< zND~3^mdmD=Cd}9p%+KfVftq3++IgoS!WV1Q#Xa%@PG}D$5$R&Ux?wTbu>CuN=V0+1 z!~+wyZ0URq2JC8yLc6%eM0Y$dq2BpGtgT}|M^G20R4)TH23tF?SHiHE^#m zMp^G2iJEh+CvkygE<*n0fnA?Wz)rK#bGK-`EZb!SRyw}nl@vt?2jwQ83WKNEjC$b5 z>yfh|p$oCQeSnEzVGQt}MGBWBmI*$B=jqMPH_cIg#VIw^$zn?~Pf>^i&)gxe0 z}^Kl0lufU?t)S$OVky@NhtSlg_ zWYQrlri!)N>N5gX4$|Ya{C$*>M;*1FTmu066T;z zDvhE(8e9N|ci(7QARts}&yMDXd(-VbY4muMmW$el?l+l8v!1j_^c&{{kGp<-0yas4 z6_S*L+2w=RKMxNE-1jOaK4bylF*(FdVSa9|sqefVD;v;aLwvW40{wRc#5d=_HA==1 zzJ{dmR;N*sU?1D#l=A;MqXP`-7hhlS&K9Y>Lvjb(S@G=}GSBLm@LL7*A$dg*UheM* zp<5x_6AhvFy>%2;jdnUof6|=5@&Nuqm4h0y`aoL@Q~AHq7?-Fi(p={&U^5 z?yT&<;tOzWP3d3!y>|N;(72-UK_xILNVC_nhz~f1*YZYAvFk$NU}(y#IuozqYl6-r zVo3-T!^!fL3*crwh@U!mBOJqvrZ3S7&Nuw5+ihC*>WOEc2|=;8}9pa?a(Dt&c`gKXTHi_O&CP2Ost%&m+I&o;X@&(4aKz9>&UW9!4Tdp|aS2@-jCq~G<2@OPM-Z#DlVik|RsQ@}6LcZu#`#$=-O%uJ94q5))D7`J zeGBPW(s&pE$Z;@t8eaud;N9veg8|+U{h?31W}EyLb(>OFXCY|6qH`pqanw6J-QCtE zus1C(=;2RKnT&sYknyYVi1L`JGaIYPK`FcA6Kw@#_)Xn~zvO)QmzMG9Rz~ts4?uf9UW@PBaEpFuPu2EUOgy! zAD{SgzzOYr3wWj=sVQ})xUp32+rG2UC2elEq4iy6*PIKX9vW&Xn+}QbH&7Ne^_6i% z_q>2P0l078=1FFM#JL1M?S2VAYmG}S9ql4vsW!A$1-2zOT; zWP`yO>9|dU!udc+RDgON1*k|1vVx89{8WR- z3UG@TJJ6YpSmU4vPJqkW9E&{7C}xY_SW)g6T=-SkBB2|iuG%H+B0P?qIl$$HTi7kl251m5p|Q6&|mX zEa3U$Zz0b5|1Df!0kDw{*51tKHWhg47*+YPlDP(E;W{__V4(@1YHfym;;#xOpS)G@ z8tR`aHLs?^0P$L*n^DB$?qQqm?DM(!up_ch_q9G?UG`z$zg*EW#EJ+h{=PE*WvqBU zmo{~y4Og#-0XOyn?z&sdH#hrF0DD5bP)r#YsBu{Q4{6Uu(Th4)6-K#yxSqvGmi#{X z`Fr;Cd-kxVhv!I?`RUv1^=>0C_Akv(oaZ+@>+_uaR;>;ByL-@ocSJl@`q z70f5VB#KnObV3l0vAd z@xZhb%7o)AA9pl*(amL;W2!4R6~*m!_xe;x^MmfvQiF!RwVwF16-x799u|NnwA&W0J*LT0pPfmhB z#A_M@rh$iO5Fm1_cE_6Gvz{g?0zGwiuU3MGUah{_wo;|yh5%(66c0HOU>LloibWg7 z^zvHN#%U*NCbqno_a1-mc2(e^W%9sNjPm+cS)W1uaVnjG{w~z;R6(O2weE;{PtFAy z7kOapCFXbsp^C$2=9;_H<75R{?dwdnq{Z`~3ZQ`hMtly3M*-M^P_NB*(jAG?@7*>F zZm1MDCi@KDTQx}O*qGHStqVhUBJpuZIBtJ(y2<{ksGW@-D@=Wm1wqL2P<0RyU;sH>>4b00n2@0i{j;?kSp7*a$rxz|3*~s_4 z3zrz7&>N_uu{d5}^h9#M&}JaM{vmwsg1lmJJ%t)}MTW+F>j z&SnwaNRJH5s;7+oj{pRcSb~x6FUsknB zg-$mXceX5adp3~)chN-}b^* z9KEl;c50y=avvkLQ<+W6iY$LQifvU^JmxNQC?yeHa3vFKDSz(8k=evIU6%8)P3-vW z?ScG|Qoyha&2)%w=3rG{o8x6lUVK~GzI`&(!z(DC73pFIQfQrhFzxJYb4e3!a|`sO zS8Yr3;9?YQlCt7sglHEDCckZS*2ZHX0C2tz`zr>Kyvx)#hI<@NKX`b!6tSq@;C3#A z>$q2gjLaWNm{wJf<(^Z7$`%bgJO<(1PoLh(R1H+fy>8MDY~E$^3sL!AfS6E=1!Rd( zWG9h(HZ@aawv4=Dle96&-aMXgwy<^^_xXge_mn`efFovkpw~FRv#k_!X9km>tp<2-8SK%ImANI>$?5 zQY|(MrSb|9h`sTLsd;EB_U!_ggL}IThD*pdh|-$q7E10!&K_ZLb1Jf_J}QKd=W3H2P!iq$=K3GZ&XGM;e;|kF} zb*whcD@if!ji^O73O(Uj-=2*k1m;qQ)ce@r5of8^kXvJ*(|R;8j`TdqwHPvz3RQsR z)8V*MVlFd1ds(2_7rIWjKBnODkw})_;JSPN9Zsg*0c<@@J*L#9$=c;+%(6b5bKMyw zthDdwWjVWZ_G&DFTkXi#VPL`DC0=6&OM8$U?puUimrk0*NLU=taKNMLd*RoY(T z6rEv|pmo4N?^YcjFJRcb17tLjOH`xJ={jBaRb)g3m-2&1ZF5>4CYhfA>Lu7_LZLKz z^LN)a$5<;TeQiU=iSb+G5C@P9x4pNM@DjwQ)zRI;LGexwr+6G!&rpOYm0#4A*e` zGySqVtw}93|&~z1`^j3O0 zabAtHgo-d!FJE@5Rb~jLun!PVIIjjqM*w(uk)J)bp~d>cD%$~OX~l=l6g!c*psrKk zF=ys6v25;b`u-^1+&~9PDYv7-9F&bQx~&crN;ZYLHhWXiQS~S+KshJ4oFW}*JkwX` zad%Qb)2C8Zn2LS*{2Y6Xq%{Jx4biW%Jow#KmE>*V2 zV*v73$Tck5?2D14!oG+}a$mU&!dTW_h2 zcj_d;M4f|Qt7l5+SLD~38c&!h5ST#=%HnqNJdq@!fGn{kx9rT3tx1)62Src3LVZng zJrohsYPJA3V&^_Yqim|n#13g0+fAy+WY?U13?YTVW!^-VEr78ccGnb6ldaC=Le_Si!W;ukzZ)y&aqo#ND8JIh3hSn;_dVoV0o60-W%%Oq z?$U>|XW3q4n`FK=X#~)R{&6)20{5_*A+b^#swSN^p+gL}E-Qeu4%KLg-aNnI8t~db zRsbCq)QF9Fmb_$-45FMclbSs`2OlaD;KFPyG7h5hR3_X!sNCVk#Fvw{dp`yQfzGso z%z+~+il}`m@65#2$Qu)Zko-tbdu9oHEoL6>YqguJ%Rva?bsceWOo^*edkNE$Gfh@; zwd?cXB&=xjI>4z$pzraN@6s2X(uv)nptU(*t}tzZVX%!Ibg7DMFU( zM?`b9*G0~jm0ZXzp&jyaMVgzfO;;>snc2g~dyo_vsw?DO~`0G~wxilZ{Cz`6cV z2RjJcbE_gCo0NV>;lxHo#8F9m(>DPE>!nM+vrSzth0W3?K!Bt0-G`1}AnI9%GKv-p zJ-y7bsR)3)KOuA{s0NR&fDw`HeLbNQy?iAQ z_64QV!ZIS(=HWTK5}9|{5TcdoX|&II;j1oVBNl*TX*b#|F}u7vdghGlhtcyxuD;1; z+k~r9)T+f-Z}y7Imc`owj4fSKc=BxBje>AewBRFgMSxs+%o@Z(Fqe1rftKw)^RLj-PiV--~5q|sxjw42&1eLCarpc_|naoHW+xfJ= zuf`7#n^ZMz3k>5R<*CBeDK``qH!)R`+aCapBcT4)dArtk6S)2?aOYue)Ye_VWjVsd zt?RS0H0Mw7KghqEA{psmXiXrb5yQgBYosoQDUwS5IeWGRB3>I{DFS?fS4ZJ_CqDRelJYvoy^q1QJ_0V+^PEpw(|9;YMC{6}O;?6- zPs?$ZAg-zF8?gPvC7eCo+6EQ)rA7kx?W+8%xwU+AjGbCWTHNWGT`8UwC$Aoeo0jnL z4iAd79Jpp?Nv=oSZ{k4Y<9f^eX>%6TP9S@GzQ4$PYkih-%l?HGRyHOv%h_ZOg(Jr3 zSDH7q^xwTQYMi^LjX9#%Z=*$Yp%tV*VmW12#c)h|a%PYnAh+u#fIJJj=Cp7Svv!-f zsZ7BB-G~W*r#E&Hc8`@T==6=xrGqXN(R;!czLTH;6OS(G6ovpdoh@Wslelt@LQF>W z>Z|obvk?qyAaR|n|5R{H*(#_2;%aCMN=~(w%5R2z1vd$yF)bGW$`kI``#Rt1CZLtI zC~GY3R_w_Vi|A#eoj?PRilvcmjg7g;=BXz>voSwAZ^jF#75OeZ+CJv8*{B84@&vJ$&5w}{yv7>=X!V|ro(Knfs8xy@)Jr{X~}-Kz!2;U}R1qSnSSeQ)W7`_HSF$iq00 z+en4E>^&KGc$V|%zzl5`;HcbBT~2TE_P(lvX_zXwztEeRoRXl)O@4E(L~}m9!^Da+ zVYNl1G%u!?HRWYE!xT!y!oN-fVds(;NVF~@Ts+x74&jH=J+ctaw|bY?bB<2(eDb+f zWPLulD`qRohgu!3+u9zw@VPWp$QGy$5HhJ&q3ZRUf(djNx5O^UW+kWOOJ=uCzF>YY zuCYX7)a@J-GF4t`WaHsnznqfaoh2L=G@>Py1ybYKDHY~xjCU5>N_A2#LINW0MIoGp z7b;{&wy5($jvf$oMW7aSWNgbDMsXmxbV#XeWK~n$d6mS9U=4I<0uzOvOEy7*|A$b`{YfG+eZZxo6yn>Hq??)C=4^es|_sH zn)&A^o#L8CnQ1K!wCd~)4wU0apagRJ8?PjHk8d9wb`88f<@UhDXVfCLK6=wpez%0^Ho$le`pjy4^=ZHakyXDt(-z;|rh%<|7MNqV|~W-!7_kNxu7s{kHMub0la*Y-7g?<0nW zqA(pNkx5vvp%B}U@>@55u3MnF5$2C#j0jIW=6N z0AbPAoWH9OAN_|>5^wybzi5t`mf?nKZ?$o6reHEbK+(=n_mdmhRZJkY?R4LNjp+O? zN8Am-KSC`xBoH}GZ#V9`yT=GC6}Fg(PZe$D^iK`e<)NdA=7>sH)1nhGt=!;i6LVXw zG@Pc0KqHij=eqPYz7!06!)Y>(raY3q zV(WxB%H$;W67poBazr_Xz=#3i3aT;=l}Horr`b1egbnoU(sWiD3R4(x$8a-K!LD2$ zRu4E@VF02e&h6sdtzo<-fbflCE0;y7Kq}1O!9saUG}Rq|Sl0-`DtK#BF02#y!5v9V zI=AC&F!rn12QRMnrFnwy&Im!muFSVx30nY4GYYu+ zwd_JoXxnjB(B{xqF3-%Sg>QO%f@dh6iAvq4^5*L`dQhd;xUz8V_JoG#)KK;UU!vpo zzy?V=DG#m2?dkE^sMIxFUk$sm9@?29GZrjT#O8h2<#wv&rQpxQ4V{$hNS9Z!%;BL| zJa)Of=7^i$_XGCzyC{;Z;j}t`tB|q(MSH;;8GhlD%&t0dqub)m@56_JUB~mhJT09} zTLBO!M(2ISsWRU6J~lIJk@NA<#2OXpKJT%mBC*&=e$QU0iP_P4^O=XTS`#B@1k`#+ z)?u0wq_O7dp0$%c(6V>u3qn`+p;c!%Zlp7t3E~k5fwjc*gW(Y<3j&v7F2-N; zc$Rrco)z9f*f+1GP(Of~thbMubRy5v-cD}k!?k6iw6VlM@1_8xW&N6wYjcahFk?*9 zsET^&h>1sHfaa3n3;5yKGgI{WRLNDlPD#?z8@amO57m5LMn5Db*aHnR0quBj+KCP*O0KX?y@ zN5Njr4LQ!R!SLNYVJr~(4E?f~_qKXJpoPt~MZ|YDwAc49f;9D2Z#-_KXs(6Pki`lz z=k(*vu0BXQnGY)f<+FG40=j(m?x2C56yFUU{5t^C^;;b18 z_m|p)HkZ3hG1_~z^vt*hN4WH*`Hok0yllQg*zBGzO-I7X+Y4n1xHdgS>$~8fipXaR zY%WRiek2S5<rc-1yGJ!}MU>D;?EuG~<3GBDfir3d$ zem6>D>Npc>hIK#ouQrlW>~zmxSb)zr{W64f%RW(eW!O`Dd`M&#c9=e`XJysF$z!cy z$pj*W_<`zEYw1a33wye2&KB&FAqozUa9*ddwJx-@6omh4i*IAa3pvB1z!6+b&1+ck zHnsA7Wr>{R&|AaiW0hUKGRSGHM)T~c4#~6$5Qc0$3dqP;yA_-+_z3}$EI@$>J}VG$ zlyH>r_sRnlsRl}d;&V%VmvzCiUo=MmcXUWe7DoU)f_iUUF6e%e7vlWE640SK&#Gz` zn*#VWHfPhorX_^EeNA;QTfP~z&U*^5XjOBVltNv}VYE4paL1Ff<1uw_1&6V8zEn`H z#vmkZLjPIDkblXTxCzgNB|^-%(haURTjgfzU2RtjdKF`sHE47q_j~)qKr^%zCB|pw z&tCGzi**W-61nF_5wjCBbm~NQwBC2OPICl#>9>B`bzf|hJfY(SLbY2k%I_5y?_h;h zGVlg*E`SO?8-E64-*SXB!1E*uXuaQWH^Tya9Ao#VyzK?yl<+_1D?T2TvR29aq8ZJ9 zjk+xh8M<9V`QtJ^Yyf8j1I`*>KPEIH-wgN}4Qsa?&sRordeeaJGY5R;FZB?j# zmbIf!A`xPIF;M4|n)sK2WB(kuU9^^6{nd{|KMuUrA=!1b43`cIvsN}&-CWFKTk70C zk_uA!`elvOx!e4gjJVn2jH@UxH8MU|vqm!liGt_j4ycUZxD)qfjgn2vV2|FF7yDCqvt4668@6cbvq3^} z_b8nEFrA=3z9MQT1Afu`gTq$?@YjXkX#yOl5}bC;cSStMIy4;gk<8amu>0&RzNWx+ zaqKJoXwg^g{KCug3beUWXQbK)Unyo001r7%$Vr)wk(Ya(EL^XA1LpV$*>AwScxC$BK8*B^ZB@ z(+)6in?UP9bH0Trb@NX4Hvrnl6;8&$Qif3H?+dFSKLV?f1(OGUoZuIKZs*8~VG5e& zN2!IeaFd`;xug#G+_;Q$CC=m{Z2CRppHk}j?C+tx3dXhQ(OFrB{HCozRrfPC?!YN! zmlD1>ilToyiuac*{ z3A&VUrH1Tu2l?5o|a_8>d;e0GFF;5NFRjth66Pu?wxe53>m}SyNU#;Y%*}<C?6-at4*#F1|44dD%Nt)%$(4~0d^d|G|ao~ z1V@o3!V0xg_M#GaFHvoyQ|rPh!!2RX?J8{ZCsN2&51sttlyqi@W(+J+{b>AZ7{ zZ1~V0*XJ)m93%exZiY_3L>@w<*ULP{cE*0*Mbcq^Y0wccLRgOR&fj+JtIP1*7LS5Z zkoT1w$u)t4Fe&%qBQ6}xw482@*-bXMs?WzHxe4CjztL%;T;`=Cuyb7g*Z zyd=nFZv*;T4fLmiCB7v3^`G9S0i*Vfq~SV5FnABUL8&+LTCIWM(eVfY?)YjRMkhbMU;SlD{bvUfF8T(TLtC~K zFCVA!*7%isEb+RBRdOgfDg}@He8l!3Qz%bVM!_`s2XP^R68T<}q2jsIez7bs$LOye z{Q2K(wtIozJ>sa}zxchnGM4f`r zmEv#K@tY70_t7=r$U1i9$=H)e%87ar|6>rzEMR6qTp1x>cj8wUG+?pL(-EfTBzFaz zeNOa`OC~1+w$nezzw95B?~4|~aADtFy(K*@wvLR(Up@QJ`?~kR%oLBkQ~Jl1!Y$ts zum!yL{JV^G9p5mc3I1`(K(zN+dMy6I&U`UA&q2gk_nK=nBQ3(g(Dr`}f(t;_fc8wY z{^Lpk+4)nr&N=dA6j_nY{z_WEtk-9mWl2fq|CKrY>KmO0p}e&f%FD33QH1;NLBaPz zd+a|7S8@@xVgGZYwXcTwrx%SX|4kFrWu7^X(Noj^<96X4B>s=WrQ1);?TjYy{JJzh zy%=NrZ<@dk=@DJJha~xharx_zA^eZR#pO&GB|htS_N$Tj>BUmSf767>@Jq)%l$8R0 zYFfVD^z#Qg{vU+v7^>J`onftp`JeT6^FM0BZ!`Pb%>FjBxHJ5>nWg(}X03jk+27vm zZ*TUuH~S@2`t8l$`|ZvCf0;D+w2vvYIgW=%7httxx{!G6px7Pbz1MgIB!V?~1Xgm2 z!3H#!AGL7{f4TAb?hikPeS=t2GD3d1`|Ypf2NhALl^nNI+aP-|U;Kk~Kl^cBlqDsI zYnt`f4%DyV#E;} zw|_Aj7_9T(P0KDntuLEZ3N>m@5zS|9`u43pfA( literal 0 HcmV?d00001 diff --git a/events/guildCreate.js b/events/guildCreate.js new file mode 100644 index 0000000..d2cfaf4 --- /dev/null +++ b/events/guildCreate.js @@ -0,0 +1,3 @@ +module.exports = (client, guild) => { + require("../util/RegisterSlashCommands")(client, guild.id); +}; \ No newline at end of file diff --git a/events/messageCreate.js b/events/messageCreate.js new file mode 100644 index 0000000..d82ee34 --- /dev/null +++ b/events/messageCreate.js @@ -0,0 +1,55 @@ +/** + * + * @param {require("../structures/QuarksBot")} client + * @param {require("discord.js").message} message + * @returns {void} or nothing if you didn't know + */ + +module.exports = async (client, message) => { + if (message.author.bot || message.channel.type === "dm") return; + + let GuildDB = await client.GetGuild(message.guild.id); + + //Prefixes also have mention match + const prefixMention = new RegExp(`^<@!?${client.user.id}> `); + prefix = message.content.match(prefixMention); + + if (message.content.indexOf(prefix) !== 0) return; + + if (GuildDB.customChannelStatus==true&&!GuildDB.allowedChannels.includes(message.channel.id)) { + return message.channel.send(`You are not allowed to use the bot in this channel.`); + } + + const args = message.content.slice(prefix.length).trim().split(/ +/g); + //Making the command lowerCase because our file name will be in lowerCase + const command = args.shift().toLowerCase(); + + //Searching a command + const cmd = + client.commands.get(command) || + client.commands.find((x) => x.aliases && x.aliases.includes(command)); + + //Executing the codes when we get the command or aliases + if (cmd) { + if ( + (cmd.permissions && + cmd.permissions.channel && + !message.channel + .permissionsFor(client.user) + .has(cmd.permissions.channel)) || + (cmd.permissions && + cmd.permissions.member && + !message.channel + .permissionsFor(message.member) + .has(cmd.permissions.member)) + ) + return client.sendError( + message.channel, + "Missing Permissions!" + GuildDB.DJ + ? " You need the correct role to access this command." + : "" + ); + cmd.run(client, message, args, { GuildDB }); + client.CommandsRan++; + } else return; +}; \ No newline at end of file diff --git a/events/ready.js b/events/ready.js new file mode 100644 index 0000000..36a5f0e --- /dev/null +++ b/events/ready.js @@ -0,0 +1,12 @@ +module.exports = async (client) => { + (client.Ready = true), + client.user.setActivity(client.config.Presence.name, { + type: client.config.Presence.type, + }) + client.user.setPresence({ + status: client.config.Presence.status, // You can show online, idle, and dnd + }); + client.log(`Successfully Logged in as ${client.user.tag}`); // You can change the text if you want, but DO NOT REMOVE "client.user.tag" + client.log(`Ready to serve in ${client.channels.cache.size} channels on ${client.guilds.cache.size} servers, for a total of ${client.users.cache.size} users.`) + client.RegisterSlashCommands(); +}; \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..855624d --- /dev/null +++ b/index.js @@ -0,0 +1,6 @@ +const QuarksBot = require('./structures/QuarksBot'); +const config = require('./config/config'); +const { Intents } = require('discord.js'); + +let client = new QuarksBot({ intents:[Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]}, config); +client.build() diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..68d01b6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2602 @@ +{ + "name": "quarksbot", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "quarksbot", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "colors": "^1.4.0", + "discord.js": "^13.8.1", + "mongodb": "^4.7.0", + "winston": "^3.8.1" + }, + "devDependencies": { + "nodemon": "^1.3.3" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@discordjs/builders": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", + "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", + "dependencies": { + "@sapphire/shapeshift": "^3.1.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.33.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/builders/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", + "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.4.0.tgz", + "integrity": "sha512-uV+vErdfbxCgnjgcwkPDADlyS40I20L57YPy254LKbRNfLCg4/ymy510aNSGhLhq/dpNU0s1fQnTbI2YAetzsA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@types/node": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bson": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz", + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", + "dev": true, + "dependencies": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/configstore": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", + "integrity": "sha512-2aMMi3erDQwgL7BgnW0aIzILAikpVH4TVEz60F/naT+XsPPX6IaPEuF/zD28XSNFWO/mHQ9OVRxkvcSbq6EFdA==", + "dev": true, + "dependencies": { + "graceful-fs": "^3.0.1", + "js-yaml": "^3.1.0", + "mkdirp": "^0.5.0", + "object-assign": "^2.0.0", + "osenv": "^0.1.0", + "user-home": "^1.0.0", + "uuid": "^2.0.1", + "xdg-basedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + }, + "node_modules/discord.js": { + "version": "13.8.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", + "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", + "dependencies": { + "@discordjs/builders": "^0.14.0", + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.3.1", + "@types/node-fetch": "^2.6.1", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.33.3", + "form-data": "^4.0.0", + "node-fetch": "^2.6.1", + "ws": "^8.7.0" + }, + "engines": { + "node": ">=16.6.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/event-stream": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", + "integrity": "sha512-PzynKvHzEq8UpM5xBNuz8fSufJik0619XuJp5uXCC3X6PpmbHUmsWbpfCBS+grDG2xFBpsDF9TbtftWFEpDKaA==", + "dev": true, + "dependencies": { + "optimist": "0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", + "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", + "dev": true, + "dependencies": { + "natives": "^1.1.3" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/logform": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.1.tgz", + "integrity": "sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A==", + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==", + "dev": true + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==", + "deprecated": "Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue", + "dev": true, + "dependencies": { + "lru-cache": "2", + "sigmund": "~1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mongodb": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "dependencies": { + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "socks": "^2.6.2" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "deprecated": "This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodemon": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.3.3.tgz", + "integrity": "sha512-ebLaqsibh296hT8itYDZPG28JT2DFh2gSqP2FP2Ahu/mw81d6SGbswQBuUrkNnEMwJOk5qs6quK7y52pLe5U0w==", + "dev": true, + "dependencies": { + "minimatch": "~0.3.0", + "ps-tree": "~0.0.3", + "touch": "~0.0.3", + "update-notifier": "~0.1.8" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/optimist": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", + "integrity": "sha512-Wy7E3cQDpqsTIFyW7m22hSevyTLxw850ahYv7FWsw4G6MIKVTZ8NSA95KBrQ95a4SMsMr1UGUUnwEFKhVaSzIg==", + "dev": true, + "dependencies": { + "wordwrap": ">=0.0.1 <0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/ps-tree": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", + "integrity": "sha512-FRHemqwOCUAt+U9Ni9bN/JfsFIBIm1Ho2Zr6Y/yWCgbfecrU4cEuYDebyv/pJpFBltArsJ3j4EgI89PR+BsXTA==", + "dev": true, + "dependencies": { + "event-stream": "~0.5" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", + "dev": true, + "bin": { + "strip-ansi": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/touch": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.4.tgz", + "integrity": "sha512-Az8J2DmJM/H07TusRFofwCuPy21xA6Hw52QcF708s3c6Qs33eR5vqB078pJB4SnWBHaRoQ1YOQUwb3zbygFrLg==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "touch": "bin/touch.js" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/ts-mixer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/update-notifier": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.1.10.tgz", + "integrity": "sha512-1z+W2Knjv7TdhTQXia4MhFNYwpUfOPTL5lbLMMYL9X40yODpURN0nhrpXDBiY8bGEsrfA3YstoqPSxTfz7L7uQ==", + "dev": true, + "dependencies": { + "chalk": "^0.4.0", + "configstore": "^0.3.0", + "request": "^2.36.0", + "semver": "^2.3.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==", + "dev": true, + "bin": { + "user-home": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha512-FULf7fayPdpASncVy4DLh3xydlXEJJpvIELjYjNeQWYUZ9pclcpvCZSr2gkmN2FrrGcI7G/cJsIEwk5/8vfXpg==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/winston": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", + "integrity": "sha512-ugGW++yvGoxr4IrSoxsieH2b/NlZbXsBaL85Off3z487yS9eiiRjrfdkBw1iBvzv/SK0XjjYy+KBix5PIseOtQ==", + "dev": true, + "dependencies": { + "user-home": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + } + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@discordjs/builders": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.14.0.tgz", + "integrity": "sha512-+fqLIqa9wN3R+kvlld8sgG0nt04BAZxdCDP4t2qZ9TJsquLWA+xMtT8Waibb3d4li4AQS+IOfjiHAznv/dhHgQ==", + "requires": { + "@sapphire/shapeshift": "^3.1.0", + "@sindresorhus/is": "^4.6.0", + "discord-api-types": "^0.33.3", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + } + } + }, + "@discordjs/collection": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.7.0.tgz", + "integrity": "sha512-R5i8Wb8kIcBAFEPLLf7LVBQKBDYUL+ekb23sOgpkpyGT+V4P7V83wTxcsqmX+PbqHt4cEHn053uMWfRqh/Z/nA==" + }, + "@sapphire/async-queue": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.3.1.tgz", + "integrity": "sha512-FFTlPOWZX1kDj9xCAsRzH5xEJfawg1lNoYAA+ecOWJMHOfiZYb1uXOI3ne9U4UILSEPwfE68p3T9wUHwIQfR0g==" + }, + "@sapphire/shapeshift": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.4.0.tgz", + "integrity": "sha512-uV+vErdfbxCgnjgcwkPDADlyS40I20L57YPy254LKbRNfLCg4/ymy510aNSGhLhq/dpNU0s1fQnTbI2YAetzsA==" + }, + "@types/node": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==" + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "requires": { + "@types/node": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bson": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz", + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==", + "requires": { + "buffer": "^5.6.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "configstore": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", + "integrity": "sha512-2aMMi3erDQwgL7BgnW0aIzILAikpVH4TVEz60F/naT+XsPPX6IaPEuF/zD28XSNFWO/mHQ9OVRxkvcSbq6EFdA==", + "dev": true, + "requires": { + "graceful-fs": "^3.0.1", + "js-yaml": "^3.1.0", + "mkdirp": "^0.5.0", + "object-assign": "^2.0.0", + "osenv": "^0.1.0", + "user-home": "^1.0.0", + "uuid": "^2.0.1", + "xdg-basedir": "^1.0.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" + }, + "discord-api-types": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.33.5.tgz", + "integrity": "sha512-dvO5M52v7m7Dy96+XUnzXNsQ/0npsYpU6dL205kAtEDueswoz3aU3bh1UMoK4cQmcGtB1YRyLKqp+DXi05lzFg==" + }, + "discord.js": { + "version": "13.8.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.8.1.tgz", + "integrity": "sha512-jOsD+4tEZWWx0RHVyH+FBcqoTrsL+d5Mm5p+ULQOdU0qSaxhLNkWYig+yDHNZoND7nlkXX3qi+BW+gO5erWylg==", + "requires": { + "@discordjs/builders": "^0.14.0", + "@discordjs/collection": "^0.7.0", + "@sapphire/async-queue": "^1.3.1", + "@types/node-fetch": "^2.6.1", + "@types/ws": "^8.5.3", + "discord-api-types": "^0.33.3", + "form-data": "^4.0.0", + "node-fetch": "^2.6.1", + "ws": "^8.7.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "event-stream": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", + "integrity": "sha512-PzynKvHzEq8UpM5xBNuz8fSufJik0619XuJp5uXCC3X6PpmbHUmsWbpfCBS+grDG2xFBpsDF9TbtftWFEpDKaA==", + "dev": true, + "requires": { + "optimist": "0.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", + "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", + "dev": true, + "requires": { + "natives": "^1.1.3" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "logform": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.1.tgz", + "integrity": "sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A==", + "requires": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==", + "dev": true + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mongodb": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.7.0.tgz", + "integrity": "sha512-HhVar6hsUeMAVlIbwQwWtV36iyjKd9qdhY+s4wcU8K6TOj4Q331iiMy+FoPuxEntDIijTYWivwFJkLv8q/ZgvA==", + "requires": { + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "saslprep": "^1.0.3", + "socks": "^2.6.2" + } + }, + "mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nodemon": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.3.3.tgz", + "integrity": "sha512-ebLaqsibh296hT8itYDZPG28JT2DFh2gSqP2FP2Ahu/mw81d6SGbswQBuUrkNnEMwJOk5qs6quK7y52pLe5U0w==", + "dev": true, + "requires": { + "minimatch": "~0.3.0", + "ps-tree": "~0.0.3", + "touch": "~0.0.3", + "update-notifier": "~0.1.8" + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha512-CdsOUYIh5wIiozhJ3rLQgmUTgcyzFwZZrqhkKhODMoGtPKM+wt0h0CNIoauJWMsS9822EdzPsF/6mb4nLvPN5g==", + "dev": true + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "optimist": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", + "integrity": "sha512-Wy7E3cQDpqsTIFyW7m22hSevyTLxw850ahYv7FWsw4G6MIKVTZ8NSA95KBrQ95a4SMsMr1UGUUnwEFKhVaSzIg==", + "dev": true, + "requires": { + "wordwrap": ">=0.0.1 <0.1.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "ps-tree": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", + "integrity": "sha512-FRHemqwOCUAt+U9Ni9bN/JfsFIBIm1Ho2Zr6Y/yWCgbfecrU4cEuYDebyv/pJpFBltArsJ3j4EgI89PR+BsXTA==", + "dev": true, + "requires": { + "event-stream": "~0.5" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==", + "dev": true + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "touch": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.4.tgz", + "integrity": "sha512-Az8J2DmJM/H07TusRFofwCuPy21xA6Hw52QcF708s3c6Qs33eR5vqB078pJB4SnWBHaRoQ1YOQUwb3zbygFrLg==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "ts-mixer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", + "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "update-notifier": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.1.10.tgz", + "integrity": "sha512-1z+W2Knjv7TdhTQXia4MhFNYwpUfOPTL5lbLMMYL9X40yODpURN0nhrpXDBiY8bGEsrfA3YstoqPSxTfz7L7uQ==", + "dev": true, + "requires": { + "chalk": "^0.4.0", + "configstore": "^0.3.0", + "request": "^2.36.0", + "semver": "^2.3.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha512-FULf7fayPdpASncVy4DLh3xydlXEJJpvIELjYjNeQWYUZ9pclcpvCZSr2gkmN2FrrGcI7G/cJsIEwk5/8vfXpg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "winston": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true + }, + "ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "requires": {} + }, + "xdg-basedir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", + "integrity": "sha512-ugGW++yvGoxr4IrSoxsieH2b/NlZbXsBaL85Off3z487yS9eiiRjrfdkBw1iBvzv/SK0XjjYy+KBix5PIseOtQ==", + "dev": true, + "requires": { + "user-home": "^1.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8b9fa34 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "quarksbot", + "version": "1.0.0", + "description": "Grand Theft Auto V Roleplay Bot", + "main": "index.js", + "scripts": { + "start": "node index.js", + "dev": "node dev-index.js" + }, + "keywords": [ + "Roleplay", + "GTAV" + ], + "author": "Braeden Sowinski", + "license": "ISC", + "dependencies": { + "discord.js": "^13.8.1", + "mongodb": "^4.7.0" + } +} diff --git a/structures/QuarksBot.js b/structures/QuarksBot.js new file mode 100644 index 0000000..346d027 --- /dev/null +++ b/structures/QuarksBot.js @@ -0,0 +1,184 @@ +const { Collection, Client, MessageEmbed } = require('discord.js'); +const MongoClient = require('mongodb').MongoClient; +const Logger = require("../util/Logger"); +const path = require("path"); +const fs = require('fs'); + +class QuarksBot extends Client { + + constructor(options, config) { + super(options) + + this.config = config; + this.commands = new Collection(); + this.logger = new Logger(path.join(__dirname, "..", "logs/Logs.log")); + + if (this.config.Token === "") + return new TypeError( + "The config.js is not filled out. Please make sure nothing is blank, otherwise the bot will not work properly." + ); + + this.db; + this.dbo; + this.connectMongo(this.config.mongoURI, this.config.dbo); + this.LoadCommands(); + this.LoadEvents(); + + this.Ready = false; + + this.ws.on("INTERACTION_CREATE", async (interaction) => { + client.log("Interaction") + let GuildDB = await this.GetGuild(interaction.guild_id); + + if (interaction.type==3) return; + + + const command = interaction.data.name.toLowerCase(); + const args = interaction.data.options; + + //Easy to send respnose so ;) + interaction.guild = await this.guilds.fetch(interaction.guild_id); + interaction.send = async (message) => { + return await this.api + .interactions(interaction.id, interaction.token) + .callback.post({ + data: { + type: 4, + data: + typeof message == "string" + ? { content: message } + : message.type && message.type === "rich" + ? { embeds: [message] } + : message, + }, + }); + }; + let cmd = client.commands.get(command); + if (cmd.SlashCommand && cmd.SlashCommand.run) + cmd.SlashCommand.run(this, interaction, args, { GuildDB }); + }); + + const client = this; + } + + async connectMongo(mongoURI, dbo) { + this.db = await MongoClient.connect(mongoURI); + this.dbo = this.db.db(dbo); + this.log('Successfully connected to mongoDB'); + } + + exists(n) {return null != n && undefined != n && "" != n} + + LoadCommands() { + let CommandsDir = path.join(__dirname, '..', 'commands'); + fs.readdir(CommandsDir, (err, files) => { + if (err) this.log(err); + else + files.forEach((file) => { + let cmd = require(CommandsDir + "/" + file); + if (!cmd.name || !cmd.description) + return this.log( + "Unable to load Command: " + + file.split(".")[0] + + ", Reason: File doesn't had run/name/desciption" + ); + this.commands.set(file.split(".")[0].toLowerCase(), cmd); + this.log("Command Loaded: " + file.split(".")[0]); + }); + }); + } + + LoadEvents() { + let EventsDir = path.join(__dirname, '..', 'events'); + fs.readdir(EventsDir, (err, files) => { + if (err) this.log(err); + else + files.forEach((file) => { + const event = require(EventsDir + "/" + file); + this.on(file.split(".")[0], event.bind(null, this)); + this.logger.log("Event Loaded: " + file.split(".")[0]); + }); + }); + } + + sendTime(Channel, Error) { + let embed = new MessageEmbed() + .setColor(this.config.EmbedColor) + .setDescription(Error); + + Channel.send(embed); + } + + RegisterSlashCommands() { + this.guilds.cache.forEach((guild) => { + require("../util/RegisterSlashCommands")(this, guild.id); + }); + } + + async GetGuild(GuildId) { + let customChannelStatus; + let allowedChannels; + let guild = await this.dbo.collection("guilds").findOne({"server.serverID":GuildId}).then(guild => guild); + + // If guild not found, generate guild default + if (!guild) { + let newGuild = { + server: { + serverID: GuildId, + hasCustomChannels: false, + } + } + this.dbo.collection("guilds").insertOne(newGuild, function(err, res) { + if (err) throw err; + }); + customChannelStatus = newGuild.server.hasCustomChannels; + allowedChannels = null; + } else { + customChannelStatus = guild.server.hasCustomChannels; + if (guild.server.allowedChannels!=undefined||guild.server.allowedChannels!=null&&guild.server.allowedChannels.length>0) { + allowedChannels = guild.server.allowedChannels; + } else allowedChannels = null; + } + let guildData = { + allowedChannels: allowedChannels, + customChannelStatus: customChannelStatus, + serverID: GuildId + } + return guildData; + } + + /* + This command is to verify a user + has the correct role to use a + command ie. has cop role to use + name-search + */ + async verifyUseCommand(serverID, rolesCache, isList) { + let { customRoleStatus } = await this.GetGuild(serverID) + if (customRoleStatus) { + let hasRole = await this.checkRoleStatus(rolesCache, serverID, isList); + if (hasRole) { + return true // User has role, can use command + } else return false // User does not have role, can't use command + } else return true // There is no role limits + } + + log(Text) { + this.logger.log(Text); + } + + sendError(Channel, Error) { + let embed = new MessageEmbed() + .setTitle("An error occured") + .setColor("RED") + .setDescription(Error) + + Channel.send(embed); + } + + build() { + this.login(this.config.Token); + } +} + +module.exports = QuarksBot; \ No newline at end of file diff --git a/util/Logger.js b/util/Logger.js new file mode 100644 index 0000000..68c24b4 --- /dev/null +++ b/util/Logger.js @@ -0,0 +1,28 @@ +const winston = require("winston"); +const colors = require("colors"); + +class Logger { + constructor(LoggingFile) { + this.logger = winston.createLogger({ + transports: [new winston.transports.File({ filename: LoggingFile })], + }); + } + + log(Text) { + let d = new Date(); + this.logger.log({ + level: "info", + message: + `${d.getHours()}:${ + d.getMinutes + } - ${d.getDate()}:${d.getMonth()}:${d.getFullYear()} | Info: ` + Text, + }); + console.log( + colors.green( + `${d.getDate()}:${d.getMonth()}:${d.getFullYear()} - ${d.getHours()}:${d.getMinutes()}` + ) + colors.yellow(" | Info: " + Text) + ); + } +} + +module.exports = Logger; \ No newline at end of file diff --git a/util/RegisterSlashCommands.js b/util/RegisterSlashCommands.js new file mode 100644 index 0000000..f4d8496 --- /dev/null +++ b/util/RegisterSlashCommands.js @@ -0,0 +1,40 @@ +const fs = require("fs"); +const path = require("path"); + +/** + * Register slash commands for a guild + * @param {require("../structures/QuarksBot")} client + * @param {string} guild + */ +module.exports = (client, guild) => { + + let commandsDir = path.join(__dirname, "..", "commands"); + + fs.readdir(commandsDir, (err, files) => { + if (err) throw err; + files.forEach(async (file) => { + let cmd = require(commandsDir + "/" + file); + if (!cmd.SlashCommand || !cmd.SlashCommand.run) return; + let dataStuff = { + name: cmd.name, + description: cmd.description, + options: cmd.SlashCommand.options, + }; + + //Creating variables like this, So you might understand my code :) + let ClientAPI = client.api.applications(client.user.id); + let GuildAPI = ClientAPI.guilds(guild); + + try { + await GuildAPI.commands.post({ data: dataStuff }); + } catch (e) { + client.log('Error: API missing permissions, re-invite the bot'); + + // Forces bot to leave server + let guildID = client.guilds.cache.get(guild); + if (guildID) guildID.leave(); + client.log(`Server stats is now down to ${client.guilds.cache.size}`); + } + }); + }); +}; \ No newline at end of file