From eb13664f847a6f2feba21527d7643886960594c5 Mon Sep 17 00:00:00 2001 From: hex Date: Tue, 13 Aug 2024 14:43:43 +0200 Subject: [PATCH] braincell die from grng --- Cargo.lock | 3102 ++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 16 + favicon.ico | Bin 0 -> 194197 bytes src/discord.rs | 106 ++ src/main.rs | 75 ++ src/session.rs | 56 + 6 files changed, 3355 insertions(+) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 favicon.ico create mode 100644 src/discord.rs create mode 100644 src/main.rs create mode 100644 src/session.rs diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..7abdfe2 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3102 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +dependencies = [ + "byteorder", + "safemem", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "binascii" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" + +[[package]] +name = "cc" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cookie" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be2018768ed1d848cc4d347d551546474025ba820e5db70e4c9aaa349f678bd7" +dependencies = [ + "percent-encoding 2.3.1", + "time 0.1.45", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding 2.3.1", + "time 0.3.36", + "version_check 0.9.5", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "devise" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd716c4a507adc5a2aa7c2a372d06c7497727e0892b243d3036bc7478a13e526" +dependencies = [ + "devise_codegen 0.2.1", + "devise_core 0.2.1", +] + +[[package]] +name = "devise" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6eacefd3f541c66fc61433d65e54e0e46e0a029a819a7dbbc7a7b489e8a85f8" +dependencies = [ + "devise_codegen 0.4.1", + "devise_core 0.4.1", +] + +[[package]] +name = "devise_codegen" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea7b8290d118127c08e3669da20b331bed56b09f20be5945b7da6c116d8fab53" +dependencies = [ + "devise_core 0.2.1", + "quote 0.6.13", +] + +[[package]] +name = "devise_codegen" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8cf4b8dd484ede80fd5c547592c46c3745a617c8af278e2b72bea86b2dfed6" +dependencies = [ + "devise_core 0.4.1", + "quote 1.0.36", +] + +[[package]] +name = "devise_core" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1053e9d5d5aade9bcedb5ab53b78df2b56ff9408a3138ce77eaaef87f932373" +dependencies = [ + "bitflags 1.3.2", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "devise_core" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35b50dba0afdca80b187392b24f2499a88c336d5a8493e4b4ccfb608708be56a" +dependencies = [ + "bitflags 2.6.0", + "proc-macro2 1.0.86", + "proc-macro2-diagnostics", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "figment" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" +dependencies = [ + "atomic 0.6.0", + "pear 0.2.9", + "serde", + "toml 0.8.19", + "uncased", + "version_check 0.9.5", +] + +[[package]] +name = "filetime" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding 2.3.1", +] + +[[package]] +name = "fsevent" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" +dependencies = [ + "bitflags 1.3.2", + "fsevent-sys", +] + +[[package]] +name = "fsevent-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" +dependencies = [ + "libc", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags 1.3.2", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generator" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +dependencies = [ + "cc", + "libc", + "log 0.4.22", + "rustversion", + "windows", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check 0.9.5", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.10.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +dependencies = [ + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime 0.2.6", + "num_cpus", + "time 0.1.45", + "traitobject", + "typeable", + "unicase", + "url 1.7.2", +] + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "inotify" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall 0.5.3", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +dependencies = [ + "log 0.4.22", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if 1.0.0", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if 1.0.0", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +dependencies = [ + "log 0.3.9", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.22", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "mio-extras" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" +dependencies = [ + "lazycell", + "log 0.4.22", + "mio 0.6.23", + "slab", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.1.0", + "httparse", + "memchr", + "mime 0.3.17", + "spin", + "tokio", + "tokio-util", + "version_check 0.9.5", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log 0.4.22", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "net2" +version = "0.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "notify" +version = "4.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72dd35279a5dc895a30965e247b0961ba36c233dc48454a2de8ccd459f1afd3" +dependencies = [ + "bitflags 1.3.2", + "filetime", + "fsevent", + "fsevent-sys", + "inotify", + "libc", + "mio 0.6.23", + "mio-extras", + "walkdir", + "winapi 0.3.9", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi 0.3.9", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.36.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.5.3", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pear" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32dfa7458144c6af7f9ce6a137ef975466aa68ffa44d4d816ee5934018ba960a" +dependencies = [ + "pear_codegen 0.1.5", +] + +[[package]] +name = "pear" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" +dependencies = [ + "inlinable_string", + "pear_codegen 0.2.9", + "yansi 1.0.1", +] + +[[package]] +name = "pear_codegen" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0288ba5d581afbc93e2bbd931c1013584c15ecf46b1cdb927edc7abddbc8ca6" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", + "version_check 0.9.5", + "yansi 0.5.1", +] + +[[package]] +name = "pear_codegen" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" +dependencies = [ + "proc-macro2 1.0.86", + "proc-macro2-diagnostics", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "postgres" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c9ec84ab55b0f9e418675de50052d494ba893fd28c65769a6e68fcdacbee2b8" +dependencies = [ + "bytes", + "fallible-iterator", + "futures-util", + "log 0.4.22", + "tokio", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" +dependencies = [ + "base64 0.22.1", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02048d9e032fb3cc3413bbf7b83a15d84a5d419778e2628751896d856498eee9" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", + "version_check 0.9.5", + "yansi 1.0.1", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2 1.0.86", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rdiscord" +version = "0.1.0" +dependencies = [ + "dotenv", + "postgres", + "rand", + "rand_chacha", + "rand_core", + "reqwest", + "rocket 0.5.1", + "rocket_contrib", + "serde", + "urlencoding", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log 0.4.22", + "mime 0.3.17", + "native-tls", + "once_cell", + "percent-encoding 2.3.1", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url 2.5.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rocket" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83b9d9dc08c5dcc1d8126a9dd615545e6a358f8c13c883c8dfed8c0376fa355e" +dependencies = [ + "atty", + "base64 0.13.1", + "log 0.4.22", + "memchr", + "num_cpus", + "pear 0.1.5", + "rocket_codegen 0.4.11", + "rocket_http 0.4.11", + "state 0.4.2", + "time 0.1.45", + "toml 0.4.10", + "version_check 0.9.5", + "yansi 0.5.1", +] + +[[package]] +name = "rocket" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a516907296a31df7dc04310e7043b61d71954d703b603cc6867a026d7e72d73f" +dependencies = [ + "async-stream", + "async-trait", + "atomic 0.5.3", + "binascii", + "bytes", + "either", + "figment", + "futures", + "indexmap 2.3.0", + "log 0.4.22", + "memchr", + "multer", + "num_cpus", + "parking_lot", + "pin-project-lite", + "rand", + "ref-cast", + "rocket_codegen 0.5.1", + "rocket_http 0.5.1", + "serde", + "serde_json", + "state 0.6.0", + "tempfile", + "time 0.3.36", + "tokio", + "tokio-stream", + "tokio-util", + "ubyte", + "version_check 0.9.5", + "yansi 1.0.1", +] + +[[package]] +name = "rocket_codegen" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2810037b5820098af97bd4fdd309e76a8101ceb178147de775c835a2537284fe" +dependencies = [ + "devise 0.2.1", + "glob", + "indexmap 1.9.3", + "quote 0.6.13", + "rocket_http 0.4.11", + "version_check 0.9.5", + "yansi 0.5.1", +] + +[[package]] +name = "rocket_codegen" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "575d32d7ec1a9770108c879fc7c47815a80073f96ca07ff9525a94fcede1dd46" +dependencies = [ + "devise 0.4.1", + "glob", + "indexmap 2.3.0", + "proc-macro2 1.0.86", + "quote 1.0.36", + "rocket_http 0.5.1", + "syn 2.0.73", + "unicode-xid 0.2.4", + "version_check 0.9.5", +] + +[[package]] +name = "rocket_contrib" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e20efbc6a211cb3df5375accf532d4186f224b623f39eca650b19b96240c596b" +dependencies = [ + "log 0.4.22", + "notify", + "rocket 0.4.11", + "serde", + "serde_json", +] + +[[package]] +name = "rocket_http" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf9cbd128e1f321a2d0bebd2b7cf0aafd89ca43edf69e49b56a5c46e48eb19f" +dependencies = [ + "cookie 0.11.5", + "hyper 0.10.16", + "indexmap 1.9.3", + "pear 0.1.5", + "percent-encoding 1.0.1", + "smallvec", + "state 0.4.2", + "time 0.1.45", + "unicode-xid 0.1.0", +] + +[[package]] +name = "rocket_http" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9" +dependencies = [ + "cookie 0.18.1", + "either", + "futures", + "http 0.2.12", + "hyper 0.14.30", + "indexmap 2.3.0", + "log 0.4.22", + "memchr", + "pear 0.2.9", + "percent-encoding 2.3.1", + "pin-project-lite", + "ref-cast", + "serde", + "smallvec", + "stable-pattern", + "state 0.6.0", + "time 0.3.36", + "tokio", + "uncased", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.206" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.206" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable-pattern" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" +dependencies = [ + "memchr", +] + +[[package]] +name = "state" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3015a7d0a5fd5105c91c3710d42f9ccf0abfb287d62206484dcc67f9569a6483" + +[[package]] +name = "state" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" +dependencies = [ + "loom", +] + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "2.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "837a7e8026c6ce912ff01cefbe8cafc2f8010ac49682e2a3d9decc3bce1ecaaf" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 1.0.1", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03adcf0147e203b6032c0b2d30be1415ba03bc348901f3ff1cc0df6a733e60c3" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log 0.4.22", + "parking_lot", + "percent-encoding 2.3.1", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "rand", + "socket2", + "tokio", + "tokio-util", + "whoami", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.3.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log 0.4.22", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "traitobject" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ubyte" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" +dependencies = [ + "serde", +] + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "serde", + "version_check 0.9.5", +] + +[[package]] +name = "unicase" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" +dependencies = [ + "version_check 0.1.5", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna 0.5.0", + "percent-encoding 2.3.1", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log 0.4.22", + "once_cell", + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote 1.0.36", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +dependencies = [ + "is-terminal", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.73", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..826adfb --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rdiscord" +version = "0.1.0" +edition = "2021" + +[dependencies] +dotenv = "0.15.0" +postgres = "0.19.8" +rand = "0.8.5" +rand_chacha = "0.3.1" +rand_core = "0.6.4" +reqwest = {version = "0.12.5", features = ["json"]} +rocket = {version="0.5.1",features=["json"]} +rocket_contrib = "0.4.11" +serde = "1.0.206" +urlencoding = "2.1.3" diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4236302a626c15d9823ff6b571e94a6fef04c18a GIT binary patch literal 194197 zcmeF42VfON_qR8V(7W_rq<2ty@4Z8437ybF@4X~|1rQrH)YpoLh`x%7ii!m*AgF)> zB8v20L$crV+uRAu<=&7WDDU@o;mK^BojG&n%tE@jDsnbu36uX40HX6@+AY$ z3<^tiYG8NEaBgrnt73LCWi3pTCV2i`mKD>=vSt>utUiI3HPW(2_qPuA?GnKGC14UP zfUKZ6g5rmE4g9lj536bZ$(_P7my!pL2e8oxhLu6`=I!`nWTL zx_|U-*YM}L{@5e+hT8A6?Qb9G+vB6-13G2r`dpl|*_=x_4FVwy&cS}T%O2G!9qD); zSvYCpy4Q~O@0#J4UhT7Rd>uIVBAf%MAp*|BA5aH$-YZ<^T+jN_k2^FC>3L`2P}U`L zv;P3=t6`UCUmW4r@Fp0!TwuMAJ!XJ)pl@fDQxiA}CXVZcKXC4yDtkhUG-V=OmCWno zIWKx`%LXCRxewbnwd^G`EOekT`+owZSNA^-N8m7+bjPy(5tOi}47Gv+601kRmTs+s z*S}@J`EUi3nOk#2Q7Ce1Xur6UPC_Z*xbXPB*N?6jTOOZV->b`VJwnI9r`g7I2w2j@dGNzhO91Ak% zPd~d)wH(tIr3;z=7`C&&WzFtsSu@gtbC0OJ9Grb?<;* z`}DM)Y!GQ>N;U7Ud3TTaW^=djec0!ZKJL&ryjZ4L6S;5A58L;1u2Va)J*;hJuImKv zfT@#*SYHGcpdR#uNEnP===@#R@Va;BoIY=P{h>d-+qQq)sPd!ZiF5x0b%woOHOKVX ze?;_3MSWBrLXP$Css1=dO|89O>V+vORZ%ZQ1arXh+t!>wo0rfNq`b;eD(F5sn?5>J`7a#~${72C~iWd&Cm|PRikn$LdEO zSw!69Dvh?6)g5L()*w>%Ie`p&*waUtvK!6y-f8`weeIwSNbYJc%sswfy(w`NCY-Rl zcdw&ww;5pn)T6gKu5(-1s~<7(4`f?ymN~9_JqW2l=i~*Iy^ddoxgfi%V@1i!rn7^( z*^(LCVmH+K1KI5A*-qzl0NHbMT=6dlwRbvR0Nw`^|3cQyy-TwGjpvxTUhUeQ_JK{( zAKC1x@T1o`yV&jrl|bdAHpN`OmGv;F0%}7~f;pz}CCEhFvNs{DXMtx9)fRsL0Xhl9He%=sw|_YhC@T|J$;rML~HS^o}F z8lU@o<@qV}ik`G18_CDSukxA!%Afn1l&tUL+LoTU6Wg6b{kot>?RB40@Zk-{uRi8t z$Yf87RI(G7)Cp~K(AMrwU!p1JyZ}Fg@*^Gk@(Owf$2d!iM zyIJbjaGmVE%0>ER%E^R5I!3(K#UVZDizT#+9$8!yuh$NhdyqYEtoncsX9tBPo}#Xg zJ*uzzc53g;{s5;(WVWs!s$bx%PogWeKT$ul!{1`3FKB&|KFIpya)7mAS_--kt_Wwb zeuW^`gRB#oMJA^oR*2*EA+aCE1K+k=z2o2Bn5-pgvli{Z-^rx(=KW29- zGSNQPKTPe>&aK`1%;fkBKJKr!K>dupy2gd_{xL+t0C*5Kg4$!H=`5TE^`Uma8x8VK z`MiGKscUNHnzprb(TV2@WSDJ-6`x@DxO2S1INsCj<~*K>5*IzLs_jv`>b|$ub^p!q z9VDy&zI3^y^1dT6P7}8~?7%&D^i1ee zoBLA+_JGpk>`k2`bnVNDx%aHF&nYi=JYMUPwe&(|>F@sPlN^7o#lXu-!$tO zOY01?kC1=%8J2tQ?|H^|%72&ZxH(VZuTa^fm-Te;Jh;!1Y`TK!cd9N;2Y<3!Wa2X+ z=Y9e1IL-R&?7zxpussOeaZC5}nYa|PT?@SHv59l6`&`fYD>>gBcZYAWKaKl*wpCYE zF6KPdokCvcG+>|Vra8xi>hJOv`|5>#vwfVaYh(i(fsw8HqDqsAPoe7OP;mNQgtFaB zz@0{O{-5mUt+%tNZOW@P_DR1~Z_Rn`a2xwaLmyZL%7gp3*8c$Ip$9w!-p^O&{Es-M zXSk~t_T>ZJ$DHRKs=TjPN0r~$B;rt<(cs9^odEVpXP1HZeQ)Nr^s%A)zV3C7HHH(n zFb(U7JA?b4?sbl-Zm+&Y_m^(bmT$>Y(a_&e1;E8ejE8I(IKzWyAd3I-T}&ZU7X7 z!SEXF2i-^UtNzFyb%tIL2C^N}-OoUBI|Ezc0cZy1rLUjc`rpm9vSp<}c4aCQ@OL)H zq&wrF3FL-kJ&XE_?2kdbp(hHS2%W`yObDvaYlIDi9s)O1OdYhLdcFiQrw-(}ITpH?Yaqi3 z%Ss0YFTkIcRnHFHt6S`Wnf$Zu*Y?=@y{IBYK;nCfVmIwQ1+n^EWDE4J@OG*nJ`?I^ zr`itL@Z{>Yo;7rSQu@Q;+jddfWt;z3%S&=s+C_59j8kvBg|zE!X+ILi>kR9@o0UMx zMBHTkj3G*)$DNs=-zMjS**}-{M?t^E3SJpmg}~=;u6sKSIM0p5U*QSyBKR)4jik5Wz7A=ATl-`YS4{g*!61jli zQewgrh;GO4(+GZ;-oq#zEXBd(-Pv)?AEnWb>TBu!K4WgIue-Fg^n14YJdhT$KqgTC zN&UIRJY5r+&mA#VNMMW=Oxgpjm^5jF=NHTzI*nzuAKF#5lw@kKz1Vg^z+ zO)YD12|$h!#F&iqj~!s08yseB3u|N9D<8D@jUZNKl{Y&Bp5?=`>Xozgx3Z9Sk#^8%Awk=IG+)&g{^9{HgXTr2-H!BiO*d+~H+ z9VR_V4+TK|`SGw4^bD?NcRg<(f>lr(q*Er%x;6wtLC;GDl~XDRw)f|wZr;O?pqOlh zGtM5`tHk(Cypuc3__K>Y_UL_SNZGMx=iWVX)6xE6_gos%trPF5A_``hJ(YY6ArBSF zo0TKYT<3mHq7(keJ_f$gszD&XZ)N8`wO|UYg&u)4~`WE_u@~QW?N@F(A z^Nn$mMP!5VgE_-gvw6$_i%f|cKmb_10GXL(8-!d-XRNT<6HtDw+ml5}9y`g7M z4(Ps*-`GFd)4SJW_tzdaw@}8}4 zRJ#9w&*2Fe2(3W+rMyf4J%=p?#i4T^2fcT>7pBKWb{+gdyM6;}=bpN_PVT8Ic_+Jp zF&KNFZ8YTceYJ*PMrZ6HWyac1Gj4*h6XzJK@zc0Uqc$|jKlzhZ1t&$>L%U|RA8r=3 zo8K!vi~3O3rp_&LGiF9Qt#?p|;WD_>u5~@1O72S6WYBY)(z+VHfL}nmbrQ~j%1rME z&cHGF?fl?wn|}!F{mJMGqrYukXwqk`3Qqojcj;dZEIsbmh?3*aRk~w(9Cg5X$2zv+ zC_AeBXnSbcv9W_nk3ASueZ)hQN%h#scIjNdDQ747!N|S{@xKHI!B^Uqex+$UeC%Nd z;h&)Ac;)RP=vvhgqiYI<_Qi7l^M6G2IP*rUfoEq{i#o--;QjBm>A&fhUcI)z*S7x& z-V0yW*cFZa(7Wo-Iz`yeGfrlD)u_u)HH`e|^uTUI_w;U+Q+Cm_WZ;QGzf<2y{CbDx zFYQWyEF1x)S@Kkxyvr!bZR(eOjB%Pj_v&RoSa+yBs>0|C{C=_D9^U28-MxC9qrS#H z(`bl&IkKz67o`7T#$rCvFw)-8zMpK!+&}wv$Y;-rGU<25TCu+*NUxK;zmMZazRA8$ zd7w>+*Z3pSZ?9=N&}Ph#y|H6obY+Z9{k8Xn_jJnO(fUK3-zMH~*U$bfyywr{e+lEg z@=?DN(|???V(c#sn|-9uU%HfT>5FtqBvo$iIO0hEB{=hC=ZFi8v5k)+4-@$Pgz;5& z|5D>@?5F)SWiW|-%Flut!yVhiHT${GlY|A`>1UtPFPkTu6(tfoc`psx1EN7h4^NiX0l(ZgY997&B#)1tiH`d7uDGQ7{~lx$J3wWq4YFNpK=s2{St!q6Lku*B z%E+++x-b?#{yn_Mu}?cjIKQc2NA1-u2HLa>&KN7sGwG3jOoLqZ>kJR{{MN;`(qA0b zfpo!~?;R>#vaQRZF5Cg3kRI~FVAues!TZ|1?3)WUAS0x?Ft}S<#*LRE{Zmd1=>8=# zj;Fn{DHogHMj4Oo)Dzp4e(A?J$f@xnENXX^c2N}cPEfYc``%_-wtOo@K~^x=noxOq z6x0ToYZR)UY=VxUHrkx8Po5SC|?qg7U34M0UY_t$Y1lj`f5r8lP$w zwiQo)P+R&7xUX@qONZ5V^#b+B-09G|(lHOz$MC-HJ@%=5(t!IqZC8QELAvWN{i^@3 zLJP>~PCsMo6<;n;-B2BI-`l-@fnz_xB*+8qzH=bkO+jVotKal3`+GxfaHn6-LY-hO z#De>NW?gww*(i_I(6zK`b6I46LTr1t;>!m8;X^Rjd54mL`Zg~>TPOe-K-ZRl3Gfa0 zvH>cS2ca3L-YeazLsj7(*aqJBGuz6S^g0>})5q8Ir0T9hjh{%v^I`__rMP9A{mDV` zDGz&K6^wxP&>a-Fbn6u89CL3Is_yTEr(ggm|KV^yYys(}IoCThc0>2eL^_?Zd7eDz zH^WqMkB-S01{ui3mvGy^Bl4E-IYX`5v2{70H)1hpJ+V{e6P5RyYSg!=Kfxp2&oo?M< zy7LY+f($#+m8To=YQnX!KQT|N=Y(#s2`<1torfKyL3OV@5!P(TqXA_IY?M*kT;h#@9v8FHdK9^iZC729;iIM?{llR)qi~n zWOLNsI`1{T)9PnCF^^oQGN=QOfS#Sy=E|PQE~))7=~vzk!7m_tq3~Bw{a3gfB+nl~ zI_>UfO4gS^{RhRNK8DiXA96#YUie9`_ipJI@2agpd*Tr3QD&$NeL(%JH()!ckD>c2 z4_bc(CWG#)e#$tQ2;*TCL_$B1ER;vdKxsb>d*LH^45FX`VwYB zh|ULW=l%U2-V>_L5-DBouT|Bg-yH@Mzxqi^oAk36gu$I4yX8LD*LnfYX#zc=EvRhs zKpONlK;MV`*|&>jZ+gv1ZfMX|WiP#+-&FIWXF%L#c>P7JM?7t{+pVHG^#4xJk-rCLm`Oqj4Y zS$}7F&Pr~WtVm5d2>r#o!4r|skn5cN$m4pUy&-6WHn+p`=|5& zSMTr6zv|Ebq7M8O85sRh-X#lle*dq@K=M`f|U0z>p~?zuw~_quDILKhjV}~8ytwU;*8ir( z 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 literal 0 HcmV?d00001 diff --git a/src/discord.rs b/src/discord.rs new file mode 100644 index 0000000..5148354 --- /dev/null +++ b/src/discord.rs @@ -0,0 +1,106 @@ +extern crate reqwest; +extern crate rocket; + +pub mod discord { + static API: &str = "https://discord.com/api/v10"; + use rocket::serde::{Deserialize, Serialize}; + use std::error::Error; + use urlencoding::encode; + + #[derive(Deserialize, Serialize)] + pub struct TokenResponse { + pub access_token: String, + pub token_type: String, + pub expires_in: usize, + pub refresh_token: String, + pub scope: String, + } + + #[derive(Deserialize, Serialize, Clone, Debug)] + pub struct AvatarDecorationData { + asset: String, + sku_id: String, + } + + #[derive(Deserialize, Serialize, Clone, Debug)] + #[serde(crate = "rocket::serde")] + pub struct User { + pub id: String, + pub username: String, + pub discriminator: String, + pub global_name: Option, + pub avatar: Option, + pub bot: Option, + pub system: Option, + pub mfa_enabled: Option, + pub banner: Option, + pub accent_color: Option, + pub locale: Option, + pub verified: Option, + pub email: Option, + pub flags: Option, + pub premium_type: Option, + pub public_flags: Option, + pub avatar_decoration_data: Option, + } + + pub struct Client { + redirect_uri: String, + client_secret: String, + client_id: String, + } + + impl Client { + pub fn new(redirect_uri: String, client_id: String, client_secret: String) -> Self { + Client { + redirect_uri, + client_id, + client_secret, + } + } + + pub fn generate_authorize_url(&self, scope: &str, response_type: &str) -> String { + let AUTHORIZE_ENDPOINT = "https://discord.com/oauth2/authorize"; + format!( + "{}?client_id={}&response_type={}&redirect_uri={}&scope={}", + AUTHORIZE_ENDPOINT, + self.client_id, + response_type, + &encode(&self.redirect_uri), + scope + ) + } + + pub async fn get_user( + &self, + token_response: &TokenResponse, + ) -> Result> { + let http_client = reqwest::Client::new(); + let user_request = http_client + .get(format!("{}/{}", API, "users/@me")) + .bearer_auth(&token_response.access_token) + .send() + .await?; + let res: User = user_request.json().await?; + Ok(res) + } + + pub async fn exchange_code(&self, code: &String) -> Result> { + let http_client = reqwest::Client::new(); + let exchange_request = http_client + .post(format!("{}/{}", API, "/oauth2/token")) + .header("content-type", "application/x-www-form-urlencoded") + .basic_auth(&self.client_id, Some(&self.client_secret)) + .form(&[ + ("grant_type", "authorization_code"), + ("code", code), + ("redirect_uri", &self.redirect_uri), + ]) + .send() + .await?; + + let res: TokenResponse = exchange_request.json().await?; + Ok(res) + } + } +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..cdcfe23 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,75 @@ +#![allow(non_snake_case)] +extern crate reqwest; +extern crate rocket; + +mod discord; +mod session; + +use discord::discord::Client; +use dotenv::dotenv; +use rocket::fs::NamedFile; +use rocket::response::Redirect; +use rocket::serde::json::Json; +use rocket::tokio::sync::Mutex; +use rocket::State; +use rocket::{get, launch, routes}; + +use self::session::session::{Session, SessionManager}; + +type SharedSessionManager = Mutex; + +#[get("/callback?")] +async fn index( + shared_session_manager: &State, + code: String, + client: &State, +) -> Json { + let token_exchange = client.exchange_code(&code).await.unwrap(); + let user = client.get_user(&token_exchange).await.unwrap(); + let mut session_manager = shared_session_manager.lock().await; + let session = session_manager + .generate_session(user, &token_exchange.access_token) + .await; + Json(session) +} + +#[get("/favicon.ico")] +async fn get_favicon() -> Option { + NamedFile::open("./favicon.ico").await.ok() +} + +#[get("/session?")] +async fn return_sess( + shared_session_manager: &State, + token: String, +) -> Json { + Json( + shared_session_manager + .lock() + .await + .get_session(&token) + .await + .unwrap(), + ) +} + +#[get("/")] +async fn redirect_auth(client: &State) -> Redirect { + Redirect::to(client.generate_authorize_url("identify", "code")) +} + +#[launch] +fn launch() -> _ { + dotenv().ok(); + let REDIRECT_URI = std::env::var("REDIRECT_URI").expect("yall forgot REDIRECT_URI"); + let CLIENT_ID = std::env::var("CLIENT_ID").expect("yall forgot CLIENT_ID"); + let CLIENT_SECRET = std::env::var("CLIENT_SECRET").expect("yall forgot CLIENT_SECRET"); + + let client: Client = Client::new(REDIRECT_URI, CLIENT_ID, CLIENT_SECRET); + let session_manager: SessionManager = SessionManager::new(); + let shared_session_manager: SharedSessionManager = SharedSessionManager::new(session_manager); + rocket::build() + .manage(client) + .manage(shared_session_manager) + .mount("/", routes![index, redirect_auth, return_sess, get_favicon]) +} diff --git a/src/session.rs b/src/session.rs new file mode 100644 index 0000000..a166611 --- /dev/null +++ b/src/session.rs @@ -0,0 +1,56 @@ +pub mod session { + use std::error::Error; + use rand::{distributions::Alphanumeric, Rng}; + use serde::{Deserialize, Serialize}; + + use crate::discord::discord::User; + + #[derive(Clone, Debug, Deserialize, Serialize)] + pub struct Session { + pub access_token: String, + pub user: User, + pub session_token: String, + } + + pub struct SessionManager { + pub sessions: Vec, + } + + impl SessionManager { + pub async fn generate_random_string(&mut self) -> String { + rand::thread_rng() + .sample_iter(&Alphanumeric) + .take(32) + .map(char::from) + .collect() + } + + pub fn new() -> Self { + Self { + sessions: Vec::new(), + } + } + + pub async fn get_session(&mut self, session: &String) -> Result> { + let found_sessions: Vec = self + .sessions + .clone() + .into_iter() + .filter(|s| s.session_token.eq(session)) + .collect(); + Ok(found_sessions.get(0).unwrap().clone()) + } + + pub async fn generate_session(&mut self, user: User, access_token: &str) -> Session { + self.sessions.retain(|s| s.user.id != user.id); + let token = self.generate_random_string().await; + let session = Session { + access_token: access_token.to_string(), + user, + session_token: token, + }; + self.sessions.push(session.clone()); + session + } + } +}