├── .dockerignore ├── example.env ├── .gitignore ├── src ├── commands │ ├── mod.rs │ ├── help.rs │ ├── price.rs │ ├── pricewithoutdb.rs │ └── addtoken.rs ├── settings │ ├── mod.rs │ ├── dbstructs.rs │ ├── commonfunctions.rs │ ├── permissionsettings.rs │ ├── settings.rs │ ├── owneravailablecommands.rs │ └── commandselection.rs └── main.rs ├── .vscode └── settings.json ├── Dockerfile ├── Cargo.toml ├── README.md └── Cargo.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.VSCodeCounter -------------------------------------------------------------------------------- /example.env: -------------------------------------------------------------------------------- 1 | DEXSCREENER_BOT="yourbottoken" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .env 3 | /dexscreener.db -------------------------------------------------------------------------------- /src/commands/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod addtoken; 2 | pub mod help; 3 | pub mod price; 4 | pub mod pricewithoutdb; 5 | -------------------------------------------------------------------------------- /src/settings/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod commandselection; 2 | pub mod commonfunctions; 3 | pub mod dbstructs; 4 | pub mod owneravailablecommands; 5 | pub mod permissionsettings; 6 | pub mod settings; 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.cargo.features": [ 3 | "memdatabase" 4 | ], 5 | "rust-analyzer.check.command": "check", 6 | "rust-analyzer.cargo.noDefaultFeatures": true 7 | } -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:latest 2 | 3 | RUN set -eux; \ 4 | apt-get update; \ 5 | apt-get install -y --no-install-recommends \ 6 | libclang-dev 7 | 8 | WORKDIR /usr/src/dexscreener-pricebot-v2 9 | 10 | # Copy the Cargo.toml and Cargo.lock files 11 | COPY Cargo.toml Cargo.lock ./ 12 | 13 | # Copy the source code 14 | COPY src ./src 15 | 16 | COPY .env ./.env 17 | 18 | COPY README.md ./README.md 19 | 20 | RUN cargo install --features "database" --path . 21 | 22 | CMD ["dexscreener-pricebot-v2"] -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dexscreener-pricebot-v2" 3 | version = "0.5.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | poise = { git = "https://github.com/serenity-rs/poise.git", branch = "next", features = [ 8 | "cache", 9 | "collector", 10 | ] } 11 | tokio = { version = "1", features = ["macros", "rt-multi-thread"] } 12 | serenity = { version = "0.12.0", default-features = false, features = [ 13 | "client", 14 | "gateway", 15 | "rustls_backend", 16 | "model", 17 | ] } 18 | reqwest = { version = "0.11.22", features = ["json"] } 19 | surrealdb = { version = "1.5.4", optional = true } 20 | macro_env = "0.1.8" 21 | once_cell = "1.19.0" 22 | serde = { version = "1.0.204", features = ["derive"] } 23 | futures = "0.3.30" 24 | alloy-primitives = "0.7.7" 25 | cfg-if = "1.0.0" 26 | 27 | [features] 28 | database = ["dep:surrealdb", "surrealdb?/kv-rocksdb", "surrealdb?/kv-mem"] 29 | memdatabase = ["surrealdb/kv-mem", "database"] 30 | filedatabase = ["surrealdb/kv-rocksdb", "database"] 31 | -------------------------------------------------------------------------------- /src/commands/help.rs: -------------------------------------------------------------------------------- 1 | use poise::CreateReply; 2 | use serenity::all::{CreateActionRow, CreateButton, CreateEmbed}; 3 | 4 | use crate::{Context, Error}; 5 | 6 | #[poise::command(slash_command)] 7 | pub async fn price(ctx: Context<'_>) -> Result<(), Error> { 8 | let text = if cfg!(feature = "database") { 9 | "You can fetch the latest prices from dexscreener using `/price`\n 10 | Some tokens are autocompleted. If this is not available, the bot will offer the option to search by smart contract address.\n 11 | Your admin is capable to set more tokens to be autocompleted for your guild." 12 | } else { 13 | "You can fetch the latest prices from dexscreener using `/price`\n 14 | Some tokens are autocompleted. If this is not available, the bot will offer the option to search by smart contract address." 15 | }; 16 | 17 | let embed = CreateEmbed::default().description(text).title("Help menu"); 18 | let button = CreateButton::new_link("https://github.com/keiveulbugs/Dexscreener_pricebot") 19 | .label("The Git repository"); 20 | ctx.send( 21 | CreateReply::default() 22 | .embed(embed) 23 | .components(vec![CreateActionRow::Buttons(vec![button])]), 24 | ) 25 | .await?; 26 | 27 | Ok(()) 28 | } 29 | -------------------------------------------------------------------------------- /src/settings/dbstructs.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | use poise::serenity_prelude::GuildId; 3 | use serde::{Deserialize, Serialize}; 4 | 5 | /// Which settings someone can change in the bot. 6 | /// - `availablecommands`: Turn on and off which commands are visible for users in a guild 7 | /// - `owneravailablecommands`: Change which commands are available to turn on for `availablecommands` 8 | /// - `tokenpricetracking`: Allow adding tokens to `/price`-autocomplete through settings 9 | /// - `globaltoken`: Allow tokens added through `tokenpricetracking` to be available in all guilds 10 | #[allow(clippy::struct_excessive_bools)] 11 | #[derive(Debug, Serialize, Deserialize)] 12 | pub struct AvailableSettings { 13 | // Ability to change which commands are available in a guild 14 | pub availablecommands: bool, 15 | // Ability to change which commands are available in `availablecommands` (should be only owners of the bot) 16 | pub owneravailablecommands: bool, 17 | // Ability to change which tokens are being tracked in price tracking 18 | pub tokenpricetracking: bool, 19 | // Ability to set tokens globally 20 | pub globaltokens: bool, 21 | } 22 | 23 | /// The commands that are available in a guild to be turned on. 24 | /// These are registered and non-registered commands. 25 | #[derive(Debug, Serialize, Deserialize)] 26 | pub struct AvailableSlashcommands { 27 | pub availableslashcommands: Vec, 28 | pub guildid: GuildId, 29 | } 30 | 31 | /// The commands that are registered in a guild (and thus visibile) 32 | #[derive(Debug, Serialize, Deserialize)] 33 | pub struct GuildCommands { 34 | pub guildid: GuildId, 35 | pub commands: Vec, 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dexscreener.com Pricebot 2 | *After a long wait, the bot is now updated to the latest Poise and Serenity versions. Alongside this various improvements have been made. TLDR: The whole bot is rewritten from the ground up.* 3 | 4 | ## Features 5 | **Default:** This is a simple pricebot where you can get the price of the hardcoded coins in `pricewithoutdb.rs`. You can change the hashmap to include more or different coins/tokens. When users enter a symbol that is not in there, they will get the option to fetch it manually with a modal. 6 | 7 | **Database:** This allows a lot more customization. It has the following features: 8 | - Store coins/tokens in a database to show as autocomplete suggestions 9 | - Turn on and off commands visible in a guild/server 10 | - Make commands available or not available in a guild/server (As of right now, it does not set global commands so it only registers commands in joined guilds on start up. You can manually turn on commands while running through the command.) 11 | - Give certain permissions extra rights 12 | 13 | ## Running 14 | For the basic lightweight version run: 15 | 16 | ```cargo run --release``` 17 | 18 | For the database version run: 19 | 20 | ```cargo run --release --features database``` 21 | 22 | Both cases, run can be changed to build to create a binary. 23 | 24 | The bot will ask on startup the bot secret, but you can also set it using a `.env` with `DEXSCREENER_BOT` as variable name. 25 | 26 | 27 | ## Good to know 28 | - The bot will take the pair with the most volume based on the smart contract address of a token 29 | - Clippy is set to pedantic to avoid bad code. But it whines about everything, so have allowed quite a bit (i.e. struct names being too similar to filenames) 30 | - All rights are reserved to Dexscreener.com 31 | 32 | 33 | # ToDo 34 | - [ ] Automatically register commands when the bot joins a new guild. 35 | - [ ] Make an owner command that allows setting tokens from a guild global or private -------------------------------------------------------------------------------- /src/settings/commonfunctions.rs: -------------------------------------------------------------------------------- 1 | use poise::CreateReply; 2 | use serenity::all::GuildId; 3 | 4 | use crate::{Context, Error}; 5 | /// Checks if a user is part of the botowner's team, returning a bool. 6 | /// If text is supplied, this send as an ephemeral message to the user with the supplied text. 7 | pub async fn ownercheck(ctx: Context<'_>, text: Option<&str>) -> Result { 8 | let ownercheck = ctx.framework().options.owners.contains(&ctx.author().id); 9 | if !ownercheck && text.is_some() { 10 | match ctx.send( 11 | CreateReply::new() 12 | .content(text.unwrap_or("You are not the bot owner. You don't have the right permissions for this action.")) 13 | .ephemeral(true), 14 | ) 15 | .await { 16 | Ok(botownercheckmessage) => botownercheckmessage, 17 | Err(botownercheckerror) => return Err(format!("Person is not the bot owner, however, this message could not be send to them.\nError: {botownercheckerror}").into()) 18 | }; 19 | } 20 | Ok(ownercheck) 21 | } 22 | /// Checks if a user is admin of this guild, returning a bool. 23 | /// If text is supplied, this send as an ephemeral message to the user with the supplied text. 24 | pub async fn admincheck(ctx: Context<'_>, text: Option<&str>) -> Result { 25 | let admincheck = ctx 26 | .author_member() 27 | .await 28 | .and_then(|m| m.permissions) 29 | .is_some_and(poise::serenity_prelude::Permissions::administrator); 30 | 31 | if !admincheck { 32 | match ctx.send( 33 | CreateReply::new() 34 | .content(text.unwrap_or("You are not the bot owner. You don't have the right permissions for this action.")) 35 | .ephemeral(true), 36 | ) 37 | .await { 38 | Ok(botownercheckmessage) => botownercheckmessage, 39 | Err(botownercheckerror) => return Err(format!("Person is not an admin on this guild, however, this message could not be send to them.\nError: {botownercheckerror}").into()) 40 | }; 41 | } 42 | Ok(admincheck) 43 | } 44 | 45 | /// Get the guildid. Return an error if it can not be found and send an ephemeral message to the suer about it. 46 | pub async fn getguildid(ctx: Context<'_>) -> Result { 47 | match ctx.guild_id() { 48 | Some(guildid) => Ok(guildid), 49 | None => { 50 | ctx.send( 51 | CreateReply::new() 52 | .content("It looks you are not in a server") 53 | .ephemeral(true), 54 | ) 55 | .await?; 56 | Err("User is not in a server or there were problems fetching the GuildId".into()) 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/settings/permissionsettings.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | use crate::settings::dbstructs::AvailableSettings; 3 | use crate::{Context, Error, DB}; 4 | use poise::serenity_prelude::CreateMessage; 5 | use poise::serenity_prelude::CreateSelectMenu; 6 | use poise::serenity_prelude::CreateSelectMenuKind; 7 | use poise::serenity_prelude::CreateSelectMenuOption; 8 | use poise::CreateReply; 9 | 10 | use super::commonfunctions::getguildid; 11 | 12 | /// Setting the permissions a guild has 13 | pub async fn permissionsettings(ctx: Context<'_>) -> Result<(), Error> { 14 | let guildid = getguildid(ctx).await?; 15 | 16 | let dbcommandpermissions: Option = DB 17 | .select(("availablesettings", guildid.to_string())) 18 | .await?; 19 | 20 | let commandpermissions: AvailableSettings = match dbcommandpermissions { 21 | Some(permissions) => permissions, 22 | None => AvailableSettings { 23 | availablecommands: true, 24 | owneravailablecommands: false, 25 | tokenpricetracking: true, 26 | globaltokens: false, 27 | }, 28 | }; 29 | let selectmenuvec = vec![ 30 | CreateSelectMenuOption::new( 31 | "Change which tokens are registered in a guild", 32 | "availablecommands", 33 | ) 34 | .default_selection(commandpermissions.availablecommands), 35 | CreateSelectMenuOption::new("Add tokens to be tracked in /price", "tokenpricetracking") 36 | .default_selection(commandpermissions.tokenpricetracking), 37 | CreateSelectMenuOption::new("Be able to set tokens to be global", "globaltokens") 38 | .default_selection(commandpermissions.globaltokens), 39 | ]; 40 | 41 | let customid = format!("permissionsettings{}", ctx.id()); 42 | let message = ctx 43 | .channel_id() 44 | .send_message( 45 | ctx, 46 | CreateMessage::new() 47 | .content("Please click the permissions you want to give this guild") 48 | .select_menu( 49 | CreateSelectMenu::new( 50 | &customid, 51 | CreateSelectMenuKind::String { 52 | options: selectmenuvec, 53 | }, 54 | ) 55 | .max_values(3) 56 | .placeholder("No Setting chosen"), 57 | ), 58 | ) 59 | .await?; 60 | let interaction = match message 61 | .await_component_interaction(&ctx.serenity_context().shard) 62 | .timeout(std::time::Duration::from_secs(60 * 3)) 63 | .author_id(ctx.author().id) 64 | .custom_ids(vec![customid]) 65 | .await 66 | { 67 | Some(x) => x, 68 | None => { 69 | message.reply(&ctx, "Timed out").await?; 70 | return Ok(()); 71 | } 72 | }; 73 | 74 | let interactionvalue = match &interaction.data.kind { 75 | poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { values } => { 76 | values.clone() 77 | } 78 | _ => panic!("unexpected interaction data kind"), 79 | }; 80 | 81 | message.delete(ctx).await?; 82 | 83 | let selectedpermissions = AvailableSettings { 84 | availablecommands: interactionvalue.contains(&"availablecommands".to_string()), 85 | owneravailablecommands: false, 86 | tokenpricetracking: interactionvalue.contains(&"tokenpricetracking".to_string()), 87 | globaltokens: interactionvalue.contains(&"globaltokens".to_string()), 88 | }; 89 | 90 | let dbresult: Option = DB 91 | .update(("availablesettings", guildid.to_string())) 92 | .content(selectedpermissions) 93 | .await?; 94 | 95 | ctx.send( 96 | CreateReply::default() 97 | .content(format!( 98 | "Set for {} the following permissions:\n{:#?}", 99 | guildid.name(ctx.cache()).unwrap_or(guildid.to_string()), 100 | dbresult 101 | )) 102 | .ephemeral(true), 103 | ) 104 | .await?; 105 | 106 | Ok(()) 107 | } 108 | -------------------------------------------------------------------------------- /src/commands/price.rs: -------------------------------------------------------------------------------- 1 | #![allow(clippy::struct_field_names)] 2 | #![allow(clippy::module_name_repetitions)] 3 | #![allow(clippy::cast_possible_truncation)] 4 | #![cfg(feature = "database")] 5 | use crate::{Context, Data, Error, DB}; 6 | use futures::{Stream, StreamExt}; 7 | use poise::CreateReply; 8 | use poise::Modal; 9 | use serde::{Deserialize, Serialize}; 10 | use serenity::all::GuildId; 11 | use serenity::all::{CreateEmbed, CreateEmbedAuthor, CreateEmbedFooter}; 12 | use serenity::model::Colour; 13 | 14 | #[derive(Debug, Serialize, Deserialize)] 15 | pub struct Coins { 16 | pub name: String, 17 | pub address: String, 18 | pub guildid: GuildId, 19 | pub global: bool, 20 | } 21 | 22 | #[derive(Debug, Modal, Clone)] 23 | #[name = "Custom Token"] 24 | struct CustomToken { 25 | #[name = "Enter address of the token"] // Field name by default 26 | #[placeholder = "0x....."] // No placeholder by default 27 | #[min_length = 42] // No length restriction by default (so, 1-4000 chars) 28 | #[max_length = 42] 29 | address: String, 30 | } 31 | 32 | async fn autocomplete_name<'a>( 33 | _ctx: Context<'_>, 34 | partial: &'a str, 35 | ) -> impl Stream + 'a { 36 | let coins: Result, surrealdb::Error> = DB.select("Coins").await; 37 | let coins = match coins { 38 | Ok(coins) => coins.iter().map(|x| x.name.clone()).collect(), 39 | Err(_) => vec![], 40 | }; 41 | 42 | futures::stream::iter(coins) 43 | .filter(move |name| futures::future::ready(name.starts_with(partial))) 44 | .map(|name| name.to_string()) 45 | } 46 | 47 | /// Find the price of any coin in the Bots database. If not available allow for custom address search. 48 | #[poise::command(slash_command)] 49 | pub async fn price( 50 | ctx: poise::ApplicationContext<'_, Data, Error>, 51 | #[autocomplete = "autocomplete_name"] 52 | #[description = "Coin to find price from"] 53 | coin: String, 54 | ) -> Result<(), Error> { 55 | let optionspecificcoin: Option = DB.select(("Coins", coin.clone())).await?; 56 | 57 | let address = match optionspecificcoin { 58 | Some(coin) => coin.address, 59 | None => { 60 | let data = CustomToken::execute(ctx).await?; 61 | match data { 62 | Some(val) => val.address, 63 | None => { 64 | ctx.say("This token is not available on dexscreener") 65 | .await?; 66 | return Ok(()); 67 | } 68 | } 69 | } 70 | }; 71 | ctx.defer().await?; 72 | let url = format!("https://api.dexscreener.com/latest/dex/tokens/{address}"); 73 | let client = reqwest::Client::new(); 74 | let result = client.get(url).send().await?; 75 | let mut parsedresult = result.json::().await?; 76 | parsedresult.pairs.sort_by_key(|x| { 77 | x.volume 78 | .clone() 79 | .unwrap_or_default() 80 | .h24 81 | .unwrap_or(0.0) 82 | .round() as i64 83 | }); 84 | let pair = match parsedresult.pairs.last() { 85 | Some(val) => val, 86 | None => { 87 | ctx.say(format!("{} is not available on Dexscreener", coin.clone())) 88 | .await?; 89 | return Ok(()); 90 | } 91 | }; 92 | let price = match &pair.price_usd { 93 | Some(val) => val, 94 | None => return Ok(()), 95 | }; 96 | let pricechange = match &pair.price_change { 97 | Some(change) => change.h24.unwrap_or(0.0), 98 | None => return Ok(()), 99 | }; 100 | let colour = if pricechange >= 0.0 { 101 | Colour::from_rgb(0, 255, 0) 102 | } else { 103 | Colour::from_rgb(255, 0, 0) 104 | }; 105 | let nametoken = &pair.base_token.name; 106 | 107 | let embed = CreateEmbed::default() 108 | .author(CreateEmbedAuthor::new(nametoken)) 109 | .title(format!("${price} *( {pricechange}%)*")) 110 | .footer(CreateEmbedFooter::new( 111 | "All rights reserved to Dexscreener.com", 112 | )) 113 | .colour(colour); 114 | 115 | ctx.send(CreateReply::default().embed(embed)).await?; 116 | Ok(()) 117 | } 118 | 119 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 120 | #[serde(rename_all = "camelCase")] 121 | pub struct Root { 122 | pub schema_version: String, 123 | pub pairs: Vec, 124 | } 125 | 126 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 127 | #[serde(rename_all = "camelCase")] 128 | pub struct Pair { 129 | pub url: String, 130 | pub base_token: BaseToken, 131 | pub price_usd: Option, 132 | pub volume: Option, 133 | pub price_change: Option, 134 | } 135 | 136 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 137 | #[serde(rename_all = "camelCase")] 138 | pub struct BaseToken { 139 | pub address: String, 140 | pub name: String, 141 | pub symbol: String, 142 | } 143 | 144 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 145 | #[serde(rename_all = "camelCase")] 146 | pub struct Volume { 147 | pub h24: Option, 148 | } 149 | 150 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 151 | #[serde(rename_all = "camelCase")] 152 | pub struct PriceChange { 153 | pub h24: Option, 154 | } 155 | -------------------------------------------------------------------------------- /src/commands/pricewithoutdb.rs: -------------------------------------------------------------------------------- 1 | #![allow(clippy::struct_field_names)] 2 | #![allow(clippy::module_name_repetitions)] 3 | #![allow(clippy::cast_possible_truncation)] 4 | use crate::{Context, Data, Error}; 5 | use futures::{Stream, StreamExt}; 6 | use poise::CreateReply; 7 | use poise::Modal; 8 | use serde::{Deserialize, Serialize}; 9 | use serenity::all::{CreateEmbed, CreateEmbedAuthor, CreateEmbedFooter}; 10 | use serenity::model::Colour; 11 | use std::collections::HashMap; 12 | 13 | #[derive(Debug, Serialize, Deserialize)] 14 | struct Coins { 15 | name: String, 16 | address: String, 17 | } 18 | 19 | #[derive(Debug, Modal, Clone)] 20 | #[name = "Custom Token"] 21 | struct CustomToken { 22 | #[name = "Enter address of the token"] // Field name by default 23 | #[placeholder = "0x....."] // No placeholder by default 24 | #[min_length = 42] // No length restriction by default (so, 1-4000 chars) 25 | #[max_length = 42] 26 | address: String, 27 | } 28 | // No fucking clue why clippy whines about this 29 | #[allow(clippy::unused_async)] 30 | #[allow(dead_code)] // this code is not dead 31 | async fn autocomplete_name<'a>( 32 | _ctx: Context<'_>, 33 | partial: &'a str, 34 | ) -> impl Stream + 'a { 35 | let coins = vec!["BTC", "ETH", "OPENX", "OP"]; 36 | 37 | futures::stream::iter(coins) 38 | .filter(move |name| futures::future::ready(name.starts_with(partial))) 39 | .map(std::string::ToString::to_string) 40 | } 41 | 42 | /// Find the price of any coin in the Bots database. If not available allow for custom address search. 43 | #[poise::command(slash_command)] 44 | pub async fn price( 45 | ctx: poise::ApplicationContext<'_, Data, Error>, 46 | #[autocomplete = "autocomplete_name"] 47 | #[description = "Coin to find price from"] 48 | coin: String, 49 | ) -> Result<(), Error> { 50 | let hardcodedcoins = HashMap::from([ 51 | ("BTC", "0xC0BC84e95864BdfDCd1CCFB8A3AA522E79Ca1410"), 52 | ("OPENX", "0xc3864f98f2a61A7cAeb95b039D031b4E2f55e0e9"), 53 | ("OP", "0x4200000000000000000000000000000000000042"), 54 | ("ETH", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), 55 | ]); 56 | 57 | let address = match hardcodedcoins.get(coin.to_uppercase().as_str()) { 58 | Some(coin) => (*coin).to_string(), 59 | None => { 60 | let data = CustomToken::execute(ctx).await?; 61 | match data { 62 | Some(val) => val.address, 63 | None => { 64 | ctx.say("This token is not available on dexscreener") 65 | .await?; 66 | return Ok(()); 67 | } 68 | } 69 | } 70 | }; 71 | 72 | ctx.defer().await?; 73 | let url = format!("https://api.dexscreener.com/latest/dex/tokens/{address}"); 74 | let client = reqwest::Client::new(); 75 | let result = client.get(url).send().await?; 76 | let mut parsedresult = result.json::().await?; 77 | parsedresult.pairs.sort_by_key(|x| { 78 | x.volume 79 | .clone() 80 | .unwrap_or_default() 81 | .h24 82 | .unwrap_or(0.0) 83 | .round() as i64 84 | }); 85 | let pair = match parsedresult.pairs.last() { 86 | Some(val) => val, 87 | None => { 88 | ctx.say(format!("{} is not available on Dexscreener", coin.clone())) 89 | .await?; 90 | return Ok(()); 91 | } 92 | }; 93 | let price = match &pair.price_usd { 94 | Some(val) => val, 95 | None => return Ok(()), 96 | }; 97 | let pricechange = match &pair.price_change { 98 | Some(change) => change.h24.unwrap_or(0.0), 99 | None => return Ok(()), 100 | }; 101 | let colour = if pricechange >= 0.0 { 102 | Colour::from_rgb(0, 255, 0) 103 | } else { 104 | Colour::from_rgb(255, 0, 0) 105 | }; 106 | let nametoken = &pair.base_token.name; 107 | 108 | let embed = CreateEmbed::default() 109 | .author(CreateEmbedAuthor::new(nametoken)) 110 | .title(format!("${price} *( {pricechange}%)*")) 111 | .footer(CreateEmbedFooter::new( 112 | "All rights reserved to Dexscreener.com", 113 | )) 114 | .colour(colour); 115 | 116 | ctx.send(CreateReply::default().embed(embed)).await?; 117 | 118 | Ok(()) 119 | } 120 | 121 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 122 | #[serde(rename_all = "camelCase")] 123 | pub struct Root { 124 | pub schema_version: String, 125 | pub pairs: Vec, 126 | } 127 | 128 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 129 | #[serde(rename_all = "camelCase")] 130 | pub struct Pair { 131 | pub url: String, 132 | pub base_token: BaseToken, 133 | pub price_usd: Option, 134 | pub volume: Option, 135 | pub price_change: Option, 136 | } 137 | 138 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 139 | #[serde(rename_all = "camelCase")] 140 | pub struct BaseToken { 141 | pub address: String, 142 | pub name: String, 143 | pub symbol: String, 144 | } 145 | 146 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 147 | #[serde(rename_all = "camelCase")] 148 | pub struct Volume { 149 | pub h24: Option, 150 | } 151 | 152 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 153 | #[serde(rename_all = "camelCase")] 154 | pub struct PriceChange { 155 | pub h24: Option, 156 | } 157 | -------------------------------------------------------------------------------- /src/commands/addtoken.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | use crate::commands::price::Coins; 3 | use crate::{Context, Error, DB}; 4 | use poise::{CreateReply, Modal}; 5 | use serde::{Deserialize, Serialize}; 6 | use serenity::all::GuildId; 7 | use serenity::{ 8 | all::{CreateActionRow, CreateButton, CreateEmbed}, 9 | model::application::ComponentInteraction, 10 | }; 11 | 12 | #[derive(Debug, Modal, Clone)] 13 | #[name = "Add a custom token"] 14 | struct AddToken { 15 | #[name = "Enter address of the token"] // Field name by default 16 | #[placeholder = "0x....."] // No placeholder by default 17 | #[min_length = 42] // No length restriction by default (so, 1-4000 chars) 18 | #[max_length = 42] 19 | address: String, 20 | #[name = "Add a url that links to the logo"] 21 | #[placeholder = "https://example.com/logo.png"] 22 | logo: Option, 23 | } 24 | 25 | #[allow(clippy::too_many_lines)] 26 | pub async fn addtoken( 27 | ctx: Context<'_>, 28 | interaction: ComponentInteraction, 29 | guildid: GuildId, 30 | globaltokenpermission: bool, 31 | ) -> Result<(), Error> { 32 | println!("Trying to open modal"); 33 | let modalresponse = match poise::execute_modal_on_component_interaction::( 34 | ctx.serenity_context(), 35 | interaction, 36 | None, 37 | None, 38 | ) 39 | .await? 40 | { 41 | Some(val) => val, 42 | None => { 43 | ctx.say("No datat found in modal").await?; 44 | return Ok(()); 45 | } 46 | }; 47 | 48 | let url = format!( 49 | "https://api.dexscreener.com/latest/dex/tokens/{}", 50 | modalresponse.address 51 | ); 52 | let client = reqwest::Client::new(); 53 | let result = client.get(url).send().await?; 54 | let parsedresult = result.json::().await?; 55 | let basetoken = parsedresult.pairs[0].base_token.clone(); 56 | 57 | let mut embed = CreateEmbed::default() 58 | .title("Check if the following information is correct:") 59 | .field("Symbol", basetoken.symbol.clone(), false) 60 | .field("Address", basetoken.address.clone(), false); 61 | 62 | if let Some(logourl) = modalresponse.logo { 63 | embed = embed.thumbnail(logourl); 64 | } 65 | let guildbuttonid = format!("guildbutton-{}", ctx.id()); 66 | let guildbutton = CreateButton::new(guildbuttonid.clone()) 67 | .label("Add token in this server") 68 | .style(serenity::all::ButtonStyle::Primary); 69 | let globalbuttonid = format!("globalbutton-{}", ctx.id()); 70 | let globalbutton = CreateButton::new(globalbuttonid.clone()) 71 | .label("Add token in all servers") 72 | .style(serenity::all::ButtonStyle::Danger); 73 | let actionrow = CreateActionRow::Buttons(vec![guildbutton.clone(), globalbutton.clone()]); 74 | let reply = CreateReply::default() 75 | .embed(embed) 76 | .components(vec![actionrow]) 77 | .ephemeral(true); 78 | let replyhandle = ctx.send(reply.clone()).await?; 79 | 80 | let message = match replyhandle.clone().into_message().await { 81 | Ok(message) => message, 82 | Err(_) => { 83 | replyhandle 84 | .edit( 85 | ctx, 86 | reply.components(vec![CreateActionRow::Buttons(vec![ 87 | guildbutton, 88 | globalbutton, 89 | ])]), 90 | ) 91 | .await?; 92 | return Ok(()); 93 | } 94 | }; 95 | match message 96 | .await_component_interaction(&ctx.serenity_context().shard) 97 | .timeout(std::time::Duration::from_secs(60 * 2)) 98 | .author_id(ctx.author().id) 99 | .custom_ids(vec![guildbuttonid.clone(), globalbuttonid.clone()]) 100 | .await 101 | { 102 | Some(val) => { 103 | if !globaltokenpermission && val.data.custom_id.eq(&globalbuttonid) { 104 | ctx.send( 105 | CreateReply::default() 106 | .content("This guild does not have the permission to set coins globally"), 107 | ) 108 | .await?; 109 | return Ok(()); 110 | } 111 | 112 | let _: Option = DB 113 | .create(("Coins", basetoken.symbol.clone())) 114 | .content(Coins { 115 | name: basetoken.symbol, 116 | address: basetoken.address, 117 | guildid, 118 | global: val.data.custom_id.eq(&globalbuttonid), 119 | }) 120 | .await?; 121 | message.delete(ctx).await?; 122 | } 123 | None => { 124 | replyhandle 125 | .edit( 126 | ctx, 127 | reply.components(vec![CreateActionRow::Buttons(vec![ 128 | guildbutton.disabled(true), 129 | globalbutton.disabled(true), 130 | ])]), 131 | ) 132 | .await?; 133 | return Ok(()); 134 | } 135 | } 136 | 137 | Ok(()) 138 | } 139 | 140 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 141 | #[serde(rename_all = "camelCase")] 142 | pub struct Root { 143 | pub schema_version: String, 144 | pub pairs: Vec, 145 | } 146 | 147 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 148 | #[serde(rename_all = "camelCase")] 149 | pub struct Pair { 150 | pub url: String, 151 | pub base_token: BaseToken, 152 | } 153 | 154 | #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] 155 | #[serde(rename_all = "camelCase")] 156 | pub struct BaseToken { 157 | pub address: String, 158 | pub name: String, 159 | pub symbol: String, 160 | } 161 | -------------------------------------------------------------------------------- /src/settings/settings.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | #![allow(clippy::module_name_repetitions)] 3 | use crate::settings::commonfunctions::{admincheck, getguildid, ownercheck}; 4 | use crate::settings::dbstructs::AvailableSettings; 5 | use crate::{Context, Error, DB}; 6 | use poise::serenity_prelude::{ 7 | CreateMessage, CreateSelectMenu, CreateSelectMenuKind, CreateSelectMenuOption, 8 | }; 9 | use poise::CreateReply; 10 | 11 | /// Change settings depending on your server 12 | // 13 | // 1. Check for Admins or Owners 14 | // 2. Get the GuildId, which is used to get the settings set for a guild 15 | // 3. Retrieve the available commands for a GuildId and put them in a vec, or fall back to default 16 | // 4. Open a context menu with the available settings menu 17 | // 5. Delete context menu and start that setting 18 | #[allow(clippy::too_many_lines)] 19 | #[poise::command(slash_command)] 20 | pub async fn settings(ctx: Context<'_>) -> Result<(), Error> { 21 | let admincheck = admincheck(ctx, None).await?; 22 | let ownercheck = ownercheck(ctx, None).await?; 23 | 24 | // Check if the author is the bot owner or an admin of that server. 25 | if !admincheck && !ownercheck { 26 | ctx.send( 27 | CreateReply::default() 28 | .content( 29 | "Sorry, you are not allowed to use this command. 30 | \nOnly administrators and bot owners are.", 31 | ) 32 | .ephemeral(true), 33 | ) 34 | .await?; 35 | 36 | return Ok(()); 37 | }; 38 | ctx.send( 39 | CreateReply::default() 40 | .content("Opening settings menu") 41 | .ephemeral(true), 42 | ) 43 | .await?; 44 | 45 | let guildid = getguildid(ctx).await?; 46 | 47 | let dbcommandpermissions: Option = DB 48 | .select(("availablesettings", guildid.to_string())) 49 | .await?; 50 | let mut commandpermissions: AvailableSettings = match dbcommandpermissions { 51 | Some(permissions) => permissions, 52 | None => AvailableSettings { 53 | availablecommands: true, 54 | owneravailablecommands: false, 55 | tokenpricetracking: true, 56 | globaltokens: false, 57 | }, 58 | }; 59 | if ownercheck { 60 | commandpermissions = AvailableSettings { 61 | availablecommands: true, 62 | owneravailablecommands: true, 63 | tokenpricetracking: true, 64 | globaltokens: true, 65 | } 66 | }; 67 | 68 | let mut selectmenuvec = vec![]; 69 | 70 | if commandpermissions.availablecommands { 71 | selectmenuvec.push(CreateSelectMenuOption::new( 72 | "Activate or deactivate available slash commands", 73 | "availablecommands", 74 | )); 75 | } 76 | if commandpermissions.tokenpricetracking { 77 | selectmenuvec.push(CreateSelectMenuOption::new( 78 | "Add a token of which the price can be fetched", 79 | "tokenpricetracking", 80 | )); 81 | } 82 | if commandpermissions.owneravailablecommands { 83 | selectmenuvec.push(CreateSelectMenuOption::new( 84 | "(De)Activate commands available to turn on for guilds", 85 | "owneravailablecommands", 86 | )); 87 | } 88 | if commandpermissions.owneravailablecommands { 89 | selectmenuvec.push(CreateSelectMenuOption::new( 90 | "Change the permissions a user has", 91 | "permissionsettings", 92 | )); 93 | } 94 | 95 | let customid = format!("SettingsMenu{}", ctx.id()); 96 | let message = ctx 97 | .channel_id() 98 | .send_message( 99 | ctx, 100 | CreateMessage::new() 101 | .content("Please click the setting you want to change") 102 | .select_menu( 103 | CreateSelectMenu::new( 104 | "settings_menu", 105 | CreateSelectMenuKind::String { 106 | options: selectmenuvec, 107 | }, 108 | ) 109 | .custom_id(customid.clone()) 110 | .max_values(1) 111 | .placeholder("No Setting chosen"), 112 | ), 113 | ) 114 | .await?; 115 | let interaction = match message 116 | .await_component_interaction(&ctx.serenity_context().shard) 117 | .timeout(std::time::Duration::from_secs(60 * 3)) 118 | .author_id(ctx.author().id) 119 | .custom_ids(vec![customid]) 120 | .await 121 | { 122 | Some(x) => x, 123 | None => { 124 | message.reply(&ctx, "Timed out").await?; 125 | return Ok(()); 126 | } 127 | }; 128 | 129 | message.delete(ctx).await?; 130 | 131 | let interactionvalue = match &interaction.data.kind { 132 | poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { values } => { 133 | &values[0] 134 | } 135 | _ => panic!("unexpected interaction data kind"), 136 | }; 137 | 138 | match interactionvalue.as_str() { 139 | "availablecommands" => { 140 | crate::settings::commandselection::ownercheckcommandselection(ctx).await?; 141 | } 142 | "owneravailablecommands" => { 143 | crate::settings::owneravailablecommands::ownercheckavailablecommands(ctx).await?; 144 | } 145 | "tokenpricetracking" => { 146 | crate::commands::addtoken::addtoken( 147 | ctx, 148 | interaction, 149 | guildid, 150 | commandpermissions.globaltokens, 151 | ) 152 | .await?; 153 | } 154 | "permissionsettings" => { 155 | crate::settings::permissionsettings::permissionsettings(ctx).await?; 156 | } 157 | _ => { 158 | return Err(format!( 159 | "There is no implementation available for this setting: {interactionvalue}." 160 | ) 161 | .into()) 162 | } 163 | } 164 | Ok(()) 165 | } 166 | -------------------------------------------------------------------------------- /src/settings/owneravailablecommands.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | use crate::{Context, Error, DB}; 3 | use poise::serenity_prelude::{ 4 | CreateEmbed, CreateMessage, CreateSelectMenu, CreateSelectMenuKind, CreateSelectMenuOption, 5 | }; 6 | use poise::CreateReply; 7 | use serde::{Deserialize, Serialize}; 8 | use serenity::all::GuildId; 9 | 10 | use super::commonfunctions::ownercheck; 11 | 12 | /// Check if the owner invokes this command as he can make slash commands available for guilds 13 | pub async fn ownercheckavailablecommands(ctx: Context<'_>) -> Result<(), Error> { 14 | if !ownercheck(ctx, Some("You are not the bot owner!")).await? { 15 | return Ok(()); 16 | } 17 | let guildtobechanged = guildselectmenu(ctx).await?; 18 | 19 | availablecommandselection(ctx, guildtobechanged).await?; 20 | 21 | Ok(()) 22 | } 23 | 24 | #[derive(Debug, Serialize, Deserialize)] 25 | pub struct AvailableSlashcommands { 26 | availableslashcommands: Vec, 27 | guildid: GuildId, 28 | } 29 | 30 | /// Set commands to be available in a guild to turn on or off. Only available for owners. 31 | async fn availablecommandselection(ctx: Context<'_>, guildid: GuildId) -> Result<(), Error> { 32 | // Check which commands are available in a guild to be turned on 33 | let availablecommands = 34 | crate::settings::commandselection::getguildavailablecommands(guildid).await?; 35 | 36 | // Get all the commands available in the bot. 37 | let commandsinframework = &ctx.framework().options().commands; 38 | 39 | let mut selectmenuvec = vec![]; 40 | for command in commandsinframework { 41 | let name = &command.identifying_name; 42 | selectmenuvec.push( 43 | CreateSelectMenuOption::new(name, name) 44 | .default_selection(availablecommands.contains(name)), 45 | ); 46 | } 47 | let customid = format!("availablecommandsmenu{}", ctx.id()); 48 | 49 | let selectmenuveclength = if selectmenuvec.len() <= 25 { 50 | u8::try_from(selectmenuvec.len()).unwrap_or(25) 51 | } else { 52 | ctx.send( 53 | CreateReply::new() 54 | .content("Only showing the first 25 commands") 55 | .ephemeral(true), 56 | ) 57 | .await?; 58 | 25 59 | }; 60 | 61 | let message = ctx 62 | .channel_id() 63 | .send_message( 64 | ctx, 65 | CreateMessage::new() 66 | .content("Select the commands that should be available") 67 | .select_menu( 68 | CreateSelectMenu::new( 69 | customid.clone(), 70 | CreateSelectMenuKind::String { 71 | options: selectmenuvec.clone(), 72 | }, 73 | ) 74 | .min_values(0) 75 | .max_values(selectmenuveclength) 76 | .placeholder("No commands chosen"), 77 | ), 78 | ) 79 | .await?; 80 | let Some(interaction) = message 81 | .await_component_interaction(&ctx.serenity_context().shard) 82 | .timeout(std::time::Duration::from_secs(60 * 3)) 83 | .author_id(ctx.author().id) 84 | .custom_ids(vec![customid]) 85 | .await 86 | else { 87 | message.delete(&ctx).await?; 88 | ctx.send( 89 | CreateReply::new() 90 | .content("Command settings timed ou:/") 91 | .ephemeral(true), 92 | ) 93 | .await?; 94 | return Ok(()); 95 | }; 96 | 97 | message.delete(ctx).await?; 98 | 99 | let poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { 100 | values: interactionvalue, 101 | } = &interaction.data.kind 102 | else { 103 | panic!("unexpected interaction data kind") 104 | }; 105 | 106 | let mut commandstobesetavailable = vec![]; 107 | for commands in commandsinframework { 108 | if interactionvalue.contains(&commands.identifying_name) { 109 | commandstobesetavailable.push(commands.identifying_name.clone()); 110 | } 111 | } 112 | 113 | let optionavailableslashcommands: Option = DB 114 | .update(("availableslashcommands", guildid.to_string())) 115 | .content({ 116 | AvailableSlashcommands { 117 | availableslashcommands: commandstobesetavailable, 118 | guildid, 119 | } 120 | }) 121 | .await?; 122 | 123 | // Create a vec of embed fields that contains each registered command in current guild 124 | let mut commandsforembed: Vec<(String, String, bool)> = vec![]; 125 | 126 | if let Some(dbavailableslashcommands) = optionavailableslashcommands { 127 | for command in dbavailableslashcommands.availableslashcommands { 128 | commandsforembed.push((command, String::new(), false)); 129 | } 130 | } 131 | let embed = CreateEmbed::new() 132 | .fields(commandsforembed) 133 | .description(format!( 134 | "The following commands are available in {:#?}:", 135 | guildid.name(ctx).unwrap_or("Unknown".to_string()) 136 | )); 137 | ctx.send(CreateReply::default().embed(embed).ephemeral(true)) 138 | .await?; 139 | 140 | Ok(()) 141 | } 142 | 143 | /// Create a select menu including all guilds. 144 | /// The user can choose one guild of which the guildid is returned. 145 | pub async fn guildselectmenu(ctx: Context<'_>) -> Result { 146 | let guilds = match ctx.http().get_guilds(None, None).await { 147 | Ok(guildsfetch) => guildsfetch, 148 | Err(errorguildsfetch) => { 149 | return Err( 150 | format!("The bot was not able to get the guilds: {errorguildsfetch}").into(), 151 | ) 152 | } 153 | }; 154 | let mut vecofguildmenu = vec![]; 155 | for guild in guilds { 156 | vecofguildmenu.push(CreateSelectMenuOption::new( 157 | guild.name, 158 | guild.id.to_string(), 159 | )); 160 | } 161 | 162 | let customid = format!("guildmenu{}", ctx.id()); 163 | let message = ctx 164 | .channel_id() 165 | .send_message( 166 | ctx, 167 | CreateMessage::new() 168 | .content("Please click the guild you want to change") 169 | .select_menu( 170 | CreateSelectMenu::new( 171 | customid.clone(), 172 | CreateSelectMenuKind::String { 173 | options: vecofguildmenu, 174 | }, 175 | ) 176 | .max_values(1) 177 | .placeholder("No guild chosen"), 178 | ), 179 | ) 180 | .await?; 181 | let Some(interaction) = message 182 | .await_component_interaction(&ctx.serenity_context().shard) 183 | .timeout(std::time::Duration::from_secs(60 * 3)) 184 | .author_id(ctx.author().id) 185 | .custom_ids(vec![customid]) 186 | .await 187 | else { 188 | message.delete(&ctx).await?; 189 | ctx.send( 190 | CreateReply::new() 191 | .content("Command settings timed out:/") 192 | .ephemeral(true), 193 | ) 194 | .await?; 195 | return Err("Command settings timed out:/".into()); 196 | }; 197 | 198 | message.delete(ctx).await?; 199 | 200 | let interactionvalue = match &interaction.data.kind { 201 | poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { values } => { 202 | &values[0] 203 | } 204 | _ => panic!("unexpected interaction data kind"), 205 | }; 206 | 207 | let guildtobechanged = GuildId::new(interactionvalue.parse::()?); 208 | Ok(guildtobechanged) 209 | } 210 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![deny( 2 | clippy::all, 3 | clippy::pedantic, 4 | clippy::unwrap_used, 5 | clippy::expect_used 6 | )] 7 | #![allow( 8 | clippy::single_match_else, 9 | clippy::manual_let_else, 10 | clippy::module_inception 11 | )] 12 | use macro_env::envseeker; 13 | 14 | use poise::serenity_prelude as serenity; 15 | use poise::serenity_prelude::CacheHttp; 16 | 17 | use serenity::builder::CreateCommand; 18 | 19 | mod commands; 20 | #[cfg(feature = "database")] 21 | mod settings; 22 | 23 | type Error = Box; 24 | type Context<'a> = poise::Context<'a, Data, Error>; 25 | 26 | // Custom user data passed to all command functions 27 | #[derive(Debug, Clone)] 28 | pub struct Data {} 29 | 30 | #[cfg(feature = "database")] 31 | use crate::settings::dbstructs::GuildCommands; 32 | #[cfg(feature = "database")] 33 | use ::{ 34 | once_cell::sync::Lazy, surrealdb::engine::any, surrealdb::engine::remote::ws::Wss, 35 | surrealdb::Surreal, 36 | }; 37 | 38 | #[cfg(feature = "database")] 39 | static DB: Lazy> = Lazy::new(Surreal::init); 40 | 41 | /// Register the specific commands for every guild. 42 | /// The default is registering all commands. 43 | /// Server admins can turn off which commands should be visible. 44 | /// Bot owners can turn off which commands are available in a server. 45 | async fn on_ready( 46 | ctx: &serenity::prelude::Context, 47 | _ready: &serenity::Ready, 48 | framework: &poise::Framework, 49 | ) -> Result<(), Error> { 50 | // Get all available commands in framework 51 | let commandsinframework = &framework.options().commands; 52 | let commandnamesinframework: Vec = commandsinframework 53 | .iter() 54 | .map(|x| x.identifying_name.clone()) 55 | .collect(); 56 | 57 | let guilds = ctx.http().get_guilds(None, None).await?; 58 | println!("The bot is in these guilds:\n{guilds:#?}"); 59 | 60 | // Go over all guilds to register the commands in all of them 61 | for guild in guilds { 62 | // If database is turned on, check database if the guild has specific commands available, otherwise make all commands available. 63 | if cfg!(feature = "database") { 64 | // We get the saved commands for each guild by fetching them from the database, and push them into a vec of GuildCommands 65 | #[cfg(feature = "database")] 66 | { 67 | let guildspecificcommands: Option = 68 | DB.select(("guildcommands", guild.id.to_string())).await?; 69 | let commandstoturnon = match guildspecificcommands { 70 | Some(com) => com.commands, 71 | None => commandnamesinframework.clone(), 72 | }; 73 | let commandregistery = specificcommandfinder(commandstoturnon, commandsinframework); 74 | // Register commands for this guild 75 | let commandsubmitting = guild.id.set_commands(ctx, commandregistery).await; 76 | println!("Submitting commands:\n{commandsubmitting:#?}"); 77 | } 78 | } else { 79 | let commandregistery = 80 | specificcommandfinder(commandnamesinframework.clone(), commandsinframework); 81 | // Register commands for this guild 82 | let commandsubmitting = guild.id.set_commands(ctx, commandregistery).await; 83 | println!("Submitting commands:\n{commandsubmitting:#?}"); 84 | }; 85 | } 86 | 87 | Ok(()) 88 | } 89 | 90 | #[allow(clippy::needless_pass_by_value)] //Clippy doesn't like the Vec for commands in database, but this is needed with SurrealDB 91 | /// Match saved value with commands available, and return this in a vector of commands. 92 | fn specificcommandfinder( 93 | commandsindatabase: Vec, 94 | commandsinframework: &Vec>>, 95 | ) -> Vec { 96 | let mut guildspecificcommands: Vec = vec![]; 97 | 'commandloop: for frameworkcommand in commandsinframework { 98 | let name = &frameworkcommand.identifying_name; 99 | if commandsindatabase.contains(name) { 100 | guildspecificcommands.push(match frameworkcommand.create_as_slash_command() { 101 | Some(command) => command, 102 | None => { 103 | println!("{name} could not be created as slash command"); 104 | continue 'commandloop; 105 | } 106 | }); 107 | } 108 | } 109 | guildspecificcommands 110 | } 111 | 112 | #[tokio::main] 113 | async fn main() { 114 | #[cfg(all(feature = "memdatabase", feature = "filedatabase"))] 115 | compile_error!("Choose one of the features [memdatabase or filedatabase]. Can not determine which one to use when both are supplied."); 116 | 117 | #[cfg(feature = "database")] 118 | createdatabase().await; 119 | 120 | println!("Starting bot"); 121 | // Set GUILDS to be an intent as we require it for having custom commands 122 | let intents = serenity::GatewayIntents::GUILDS; 123 | 124 | let framework = poise::Framework::builder() 125 | .options(poise::FrameworkOptions { 126 | commands: vec![ 127 | #[cfg(feature = "database")] 128 | settings::settings::settings(), 129 | #[cfg(feature = "database")] 130 | commands::price::price(), 131 | #[cfg(not(feature = "database"))] 132 | commands::pricewithoutdb::price(), 133 | ], 134 | ..Default::default() 135 | }) 136 | .setup( 137 | move |ctx: &::serenity::prelude::Context, ready, framework| { 138 | Box::pin(async move { 139 | println!("Logged in as {}", ready.user.name); 140 | 141 | let _ = on_ready(ctx, ready, framework).await; 142 | println!("The bot is done getting ready"); 143 | 144 | Ok(Data {}) 145 | }) 146 | }, 147 | ) 148 | .build(); 149 | let mut client = match serenity::ClientBuilder::new( 150 | // envseeker will try to find the variable in .env, then in system variables and finally will ask you for it if it doesn't find any. 151 | envseeker(macro_env::SearchType::All, "DEXSCREENER_BOT"), 152 | intents, 153 | ) 154 | .framework(framework) 155 | .await 156 | { 157 | Ok(client) => client, 158 | Err(clientcreationerror) => { 159 | println!("Couldn't create the Discord bot client:\n{clientcreationerror}"); 160 | return; 161 | } 162 | }; 163 | 164 | // Start client, show error if it fails. 165 | if let Err(why) = client.start().await { 166 | println!("Client error: {why:?}"); 167 | } 168 | } 169 | 170 | #[cfg(feature = "database")] 171 | async fn createdatabase() { 172 | println!("Creating database"); 173 | connectdatabase().await; 174 | match DB.use_ns("dexscreener").use_db("dexscreenerdb").await { 175 | Ok(val) => val, 176 | Err(dberror) => panic!("failed to use namespace or datebase: {dberror}"), 177 | }; 178 | } 179 | 180 | cfg_if::cfg_if! { 181 | if #[cfg(feature = "memdatabase")] { 182 | async fn connectdatabase() { match DB.connect("mem://").await { 183 | Ok(val) => val, 184 | Err(dbconnecterror) => panic!("failed to connect to database: {dbconnecterror}"), 185 | }; 186 | println!("Created an in memory database"); 187 | } 188 | } else if #[cfg(feature = "filedatabase")] { 189 | async fn connectdatabase() { match DB.connect("file://dexscreener.db").await { 190 | Ok(val) => val, 191 | Err(dbconnecterror) => panic!("failed to connect to database: {dbconnecterror}"), 192 | }; 193 | println!("Created a file database"); } 194 | } else if #[cfg(feature = "database")]{ 195 | 196 | async fn connectdatabase() { 197 | let remoteaddress = match std::env::var("SURREAL_BIND") { 198 | Ok(val) => {if !val.starts_with(|x :char| x.is_ascii_digit()) {val} else { 199 | format!("ws://{val}") 200 | }}, 201 | Err(_) => "ws://localhost:8000".to_string() 202 | }; 203 | println!("Connecting to a database on address: {remoteaddress}"); 204 | match DB.connect(remoteaddress).await { 205 | Ok(val) => val, 206 | Err(dbconnecterror) => panic!("failed to connect to database: {dbconnecterror}"), 207 | }; 208 | println!("Created a remote database"); 209 | } 210 | } 211 | } 212 | -------------------------------------------------------------------------------- /src/settings/commandselection.rs: -------------------------------------------------------------------------------- 1 | #![cfg(feature = "database")] 2 | use crate::{ 3 | settings::dbstructs::{AvailableSlashcommands, GuildCommands}, 4 | Context, Error, DB, 5 | }; 6 | use poise::serenity_prelude::{ 7 | CreateEmbed, CreateMessage, CreateSelectMenu, CreateSelectMenuKind, CreateSelectMenuOption, 8 | }; 9 | use poise::CreateReply; 10 | use serenity::all::GuildId; 11 | 12 | use super::commonfunctions::ownercheck; 13 | 14 | /// Check if the owner invokes this command as he can turn on slash commands across guilds 15 | /// After this go to guildstobechanged 16 | pub async fn ownercheckcommandselection(ctx: Context<'_>) -> Result<(), Error> { 17 | // If you are not bot owner continue like normal in your current guild 18 | let ownercheck = ownercheck(ctx, None).await?; 19 | if !ownercheck { 20 | let guildid = match ctx.guild_id() { 21 | Some(guildid) => guildid, 22 | None => { 23 | ctx.send( 24 | CreateReply::new() 25 | .content("It looks you are not in a server") 26 | .ephemeral(true), 27 | ) 28 | .await?; 29 | return Ok(()); 30 | } 31 | }; 32 | // Invoke command selection if you are not the owner 33 | commandselection(ctx, guildid).await?; 34 | // Return the function as completed 35 | return Ok(()); 36 | } 37 | // From here on it continues only for owners 38 | let guilds = ctx.http().get_guilds(None, None).await?; 39 | let mut vecofguildmenu = vec![]; 40 | for guild in guilds { 41 | vecofguildmenu.push(CreateSelectMenuOption::new( 42 | guild.name, 43 | guild.id.to_string(), 44 | )); 45 | } 46 | 47 | let customid = format!("guildmenu{}", ctx.id()); 48 | let message = ctx 49 | .channel_id() 50 | .send_message( 51 | ctx, 52 | CreateMessage::new() 53 | .content("Please click the guild you want to change") 54 | .select_menu( 55 | CreateSelectMenu::new( 56 | customid.clone(), 57 | CreateSelectMenuKind::String { 58 | options: vecofguildmenu, 59 | }, 60 | ) 61 | .max_values(1) 62 | .placeholder("No guild chosen"), 63 | ), 64 | ) 65 | .await?; 66 | let interaction = match message 67 | .await_component_interaction(&ctx.serenity_context().shard) 68 | .timeout(std::time::Duration::from_secs(60 * 3)) 69 | .author_id(ctx.author().id) 70 | .custom_ids(vec![customid]) 71 | .await 72 | { 73 | Some(x) => x, 74 | None => { 75 | message.delete(&ctx).await?; 76 | ctx.send( 77 | CreateReply::new() 78 | .content("Command settings timed ou:/") 79 | .ephemeral(true), 80 | ) 81 | .await?; 82 | return Ok(()); 83 | } 84 | }; 85 | 86 | message.delete(ctx).await?; 87 | 88 | let interactionvalue = match &interaction.data.kind { 89 | poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { values } => { 90 | &values[0] 91 | } 92 | _ => panic!("unexpected interaction data kind"), 93 | }; 94 | 95 | let guildtobechanged = GuildId::new(interactionvalue.parse::()?); 96 | 97 | // Invoke commandselection if you are the owner 98 | commandselection(ctx, guildtobechanged).await?; 99 | 100 | Ok(()) 101 | } 102 | 103 | /// Check which commands are available in a guild to be turned on 104 | /// If there is no database record, return watch and help 105 | pub async fn getguildavailablecommands(guildid: GuildId) -> Result, Error> { 106 | let optionavailableslashcommands: Option = DB 107 | .select(("availableslashcommands", guildid.to_string())) 108 | .await?; 109 | let availablecommands: Vec = match optionavailableslashcommands { 110 | Some(commands) => commands.availableslashcommands, 111 | None => vec!["watch".to_string(), "help".to_string()], 112 | }; 113 | Ok(availablecommands) 114 | } 115 | 116 | /// Adjust the availability of slash commands 117 | /* 118 | 1. Get list of already active commands in guild 119 | 2. Get list of available commands in guild, if there is no record, only watch and help are available 120 | 3. Go over all commands in the bot and check if guild may use them. If so, put them as available in a selectmenu. 121 | */ 122 | #[allow(clippy::too_many_lines)] 123 | async fn commandselection(ctx: Context<'_>, guildid: GuildId) -> Result<(), Error> { 124 | // Get the commands that are already active in the guild, these are preselected. 125 | let predefinedslashcommands: Vec = match guildid.get_commands(ctx.http()).await { 126 | Ok(getcommands) => getcommands.iter().map(|com| com.name.clone()).collect(), 127 | Err(_) => vec![], 128 | }; 129 | let customid = format!("CommandMenu{}", ctx.id()); 130 | 131 | // Check which commands are available in a guild to be turned on 132 | let availablecommands = getguildavailablecommands(guildid).await?; 133 | // Get all the commands available in the bot. 134 | let commandsinframework = &ctx.framework().options().commands; 135 | 136 | // Loop over all available commands in framework. 137 | // If they are also available in this specific guild, make them a selectmenuoption 138 | // Settings are specifically excluded here as they should always be global, and not guild specific 139 | let mut selectmenuvec = vec![]; 140 | for command in commandsinframework { 141 | if command.identifying_name != "settings" 142 | && availablecommands.contains(&command.identifying_name) 143 | { 144 | let selectmenuoption = CreateSelectMenuOption::new( 145 | command 146 | .description 147 | .clone() 148 | .unwrap_or(command.identifying_name.clone()), 149 | command.identifying_name.clone(), 150 | ) 151 | .default_selection(predefinedslashcommands.contains(&command.name)); 152 | selectmenuvec.push(selectmenuoption); 153 | } 154 | } 155 | // If the number is bigger than u8, set 25 as that is the Discord limit. Also check if the u8 if bigger than 25. 156 | let veclen = match u8::try_from(selectmenuvec.len()) { 157 | Ok(number) => { 158 | if number >= 25 { 159 | 25 160 | } else { 161 | number 162 | } 163 | } 164 | Err(_) => 25, 165 | }; 166 | let message = ctx 167 | .channel_id() 168 | .send_message( 169 | ctx, 170 | CreateMessage::new() 171 | .content("Please select the commands that you want to be available") 172 | .select_menu( 173 | CreateSelectMenu::new( 174 | customid.clone(), 175 | CreateSelectMenuKind::String { 176 | options: selectmenuvec.clone(), 177 | }, 178 | ) 179 | .placeholder("No Setting selected") 180 | .min_values(0) 181 | .max_values(veclen), 182 | ), 183 | ) 184 | .await?; 185 | 186 | let interaction = match message 187 | .await_component_interaction(&ctx.serenity_context().shard) 188 | .timeout(std::time::Duration::from_secs(60 * 5)) 189 | .author_id(ctx.author().id) 190 | .custom_ids(vec![customid]) 191 | .await 192 | { 193 | Some(x) => x, 194 | None => { 195 | message.delete(&ctx).await?; 196 | ctx.send( 197 | CreateReply::new() 198 | .content("Command settings timed ou:/") 199 | .ephemeral(true), 200 | ) 201 | .await?; 202 | return Ok(()); 203 | } 204 | }; 205 | 206 | message.delete(ctx).await?; 207 | 208 | let interactionvalue = match &interaction.data.kind { 209 | poise::serenity_prelude::ComponentInteractionDataKind::StringSelect { values } => values, 210 | _ => panic!("unexpected interaction data kind"), 211 | }; 212 | 213 | // Vec of commands that will be registered later on 214 | let mut guildspecificcommands: Vec = vec![]; 215 | // Vec of commands that is saved to the database for later use 216 | let mut dbcommands = vec![]; 217 | 218 | 'commandloop: for frameworkcommand in commandsinframework { 219 | let name = &frameworkcommand.identifying_name; 220 | if interactionvalue.contains(name) || name == "settings" { 221 | dbcommands.push(name.clone()); 222 | 223 | guildspecificcommands.push(match frameworkcommand.create_as_slash_command() { 224 | Some(command) => command, 225 | None => { 226 | println!("{name:#?} could not be created as slash command"); 227 | continue 'commandloop; 228 | } 229 | }); 230 | } 231 | } 232 | let guildid = match ctx.guild_id() { 233 | Some(guildid) => guildid, 234 | None => { 235 | ctx.send( 236 | CreateReply::new() 237 | .content("It looks you are not in a server") 238 | .ephemeral(true), 239 | ) 240 | .await?; 241 | return Ok(()); 242 | } 243 | }; 244 | // Store the commands in the database / update the stored commands in the database 245 | let _: Option = DB 246 | .update(("guildcommands", guildid.to_string())) 247 | .content(GuildCommands { 248 | guildid, 249 | commands: dbcommands, 250 | }) 251 | .await?; 252 | 253 | let submittedcommands = match guildid.set_commands(ctx, guildspecificcommands).await { 254 | Ok(val) => val, 255 | Err(_) => { 256 | ctx.send( 257 | CreateReply::new() 258 | .content("Something went wrong while registering commands, please try again.\nIf it still doens't work, please contact us!") 259 | .ephemeral(true), 260 | ) 261 | .await?; 262 | return Ok(()); 263 | } 264 | }; 265 | 266 | // Create a vec of embed fields that contains each registered command in current guild 267 | let mut commandsforembed: Vec<(String, String, bool)> = vec![]; 268 | for command in submittedcommands { 269 | commandsforembed.push((command.name, command.description, false)); 270 | } 271 | 272 | // Send this embed 273 | let embed = CreateEmbed::new() 274 | .fields(commandsforembed) 275 | .description("The following commands are available in your guild:"); 276 | ctx.send(CreateReply::default().embed(embed).ephemeral(true)) 277 | .await?; 278 | 279 | Ok(()) 280 | } 281 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr" 7 | version = "0.15.6" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "a93b8a41dbe230ad5087cc721f8d41611de654542180586b315d9f4cf6b72bef" 10 | dependencies = [ 11 | "psl-types", 12 | ] 13 | 14 | [[package]] 15 | name = "addr2line" 16 | version = "0.22.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" 19 | dependencies = [ 20 | "gimli", 21 | ] 22 | 23 | [[package]] 24 | name = "adler" 25 | version = "1.0.2" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 28 | 29 | [[package]] 30 | name = "ahash" 31 | version = "0.7.8" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" 34 | dependencies = [ 35 | "getrandom", 36 | "once_cell", 37 | "version_check", 38 | ] 39 | 40 | [[package]] 41 | name = "ahash" 42 | version = "0.8.11" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 45 | dependencies = [ 46 | "cfg-if", 47 | "getrandom", 48 | "once_cell", 49 | "version_check", 50 | "zerocopy", 51 | ] 52 | 53 | [[package]] 54 | name = "aho-corasick" 55 | version = "1.1.3" 56 | source = "registry+https://github.com/rust-lang/crates.io-index" 57 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 58 | dependencies = [ 59 | "memchr", 60 | ] 61 | 62 | [[package]] 63 | name = "allocator-api2" 64 | version = "0.2.18" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 67 | 68 | [[package]] 69 | name = "alloy-primitives" 70 | version = "0.7.7" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" 73 | dependencies = [ 74 | "alloy-rlp", 75 | "bytes", 76 | "cfg-if", 77 | "const-hex", 78 | "derive_more", 79 | "hex-literal", 80 | "itoa", 81 | "k256", 82 | "keccak-asm", 83 | "proptest", 84 | "rand", 85 | "ruint", 86 | "serde", 87 | "tiny-keccak", 88 | ] 89 | 90 | [[package]] 91 | name = "alloy-rlp" 92 | version = "0.3.7" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" 95 | dependencies = [ 96 | "arrayvec", 97 | "bytes", 98 | ] 99 | 100 | [[package]] 101 | name = "android-tzdata" 102 | version = "0.1.1" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 105 | 106 | [[package]] 107 | name = "android_system_properties" 108 | version = "0.1.5" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 111 | dependencies = [ 112 | "libc", 113 | ] 114 | 115 | [[package]] 116 | name = "any_ascii" 117 | version = "0.3.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "ea50b14b7a4b9343f8c627a7a53c52076482bd4bdad0a24fd3ec533ed616cc2c" 120 | 121 | [[package]] 122 | name = "approx" 123 | version = "0.4.0" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278" 126 | dependencies = [ 127 | "num-traits", 128 | ] 129 | 130 | [[package]] 131 | name = "approx" 132 | version = "0.5.1" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 135 | dependencies = [ 136 | "num-traits", 137 | ] 138 | 139 | [[package]] 140 | name = "arbitrary" 141 | version = "1.3.2" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" 144 | 145 | [[package]] 146 | name = "arc-swap" 147 | version = "1.7.1" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 150 | 151 | [[package]] 152 | name = "argon2" 153 | version = "0.5.3" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" 156 | dependencies = [ 157 | "base64ct", 158 | "blake2", 159 | "cpufeatures", 160 | "password-hash", 161 | ] 162 | 163 | [[package]] 164 | name = "ark-ff" 165 | version = "0.3.0" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" 168 | dependencies = [ 169 | "ark-ff-asm 0.3.0", 170 | "ark-ff-macros 0.3.0", 171 | "ark-serialize 0.3.0", 172 | "ark-std 0.3.0", 173 | "derivative", 174 | "num-bigint", 175 | "num-traits", 176 | "paste", 177 | "rustc_version 0.3.3", 178 | "zeroize", 179 | ] 180 | 181 | [[package]] 182 | name = "ark-ff" 183 | version = "0.4.2" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" 186 | dependencies = [ 187 | "ark-ff-asm 0.4.2", 188 | "ark-ff-macros 0.4.2", 189 | "ark-serialize 0.4.2", 190 | "ark-std 0.4.0", 191 | "derivative", 192 | "digest 0.10.7", 193 | "itertools 0.10.5", 194 | "num-bigint", 195 | "num-traits", 196 | "paste", 197 | "rustc_version 0.4.0", 198 | "zeroize", 199 | ] 200 | 201 | [[package]] 202 | name = "ark-ff-asm" 203 | version = "0.3.0" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" 206 | dependencies = [ 207 | "quote", 208 | "syn 1.0.109", 209 | ] 210 | 211 | [[package]] 212 | name = "ark-ff-asm" 213 | version = "0.4.2" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" 216 | dependencies = [ 217 | "quote", 218 | "syn 1.0.109", 219 | ] 220 | 221 | [[package]] 222 | name = "ark-ff-macros" 223 | version = "0.3.0" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" 226 | dependencies = [ 227 | "num-bigint", 228 | "num-traits", 229 | "quote", 230 | "syn 1.0.109", 231 | ] 232 | 233 | [[package]] 234 | name = "ark-ff-macros" 235 | version = "0.4.2" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" 238 | dependencies = [ 239 | "num-bigint", 240 | "num-traits", 241 | "proc-macro2", 242 | "quote", 243 | "syn 1.0.109", 244 | ] 245 | 246 | [[package]] 247 | name = "ark-serialize" 248 | version = "0.3.0" 249 | source = "registry+https://github.com/rust-lang/crates.io-index" 250 | checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" 251 | dependencies = [ 252 | "ark-std 0.3.0", 253 | "digest 0.9.0", 254 | ] 255 | 256 | [[package]] 257 | name = "ark-serialize" 258 | version = "0.4.2" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" 261 | dependencies = [ 262 | "ark-std 0.4.0", 263 | "digest 0.10.7", 264 | "num-bigint", 265 | ] 266 | 267 | [[package]] 268 | name = "ark-std" 269 | version = "0.3.0" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" 272 | dependencies = [ 273 | "num-traits", 274 | "rand", 275 | ] 276 | 277 | [[package]] 278 | name = "ark-std" 279 | version = "0.4.0" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" 282 | dependencies = [ 283 | "num-traits", 284 | "rand", 285 | ] 286 | 287 | [[package]] 288 | name = "arrayvec" 289 | version = "0.7.4" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 292 | dependencies = [ 293 | "serde", 294 | ] 295 | 296 | [[package]] 297 | name = "ascii-canvas" 298 | version = "3.0.0" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" 301 | dependencies = [ 302 | "term", 303 | ] 304 | 305 | [[package]] 306 | name = "async-channel" 307 | version = "1.9.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 310 | dependencies = [ 311 | "concurrent-queue", 312 | "event-listener", 313 | "futures-core", 314 | ] 315 | 316 | [[package]] 317 | name = "async-executor" 318 | version = "1.13.0" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" 321 | dependencies = [ 322 | "async-task", 323 | "concurrent-queue", 324 | "fastrand 2.1.0", 325 | "futures-lite 2.3.0", 326 | "slab", 327 | ] 328 | 329 | [[package]] 330 | name = "async-recursion" 331 | version = "1.1.1" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 334 | dependencies = [ 335 | "proc-macro2", 336 | "quote", 337 | "syn 2.0.71", 338 | ] 339 | 340 | [[package]] 341 | name = "async-task" 342 | version = "4.7.1" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 345 | 346 | [[package]] 347 | name = "async-trait" 348 | version = "0.1.81" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" 351 | dependencies = [ 352 | "proc-macro2", 353 | "quote", 354 | "syn 2.0.71", 355 | ] 356 | 357 | [[package]] 358 | name = "async_io_stream" 359 | version = "0.3.3" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" 362 | dependencies = [ 363 | "futures", 364 | "pharos", 365 | "rustc_version 0.4.0", 366 | ] 367 | 368 | [[package]] 369 | name = "atomic-polyfill" 370 | version = "1.0.3" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 373 | dependencies = [ 374 | "critical-section", 375 | ] 376 | 377 | [[package]] 378 | name = "auto_impl" 379 | version = "1.2.0" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" 382 | dependencies = [ 383 | "proc-macro2", 384 | "quote", 385 | "syn 2.0.71", 386 | ] 387 | 388 | [[package]] 389 | name = "autocfg" 390 | version = "1.3.0" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 393 | 394 | [[package]] 395 | name = "backtrace" 396 | version = "0.3.73" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" 399 | dependencies = [ 400 | "addr2line", 401 | "cc", 402 | "cfg-if", 403 | "libc", 404 | "miniz_oxide", 405 | "object", 406 | "rustc-demangle", 407 | ] 408 | 409 | [[package]] 410 | name = "base16ct" 411 | version = "0.2.0" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 414 | 415 | [[package]] 416 | name = "base64" 417 | version = "0.21.7" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 420 | 421 | [[package]] 422 | name = "base64" 423 | version = "0.22.1" 424 | source = "registry+https://github.com/rust-lang/crates.io-index" 425 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 426 | 427 | [[package]] 428 | name = "base64ct" 429 | version = "1.6.0" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 432 | 433 | [[package]] 434 | name = "bcrypt" 435 | version = "0.15.1" 436 | source = "registry+https://github.com/rust-lang/crates.io-index" 437 | checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7" 438 | dependencies = [ 439 | "base64 0.22.1", 440 | "blowfish", 441 | "getrandom", 442 | "subtle", 443 | "zeroize", 444 | ] 445 | 446 | [[package]] 447 | name = "bincode" 448 | version = "1.3.3" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 451 | dependencies = [ 452 | "serde", 453 | ] 454 | 455 | [[package]] 456 | name = "bindgen" 457 | version = "0.65.1" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" 460 | dependencies = [ 461 | "bitflags 1.3.2", 462 | "cexpr", 463 | "clang-sys", 464 | "lazy_static", 465 | "lazycell", 466 | "peeking_take_while", 467 | "prettyplease", 468 | "proc-macro2", 469 | "quote", 470 | "regex", 471 | "rustc-hash", 472 | "shlex", 473 | "syn 2.0.71", 474 | ] 475 | 476 | [[package]] 477 | name = "bit-set" 478 | version = "0.5.3" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 481 | dependencies = [ 482 | "bit-vec", 483 | ] 484 | 485 | [[package]] 486 | name = "bit-vec" 487 | version = "0.6.3" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 490 | 491 | [[package]] 492 | name = "bitflags" 493 | version = "1.3.2" 494 | source = "registry+https://github.com/rust-lang/crates.io-index" 495 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 496 | 497 | [[package]] 498 | name = "bitflags" 499 | version = "2.6.0" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 502 | 503 | [[package]] 504 | name = "bitmaps" 505 | version = "3.2.1" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" 508 | 509 | [[package]] 510 | name = "bitvec" 511 | version = "1.0.1" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" 514 | dependencies = [ 515 | "funty", 516 | "radium", 517 | "tap", 518 | "wyz", 519 | ] 520 | 521 | [[package]] 522 | name = "blake2" 523 | version = "0.10.6" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 526 | dependencies = [ 527 | "digest 0.10.7", 528 | ] 529 | 530 | [[package]] 531 | name = "block-buffer" 532 | version = "0.10.4" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 535 | dependencies = [ 536 | "generic-array", 537 | ] 538 | 539 | [[package]] 540 | name = "blowfish" 541 | version = "0.9.1" 542 | source = "registry+https://github.com/rust-lang/crates.io-index" 543 | checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" 544 | dependencies = [ 545 | "byteorder", 546 | "cipher", 547 | ] 548 | 549 | [[package]] 550 | name = "borsh" 551 | version = "1.5.1" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" 554 | dependencies = [ 555 | "borsh-derive", 556 | "cfg_aliases", 557 | ] 558 | 559 | [[package]] 560 | name = "borsh-derive" 561 | version = "1.5.1" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" 564 | dependencies = [ 565 | "once_cell", 566 | "proc-macro-crate", 567 | "proc-macro2", 568 | "quote", 569 | "syn 2.0.71", 570 | "syn_derive", 571 | ] 572 | 573 | [[package]] 574 | name = "bumpalo" 575 | version = "3.16.0" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 578 | 579 | [[package]] 580 | name = "byte-slice-cast" 581 | version = "1.2.2" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" 584 | 585 | [[package]] 586 | name = "bytecheck" 587 | version = "0.6.12" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" 590 | dependencies = [ 591 | "bytecheck_derive", 592 | "ptr_meta", 593 | "simdutf8", 594 | ] 595 | 596 | [[package]] 597 | name = "bytecheck_derive" 598 | version = "0.6.12" 599 | source = "registry+https://github.com/rust-lang/crates.io-index" 600 | checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" 601 | dependencies = [ 602 | "proc-macro2", 603 | "quote", 604 | "syn 1.0.109", 605 | ] 606 | 607 | [[package]] 608 | name = "bytecount" 609 | version = "0.6.8" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" 612 | 613 | [[package]] 614 | name = "bytemuck" 615 | version = "1.16.1" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" 618 | 619 | [[package]] 620 | name = "byteorder" 621 | version = "1.5.0" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 624 | 625 | [[package]] 626 | name = "bytes" 627 | version = "1.6.1" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" 630 | 631 | [[package]] 632 | name = "bzip2-sys" 633 | version = "0.1.11+1.0.8" 634 | source = "registry+https://github.com/rust-lang/crates.io-index" 635 | checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" 636 | dependencies = [ 637 | "cc", 638 | "libc", 639 | "pkg-config", 640 | ] 641 | 642 | [[package]] 643 | name = "camino" 644 | version = "1.1.7" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" 647 | dependencies = [ 648 | "serde", 649 | ] 650 | 651 | [[package]] 652 | name = "cargo-platform" 653 | version = "0.1.8" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" 656 | dependencies = [ 657 | "serde", 658 | ] 659 | 660 | [[package]] 661 | name = "cargo_metadata" 662 | version = "0.14.2" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" 665 | dependencies = [ 666 | "camino", 667 | "cargo-platform", 668 | "semver 1.0.23", 669 | "serde", 670 | "serde_json", 671 | ] 672 | 673 | [[package]] 674 | name = "cc" 675 | version = "1.1.6" 676 | source = "registry+https://github.com/rust-lang/crates.io-index" 677 | checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" 678 | dependencies = [ 679 | "jobserver", 680 | "libc", 681 | ] 682 | 683 | [[package]] 684 | name = "cedar-policy" 685 | version = "2.4.2" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "3d91e3b10a0f7f2911774d5e49713c4d25753466f9e11d1cd2ec627f8a2dc857" 688 | dependencies = [ 689 | "cedar-policy-core", 690 | "cedar-policy-validator", 691 | "itertools 0.10.5", 692 | "lalrpop-util", 693 | "ref-cast", 694 | "serde", 695 | "serde_json", 696 | "smol_str", 697 | "thiserror", 698 | ] 699 | 700 | [[package]] 701 | name = "cedar-policy-core" 702 | version = "2.4.2" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "cd2315591c6b7e18f8038f0a0529f254235fd902b6c217aabc04f2459b0d9995" 705 | dependencies = [ 706 | "either", 707 | "ipnet", 708 | "itertools 0.10.5", 709 | "lalrpop", 710 | "lalrpop-util", 711 | "lazy_static", 712 | "miette", 713 | "regex", 714 | "rustc_lexer", 715 | "serde", 716 | "serde_json", 717 | "serde_with", 718 | "smol_str", 719 | "stacker", 720 | "thiserror", 721 | ] 722 | 723 | [[package]] 724 | name = "cedar-policy-validator" 725 | version = "2.4.2" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | checksum = "e756e1b2a5da742ed97e65199ad6d0893e9aa4bd6b34be1de9e70bd1e6adc7df" 728 | dependencies = [ 729 | "cedar-policy-core", 730 | "itertools 0.10.5", 731 | "serde", 732 | "serde_json", 733 | "serde_with", 734 | "smol_str", 735 | "stacker", 736 | "thiserror", 737 | "unicode-security", 738 | ] 739 | 740 | [[package]] 741 | name = "cexpr" 742 | version = "0.6.0" 743 | source = "registry+https://github.com/rust-lang/crates.io-index" 744 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 745 | dependencies = [ 746 | "nom", 747 | ] 748 | 749 | [[package]] 750 | name = "cfg-if" 751 | version = "1.0.0" 752 | source = "registry+https://github.com/rust-lang/crates.io-index" 753 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 754 | 755 | [[package]] 756 | name = "cfg_aliases" 757 | version = "0.2.1" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 760 | 761 | [[package]] 762 | name = "chrono" 763 | version = "0.4.38" 764 | source = "registry+https://github.com/rust-lang/crates.io-index" 765 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 766 | dependencies = [ 767 | "android-tzdata", 768 | "iana-time-zone", 769 | "js-sys", 770 | "num-traits", 771 | "serde", 772 | "wasm-bindgen", 773 | "windows-targets 0.52.6", 774 | ] 775 | 776 | [[package]] 777 | name = "ciborium" 778 | version = "0.2.2" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" 781 | dependencies = [ 782 | "ciborium-io", 783 | "ciborium-ll", 784 | "serde", 785 | ] 786 | 787 | [[package]] 788 | name = "ciborium-io" 789 | version = "0.2.2" 790 | source = "registry+https://github.com/rust-lang/crates.io-index" 791 | checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" 792 | 793 | [[package]] 794 | name = "ciborium-ll" 795 | version = "0.2.2" 796 | source = "registry+https://github.com/rust-lang/crates.io-index" 797 | checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" 798 | dependencies = [ 799 | "ciborium-io", 800 | "half", 801 | ] 802 | 803 | [[package]] 804 | name = "cipher" 805 | version = "0.4.4" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 808 | dependencies = [ 809 | "crypto-common", 810 | "inout", 811 | ] 812 | 813 | [[package]] 814 | name = "clang-sys" 815 | version = "1.8.1" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 818 | dependencies = [ 819 | "glob", 820 | "libc", 821 | "libloading", 822 | ] 823 | 824 | [[package]] 825 | name = "concurrent-queue" 826 | version = "2.5.0" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 829 | dependencies = [ 830 | "crossbeam-utils", 831 | ] 832 | 833 | [[package]] 834 | name = "const-hex" 835 | version = "1.12.0" 836 | source = "registry+https://github.com/rust-lang/crates.io-index" 837 | checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" 838 | dependencies = [ 839 | "cfg-if", 840 | "cpufeatures", 841 | "hex", 842 | "proptest", 843 | "serde", 844 | ] 845 | 846 | [[package]] 847 | name = "const-oid" 848 | version = "0.9.6" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 851 | 852 | [[package]] 853 | name = "convert_case" 854 | version = "0.4.0" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 857 | 858 | [[package]] 859 | name = "core-foundation" 860 | version = "0.9.4" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 863 | dependencies = [ 864 | "core-foundation-sys", 865 | "libc", 866 | ] 867 | 868 | [[package]] 869 | name = "core-foundation-sys" 870 | version = "0.8.6" 871 | source = "registry+https://github.com/rust-lang/crates.io-index" 872 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 873 | 874 | [[package]] 875 | name = "cpufeatures" 876 | version = "0.2.12" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 879 | dependencies = [ 880 | "libc", 881 | ] 882 | 883 | [[package]] 884 | name = "crc32fast" 885 | version = "1.4.2" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 888 | dependencies = [ 889 | "cfg-if", 890 | ] 891 | 892 | [[package]] 893 | name = "critical-section" 894 | version = "1.1.2" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" 897 | 898 | [[package]] 899 | name = "crossbeam-channel" 900 | version = "0.5.13" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" 903 | dependencies = [ 904 | "crossbeam-utils", 905 | ] 906 | 907 | [[package]] 908 | name = "crossbeam-deque" 909 | version = "0.8.5" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 912 | dependencies = [ 913 | "crossbeam-epoch", 914 | "crossbeam-utils", 915 | ] 916 | 917 | [[package]] 918 | name = "crossbeam-epoch" 919 | version = "0.9.18" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 922 | dependencies = [ 923 | "crossbeam-utils", 924 | ] 925 | 926 | [[package]] 927 | name = "crossbeam-utils" 928 | version = "0.8.20" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 931 | 932 | [[package]] 933 | name = "crunchy" 934 | version = "0.2.2" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 937 | 938 | [[package]] 939 | name = "crypto-bigint" 940 | version = "0.5.5" 941 | source = "registry+https://github.com/rust-lang/crates.io-index" 942 | checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 943 | dependencies = [ 944 | "generic-array", 945 | "rand_core", 946 | "subtle", 947 | "zeroize", 948 | ] 949 | 950 | [[package]] 951 | name = "crypto-common" 952 | version = "0.1.6" 953 | source = "registry+https://github.com/rust-lang/crates.io-index" 954 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 955 | dependencies = [ 956 | "generic-array", 957 | "typenum", 958 | ] 959 | 960 | [[package]] 961 | name = "darling" 962 | version = "0.20.10" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" 965 | dependencies = [ 966 | "darling_core", 967 | "darling_macro", 968 | ] 969 | 970 | [[package]] 971 | name = "darling_core" 972 | version = "0.20.10" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" 975 | dependencies = [ 976 | "fnv", 977 | "ident_case", 978 | "proc-macro2", 979 | "quote", 980 | "strsim", 981 | "syn 2.0.71", 982 | ] 983 | 984 | [[package]] 985 | name = "darling_macro" 986 | version = "0.20.10" 987 | source = "registry+https://github.com/rust-lang/crates.io-index" 988 | checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" 989 | dependencies = [ 990 | "darling_core", 991 | "quote", 992 | "syn 2.0.71", 993 | ] 994 | 995 | [[package]] 996 | name = "dashmap" 997 | version = "5.5.3" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 1000 | dependencies = [ 1001 | "cfg-if", 1002 | "hashbrown 0.14.5", 1003 | "lock_api", 1004 | "once_cell", 1005 | "parking_lot_core", 1006 | "serde", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "data-encoding" 1011 | version = "2.6.0" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" 1014 | 1015 | [[package]] 1016 | name = "der" 1017 | version = "0.7.9" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" 1020 | dependencies = [ 1021 | "const-oid", 1022 | "pem-rfc7468", 1023 | "zeroize", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "deranged" 1028 | version = "0.3.11" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 1031 | dependencies = [ 1032 | "powerfmt", 1033 | "serde", 1034 | ] 1035 | 1036 | [[package]] 1037 | name = "derivative" 1038 | version = "2.2.0" 1039 | source = "registry+https://github.com/rust-lang/crates.io-index" 1040 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 1041 | dependencies = [ 1042 | "proc-macro2", 1043 | "quote", 1044 | "syn 1.0.109", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "derive_more" 1049 | version = "0.99.18" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" 1052 | dependencies = [ 1053 | "convert_case", 1054 | "proc-macro2", 1055 | "quote", 1056 | "rustc_version 0.4.0", 1057 | "syn 2.0.71", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "deunicode" 1062 | version = "1.6.0" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" 1065 | 1066 | [[package]] 1067 | name = "dexscreener-pricebot-v2" 1068 | version = "0.5.0" 1069 | dependencies = [ 1070 | "alloy-primitives", 1071 | "cfg-if", 1072 | "futures", 1073 | "macro_env", 1074 | "once_cell", 1075 | "poise", 1076 | "reqwest", 1077 | "serde", 1078 | "serenity", 1079 | "surrealdb", 1080 | "tokio", 1081 | ] 1082 | 1083 | [[package]] 1084 | name = "digest" 1085 | version = "0.9.0" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 1088 | dependencies = [ 1089 | "generic-array", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "digest" 1094 | version = "0.10.7" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1097 | dependencies = [ 1098 | "block-buffer", 1099 | "const-oid", 1100 | "crypto-common", 1101 | "subtle", 1102 | ] 1103 | 1104 | [[package]] 1105 | name = "dirs-next" 1106 | version = "2.0.0" 1107 | source = "registry+https://github.com/rust-lang/crates.io-index" 1108 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 1109 | dependencies = [ 1110 | "cfg-if", 1111 | "dirs-sys-next", 1112 | ] 1113 | 1114 | [[package]] 1115 | name = "dirs-sys-next" 1116 | version = "0.1.2" 1117 | source = "registry+https://github.com/rust-lang/crates.io-index" 1118 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 1119 | dependencies = [ 1120 | "libc", 1121 | "redox_users", 1122 | "winapi", 1123 | ] 1124 | 1125 | [[package]] 1126 | name = "dmp" 1127 | version = "0.2.0" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "bfaa1135a34d26e5cc5b4927a8935af887d4f30a5653a797c33b9a4222beb6d9" 1130 | dependencies = [ 1131 | "urlencoding", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "doc-comment" 1136 | version = "0.3.3" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" 1139 | 1140 | [[package]] 1141 | name = "earcutr" 1142 | version = "0.4.3" 1143 | source = "registry+https://github.com/rust-lang/crates.io-index" 1144 | checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" 1145 | dependencies = [ 1146 | "itertools 0.11.0", 1147 | "num-traits", 1148 | ] 1149 | 1150 | [[package]] 1151 | name = "ecdsa" 1152 | version = "0.16.9" 1153 | source = "registry+https://github.com/rust-lang/crates.io-index" 1154 | checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 1155 | dependencies = [ 1156 | "der", 1157 | "digest 0.10.7", 1158 | "elliptic-curve", 1159 | "rfc6979", 1160 | "signature", 1161 | "spki", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "echodb" 1166 | version = "0.4.0" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "312221c0bb46e82cd250c818404ef9dce769a4d5a62915c0249b577762eec34a" 1169 | dependencies = [ 1170 | "arc-swap", 1171 | "imbl", 1172 | "thiserror", 1173 | "tokio", 1174 | ] 1175 | 1176 | [[package]] 1177 | name = "either" 1178 | version = "1.13.0" 1179 | source = "registry+https://github.com/rust-lang/crates.io-index" 1180 | checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 1181 | 1182 | [[package]] 1183 | name = "elliptic-curve" 1184 | version = "0.13.8" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 1187 | dependencies = [ 1188 | "base16ct", 1189 | "crypto-bigint", 1190 | "digest 0.10.7", 1191 | "ff", 1192 | "generic-array", 1193 | "group", 1194 | "pkcs8", 1195 | "rand_core", 1196 | "sec1", 1197 | "subtle", 1198 | "zeroize", 1199 | ] 1200 | 1201 | [[package]] 1202 | name = "ena" 1203 | version = "0.14.3" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" 1206 | dependencies = [ 1207 | "log", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "encoding_rs" 1212 | version = "0.8.34" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 1215 | dependencies = [ 1216 | "cfg-if", 1217 | ] 1218 | 1219 | [[package]] 1220 | name = "endian-type" 1221 | version = "0.1.2" 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" 1223 | checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" 1224 | 1225 | [[package]] 1226 | name = "equivalent" 1227 | version = "1.0.1" 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" 1229 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1230 | 1231 | [[package]] 1232 | name = "errno" 1233 | version = "0.3.9" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 1236 | dependencies = [ 1237 | "libc", 1238 | "windows-sys 0.52.0", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "error-chain" 1243 | version = "0.12.4" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 1246 | dependencies = [ 1247 | "version_check", 1248 | ] 1249 | 1250 | [[package]] 1251 | name = "event-listener" 1252 | version = "2.5.3" 1253 | source = "registry+https://github.com/rust-lang/crates.io-index" 1254 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1255 | 1256 | [[package]] 1257 | name = "ext-sort" 1258 | version = "0.1.4" 1259 | source = "registry+https://github.com/rust-lang/crates.io-index" 1260 | checksum = "fcf73e44617eab501beba39234441a194cf138629d3b6447f81f573e1c3d0a13" 1261 | dependencies = [ 1262 | "log", 1263 | "rayon", 1264 | "rmp-serde", 1265 | "serde", 1266 | "tempfile", 1267 | ] 1268 | 1269 | [[package]] 1270 | name = "fastrand" 1271 | version = "1.9.0" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 1274 | dependencies = [ 1275 | "instant", 1276 | ] 1277 | 1278 | [[package]] 1279 | name = "fastrand" 1280 | version = "2.1.0" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 1283 | 1284 | [[package]] 1285 | name = "fastrlp" 1286 | version = "0.3.1" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" 1289 | dependencies = [ 1290 | "arrayvec", 1291 | "auto_impl", 1292 | "bytes", 1293 | ] 1294 | 1295 | [[package]] 1296 | name = "ff" 1297 | version = "0.13.0" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" 1300 | dependencies = [ 1301 | "rand_core", 1302 | "subtle", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "fixed-hash" 1307 | version = "0.8.0" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" 1310 | dependencies = [ 1311 | "byteorder", 1312 | "rand", 1313 | "rustc-hex", 1314 | "static_assertions", 1315 | ] 1316 | 1317 | [[package]] 1318 | name = "fixedbitset" 1319 | version = "0.4.2" 1320 | source = "registry+https://github.com/rust-lang/crates.io-index" 1321 | checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" 1322 | 1323 | [[package]] 1324 | name = "flate2" 1325 | version = "1.0.30" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 1328 | dependencies = [ 1329 | "crc32fast", 1330 | "miniz_oxide", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "float_next_after" 1335 | version = "1.0.0" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" 1338 | 1339 | [[package]] 1340 | name = "flume" 1341 | version = "0.11.0" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" 1344 | dependencies = [ 1345 | "futures-core", 1346 | "futures-sink", 1347 | "nanorand", 1348 | "spin 0.9.8", 1349 | ] 1350 | 1351 | [[package]] 1352 | name = "fnv" 1353 | version = "1.0.7" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1356 | 1357 | [[package]] 1358 | name = "foreign-types" 1359 | version = "0.3.2" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1362 | dependencies = [ 1363 | "foreign-types-shared", 1364 | ] 1365 | 1366 | [[package]] 1367 | name = "foreign-types-shared" 1368 | version = "0.1.1" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1371 | 1372 | [[package]] 1373 | name = "form_urlencoded" 1374 | version = "1.2.1" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 1377 | dependencies = [ 1378 | "percent-encoding", 1379 | ] 1380 | 1381 | [[package]] 1382 | name = "fst" 1383 | version = "0.4.7" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a" 1386 | 1387 | [[package]] 1388 | name = "funty" 1389 | version = "2.0.0" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" 1392 | 1393 | [[package]] 1394 | name = "futures" 1395 | version = "0.3.30" 1396 | source = "registry+https://github.com/rust-lang/crates.io-index" 1397 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 1398 | dependencies = [ 1399 | "futures-channel", 1400 | "futures-core", 1401 | "futures-executor", 1402 | "futures-io", 1403 | "futures-sink", 1404 | "futures-task", 1405 | "futures-util", 1406 | ] 1407 | 1408 | [[package]] 1409 | name = "futures-buffered" 1410 | version = "0.2.6" 1411 | source = "registry+https://github.com/rust-lang/crates.io-index" 1412 | checksum = "02dcae03ee5afa5ea17b1aebc793806b8ddfc6dc500e0b8e8e1eb30b9dad22c0" 1413 | dependencies = [ 1414 | "futures-core", 1415 | "futures-util", 1416 | "pin-project-lite", 1417 | ] 1418 | 1419 | [[package]] 1420 | name = "futures-channel" 1421 | version = "0.3.30" 1422 | source = "registry+https://github.com/rust-lang/crates.io-index" 1423 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 1424 | dependencies = [ 1425 | "futures-core", 1426 | "futures-sink", 1427 | ] 1428 | 1429 | [[package]] 1430 | name = "futures-concurrency" 1431 | version = "7.6.1" 1432 | source = "registry+https://github.com/rust-lang/crates.io-index" 1433 | checksum = "4b14ac911e85d57c5ea6eef76d7b4d4a3177ecd15f4bea2e61927e9e3823e19f" 1434 | dependencies = [ 1435 | "bitvec", 1436 | "futures-buffered", 1437 | "futures-core", 1438 | "futures-lite 1.13.0", 1439 | "pin-project", 1440 | "slab", 1441 | "smallvec", 1442 | ] 1443 | 1444 | [[package]] 1445 | name = "futures-core" 1446 | version = "0.3.30" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1449 | 1450 | [[package]] 1451 | name = "futures-executor" 1452 | version = "0.3.30" 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" 1454 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 1455 | dependencies = [ 1456 | "futures-core", 1457 | "futures-task", 1458 | "futures-util", 1459 | ] 1460 | 1461 | [[package]] 1462 | name = "futures-io" 1463 | version = "0.3.30" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1466 | 1467 | [[package]] 1468 | name = "futures-lite" 1469 | version = "1.13.0" 1470 | source = "registry+https://github.com/rust-lang/crates.io-index" 1471 | checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 1472 | dependencies = [ 1473 | "fastrand 1.9.0", 1474 | "futures-core", 1475 | "futures-io", 1476 | "memchr", 1477 | "parking", 1478 | "pin-project-lite", 1479 | "waker-fn", 1480 | ] 1481 | 1482 | [[package]] 1483 | name = "futures-lite" 1484 | version = "2.3.0" 1485 | source = "registry+https://github.com/rust-lang/crates.io-index" 1486 | checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" 1487 | dependencies = [ 1488 | "fastrand 2.1.0", 1489 | "futures-core", 1490 | "futures-io", 1491 | "parking", 1492 | "pin-project-lite", 1493 | ] 1494 | 1495 | [[package]] 1496 | name = "futures-macro" 1497 | version = "0.3.30" 1498 | source = "registry+https://github.com/rust-lang/crates.io-index" 1499 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 1500 | dependencies = [ 1501 | "proc-macro2", 1502 | "quote", 1503 | "syn 2.0.71", 1504 | ] 1505 | 1506 | [[package]] 1507 | name = "futures-sink" 1508 | version = "0.3.30" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1511 | 1512 | [[package]] 1513 | name = "futures-task" 1514 | version = "0.3.30" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1517 | 1518 | [[package]] 1519 | name = "futures-util" 1520 | version = "0.3.30" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1523 | dependencies = [ 1524 | "futures-channel", 1525 | "futures-core", 1526 | "futures-io", 1527 | "futures-macro", 1528 | "futures-sink", 1529 | "futures-task", 1530 | "memchr", 1531 | "pin-project-lite", 1532 | "pin-utils", 1533 | "slab", 1534 | ] 1535 | 1536 | [[package]] 1537 | name = "fuzzy-matcher" 1538 | version = "0.3.7" 1539 | source = "registry+https://github.com/rust-lang/crates.io-index" 1540 | checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94" 1541 | dependencies = [ 1542 | "thread_local", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "fxhash" 1547 | version = "0.2.1" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1550 | dependencies = [ 1551 | "byteorder", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "generic-array" 1556 | version = "0.14.7" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1559 | dependencies = [ 1560 | "typenum", 1561 | "version_check", 1562 | "zeroize", 1563 | ] 1564 | 1565 | [[package]] 1566 | name = "geo" 1567 | version = "0.26.0" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | checksum = "1645cf1d7fea7dac1a66f7357f3df2677ada708b8d9db8e9b043878930095a96" 1570 | dependencies = [ 1571 | "earcutr", 1572 | "float_next_after", 1573 | "geo-types", 1574 | "geographiclib-rs", 1575 | "log", 1576 | "num-traits", 1577 | "robust", 1578 | "rstar", 1579 | "serde", 1580 | ] 1581 | 1582 | [[package]] 1583 | name = "geo" 1584 | version = "0.27.0" 1585 | source = "registry+https://github.com/rust-lang/crates.io-index" 1586 | checksum = "4841b40fdbccd4b7042bd6195e4de91da54af34c50632e371bcbfcdfb558b873" 1587 | dependencies = [ 1588 | "earcutr", 1589 | "float_next_after", 1590 | "geo-types", 1591 | "geographiclib-rs", 1592 | "log", 1593 | "num-traits", 1594 | "robust", 1595 | "rstar", 1596 | "serde", 1597 | "spade", 1598 | ] 1599 | 1600 | [[package]] 1601 | name = "geo-types" 1602 | version = "0.7.13" 1603 | source = "registry+https://github.com/rust-lang/crates.io-index" 1604 | checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61" 1605 | dependencies = [ 1606 | "approx 0.5.1", 1607 | "arbitrary", 1608 | "num-traits", 1609 | "rstar", 1610 | "serde", 1611 | ] 1612 | 1613 | [[package]] 1614 | name = "geographiclib-rs" 1615 | version = "0.2.4" 1616 | source = "registry+https://github.com/rust-lang/crates.io-index" 1617 | checksum = "e6e5ed84f8089c70234b0a8e0aedb6dc733671612ddc0d37c6066052f9781960" 1618 | dependencies = [ 1619 | "libm", 1620 | ] 1621 | 1622 | [[package]] 1623 | name = "getrandom" 1624 | version = "0.2.15" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1627 | dependencies = [ 1628 | "cfg-if", 1629 | "js-sys", 1630 | "libc", 1631 | "wasi", 1632 | "wasm-bindgen", 1633 | ] 1634 | 1635 | [[package]] 1636 | name = "gimli" 1637 | version = "0.29.0" 1638 | source = "registry+https://github.com/rust-lang/crates.io-index" 1639 | checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 1640 | 1641 | [[package]] 1642 | name = "glob" 1643 | version = "0.3.1" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1646 | 1647 | [[package]] 1648 | name = "group" 1649 | version = "0.13.0" 1650 | source = "registry+https://github.com/rust-lang/crates.io-index" 1651 | checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1652 | dependencies = [ 1653 | "ff", 1654 | "rand_core", 1655 | "subtle", 1656 | ] 1657 | 1658 | [[package]] 1659 | name = "h2" 1660 | version = "0.3.26" 1661 | source = "registry+https://github.com/rust-lang/crates.io-index" 1662 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 1663 | dependencies = [ 1664 | "bytes", 1665 | "fnv", 1666 | "futures-core", 1667 | "futures-sink", 1668 | "futures-util", 1669 | "http 0.2.12", 1670 | "indexmap 2.2.6", 1671 | "slab", 1672 | "tokio", 1673 | "tokio-util", 1674 | "tracing", 1675 | ] 1676 | 1677 | [[package]] 1678 | name = "half" 1679 | version = "2.4.1" 1680 | source = "registry+https://github.com/rust-lang/crates.io-index" 1681 | checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 1682 | dependencies = [ 1683 | "cfg-if", 1684 | "crunchy", 1685 | ] 1686 | 1687 | [[package]] 1688 | name = "hash32" 1689 | version = "0.2.1" 1690 | source = "registry+https://github.com/rust-lang/crates.io-index" 1691 | checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 1692 | dependencies = [ 1693 | "byteorder", 1694 | ] 1695 | 1696 | [[package]] 1697 | name = "hashbrown" 1698 | version = "0.12.3" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1701 | dependencies = [ 1702 | "ahash 0.7.8", 1703 | ] 1704 | 1705 | [[package]] 1706 | name = "hashbrown" 1707 | version = "0.14.5" 1708 | source = "registry+https://github.com/rust-lang/crates.io-index" 1709 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1710 | dependencies = [ 1711 | "ahash 0.8.11", 1712 | "allocator-api2", 1713 | "serde", 1714 | ] 1715 | 1716 | [[package]] 1717 | name = "heapless" 1718 | version = "0.7.17" 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" 1720 | checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 1721 | dependencies = [ 1722 | "atomic-polyfill", 1723 | "hash32", 1724 | "rustc_version 0.4.0", 1725 | "spin 0.9.8", 1726 | "stable_deref_trait", 1727 | ] 1728 | 1729 | [[package]] 1730 | name = "heck" 1731 | version = "0.4.1" 1732 | source = "registry+https://github.com/rust-lang/crates.io-index" 1733 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1734 | 1735 | [[package]] 1736 | name = "hermit-abi" 1737 | version = "0.3.9" 1738 | source = "registry+https://github.com/rust-lang/crates.io-index" 1739 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1740 | 1741 | [[package]] 1742 | name = "hex" 1743 | version = "0.4.3" 1744 | source = "registry+https://github.com/rust-lang/crates.io-index" 1745 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1746 | 1747 | [[package]] 1748 | name = "hex-literal" 1749 | version = "0.4.1" 1750 | source = "registry+https://github.com/rust-lang/crates.io-index" 1751 | checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" 1752 | 1753 | [[package]] 1754 | name = "hmac" 1755 | version = "0.12.1" 1756 | source = "registry+https://github.com/rust-lang/crates.io-index" 1757 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1758 | dependencies = [ 1759 | "digest 0.10.7", 1760 | ] 1761 | 1762 | [[package]] 1763 | name = "http" 1764 | version = "0.2.12" 1765 | source = "registry+https://github.com/rust-lang/crates.io-index" 1766 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1767 | dependencies = [ 1768 | "bytes", 1769 | "fnv", 1770 | "itoa", 1771 | ] 1772 | 1773 | [[package]] 1774 | name = "http" 1775 | version = "1.1.0" 1776 | source = "registry+https://github.com/rust-lang/crates.io-index" 1777 | checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" 1778 | dependencies = [ 1779 | "bytes", 1780 | "fnv", 1781 | "itoa", 1782 | ] 1783 | 1784 | [[package]] 1785 | name = "http-body" 1786 | version = "0.4.6" 1787 | source = "registry+https://github.com/rust-lang/crates.io-index" 1788 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 1789 | dependencies = [ 1790 | "bytes", 1791 | "http 0.2.12", 1792 | "pin-project-lite", 1793 | ] 1794 | 1795 | [[package]] 1796 | name = "httparse" 1797 | version = "1.9.4" 1798 | source = "registry+https://github.com/rust-lang/crates.io-index" 1799 | checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" 1800 | 1801 | [[package]] 1802 | name = "httpdate" 1803 | version = "1.0.3" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1806 | 1807 | [[package]] 1808 | name = "humantime" 1809 | version = "2.1.0" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1812 | 1813 | [[package]] 1814 | name = "hyper" 1815 | version = "0.14.30" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" 1818 | dependencies = [ 1819 | "bytes", 1820 | "futures-channel", 1821 | "futures-core", 1822 | "futures-util", 1823 | "h2", 1824 | "http 0.2.12", 1825 | "http-body", 1826 | "httparse", 1827 | "httpdate", 1828 | "itoa", 1829 | "pin-project-lite", 1830 | "socket2", 1831 | "tokio", 1832 | "tower-service", 1833 | "tracing", 1834 | "want", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "hyper-rustls" 1839 | version = "0.24.2" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 1842 | dependencies = [ 1843 | "futures-util", 1844 | "http 0.2.12", 1845 | "hyper", 1846 | "rustls 0.21.12", 1847 | "tokio", 1848 | "tokio-rustls 0.24.1", 1849 | ] 1850 | 1851 | [[package]] 1852 | name = "hyper-tls" 1853 | version = "0.5.0" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" 1856 | dependencies = [ 1857 | "bytes", 1858 | "hyper", 1859 | "native-tls", 1860 | "tokio", 1861 | "tokio-native-tls", 1862 | ] 1863 | 1864 | [[package]] 1865 | name = "iana-time-zone" 1866 | version = "0.1.60" 1867 | source = "registry+https://github.com/rust-lang/crates.io-index" 1868 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 1869 | dependencies = [ 1870 | "android_system_properties", 1871 | "core-foundation-sys", 1872 | "iana-time-zone-haiku", 1873 | "js-sys", 1874 | "wasm-bindgen", 1875 | "windows-core", 1876 | ] 1877 | 1878 | [[package]] 1879 | name = "iana-time-zone-haiku" 1880 | version = "0.1.2" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1883 | dependencies = [ 1884 | "cc", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "ident_case" 1889 | version = "1.0.1" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1892 | 1893 | [[package]] 1894 | name = "idna" 1895 | version = "0.5.0" 1896 | source = "registry+https://github.com/rust-lang/crates.io-index" 1897 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1898 | dependencies = [ 1899 | "unicode-bidi", 1900 | "unicode-normalization", 1901 | ] 1902 | 1903 | [[package]] 1904 | name = "imbl" 1905 | version = "2.0.3" 1906 | source = "registry+https://github.com/rust-lang/crates.io-index" 1907 | checksum = "978d142c8028edf52095703af2fad11d6f611af1246685725d6b850634647085" 1908 | dependencies = [ 1909 | "bitmaps", 1910 | "imbl-sized-chunks", 1911 | "rand_core", 1912 | "rand_xoshiro", 1913 | "version_check", 1914 | ] 1915 | 1916 | [[package]] 1917 | name = "imbl-sized-chunks" 1918 | version = "0.1.2" 1919 | source = "registry+https://github.com/rust-lang/crates.io-index" 1920 | checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63" 1921 | dependencies = [ 1922 | "bitmaps", 1923 | ] 1924 | 1925 | [[package]] 1926 | name = "impl-codec" 1927 | version = "0.6.0" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" 1930 | dependencies = [ 1931 | "parity-scale-codec", 1932 | ] 1933 | 1934 | [[package]] 1935 | name = "impl-trait-for-tuples" 1936 | version = "0.2.2" 1937 | source = "registry+https://github.com/rust-lang/crates.io-index" 1938 | checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" 1939 | dependencies = [ 1940 | "proc-macro2", 1941 | "quote", 1942 | "syn 1.0.109", 1943 | ] 1944 | 1945 | [[package]] 1946 | name = "indexmap" 1947 | version = "1.9.3" 1948 | source = "registry+https://github.com/rust-lang/crates.io-index" 1949 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1950 | dependencies = [ 1951 | "autocfg", 1952 | "hashbrown 0.12.3", 1953 | "serde", 1954 | ] 1955 | 1956 | [[package]] 1957 | name = "indexmap" 1958 | version = "2.2.6" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 1961 | dependencies = [ 1962 | "equivalent", 1963 | "hashbrown 0.14.5", 1964 | "serde", 1965 | ] 1966 | 1967 | [[package]] 1968 | name = "inout" 1969 | version = "0.1.3" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 1972 | dependencies = [ 1973 | "generic-array", 1974 | ] 1975 | 1976 | [[package]] 1977 | name = "instant" 1978 | version = "0.1.13" 1979 | source = "registry+https://github.com/rust-lang/crates.io-index" 1980 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1981 | dependencies = [ 1982 | "cfg-if", 1983 | ] 1984 | 1985 | [[package]] 1986 | name = "ipnet" 1987 | version = "2.9.0" 1988 | source = "registry+https://github.com/rust-lang/crates.io-index" 1989 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 1990 | 1991 | [[package]] 1992 | name = "itertools" 1993 | version = "0.10.5" 1994 | source = "registry+https://github.com/rust-lang/crates.io-index" 1995 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1996 | dependencies = [ 1997 | "either", 1998 | ] 1999 | 2000 | [[package]] 2001 | name = "itertools" 2002 | version = "0.11.0" 2003 | source = "registry+https://github.com/rust-lang/crates.io-index" 2004 | checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 2005 | dependencies = [ 2006 | "either", 2007 | ] 2008 | 2009 | [[package]] 2010 | name = "itoa" 2011 | version = "1.0.11" 2012 | source = "registry+https://github.com/rust-lang/crates.io-index" 2013 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 2014 | 2015 | [[package]] 2016 | name = "jobserver" 2017 | version = "0.1.31" 2018 | source = "registry+https://github.com/rust-lang/crates.io-index" 2019 | checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" 2020 | dependencies = [ 2021 | "libc", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "js-sys" 2026 | version = "0.3.69" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 2029 | dependencies = [ 2030 | "wasm-bindgen", 2031 | ] 2032 | 2033 | [[package]] 2034 | name = "k256" 2035 | version = "0.13.3" 2036 | source = "registry+https://github.com/rust-lang/crates.io-index" 2037 | checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" 2038 | dependencies = [ 2039 | "cfg-if", 2040 | "ecdsa", 2041 | "elliptic-curve", 2042 | "once_cell", 2043 | "sha2", 2044 | ] 2045 | 2046 | [[package]] 2047 | name = "keccak-asm" 2048 | version = "0.1.1" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758" 2051 | dependencies = [ 2052 | "digest 0.10.7", 2053 | "sha3-asm", 2054 | ] 2055 | 2056 | [[package]] 2057 | name = "lalrpop" 2058 | version = "0.20.2" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" 2061 | dependencies = [ 2062 | "ascii-canvas", 2063 | "bit-set", 2064 | "ena", 2065 | "itertools 0.11.0", 2066 | "lalrpop-util", 2067 | "petgraph", 2068 | "pico-args", 2069 | "regex", 2070 | "regex-syntax", 2071 | "string_cache", 2072 | "term", 2073 | "tiny-keccak", 2074 | "unicode-xid", 2075 | "walkdir", 2076 | ] 2077 | 2078 | [[package]] 2079 | name = "lalrpop-util" 2080 | version = "0.20.2" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" 2083 | dependencies = [ 2084 | "regex-automata", 2085 | ] 2086 | 2087 | [[package]] 2088 | name = "lazy_static" 2089 | version = "1.5.0" 2090 | source = "registry+https://github.com/rust-lang/crates.io-index" 2091 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2092 | dependencies = [ 2093 | "spin 0.9.8", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "lazycell" 2098 | version = "1.3.0" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 2101 | 2102 | [[package]] 2103 | name = "lexicmp" 2104 | version = "0.1.0" 2105 | source = "registry+https://github.com/rust-lang/crates.io-index" 2106 | checksum = "7378d131ddf24063b32cbd7e91668d183140c4b3906270635a4d633d1068ea5d" 2107 | dependencies = [ 2108 | "any_ascii", 2109 | ] 2110 | 2111 | [[package]] 2112 | name = "libc" 2113 | version = "0.2.155" 2114 | source = "registry+https://github.com/rust-lang/crates.io-index" 2115 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 2116 | 2117 | [[package]] 2118 | name = "libloading" 2119 | version = "0.8.4" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" 2122 | dependencies = [ 2123 | "cfg-if", 2124 | "windows-targets 0.52.6", 2125 | ] 2126 | 2127 | [[package]] 2128 | name = "libm" 2129 | version = "0.2.8" 2130 | source = "registry+https://github.com/rust-lang/crates.io-index" 2131 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 2132 | 2133 | [[package]] 2134 | name = "libredox" 2135 | version = "0.1.3" 2136 | source = "registry+https://github.com/rust-lang/crates.io-index" 2137 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 2138 | dependencies = [ 2139 | "bitflags 2.6.0", 2140 | "libc", 2141 | ] 2142 | 2143 | [[package]] 2144 | name = "librocksdb-sys" 2145 | version = "0.11.0+8.1.1" 2146 | source = "registry+https://github.com/rust-lang/crates.io-index" 2147 | checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" 2148 | dependencies = [ 2149 | "bindgen", 2150 | "bzip2-sys", 2151 | "cc", 2152 | "glob", 2153 | "libc", 2154 | "libz-sys", 2155 | "lz4-sys", 2156 | "zstd-sys", 2157 | ] 2158 | 2159 | [[package]] 2160 | name = "libz-sys" 2161 | version = "1.1.18" 2162 | source = "registry+https://github.com/rust-lang/crates.io-index" 2163 | checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" 2164 | dependencies = [ 2165 | "cc", 2166 | "pkg-config", 2167 | "vcpkg", 2168 | ] 2169 | 2170 | [[package]] 2171 | name = "linfa-linalg" 2172 | version = "0.1.0" 2173 | source = "registry+https://github.com/rust-lang/crates.io-index" 2174 | checksum = "56e7562b41c8876d3367897067013bb2884cc78e6893f092ecd26b305176ac82" 2175 | dependencies = [ 2176 | "ndarray", 2177 | "num-traits", 2178 | "rand", 2179 | "thiserror", 2180 | ] 2181 | 2182 | [[package]] 2183 | name = "linux-raw-sys" 2184 | version = "0.4.14" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 2187 | 2188 | [[package]] 2189 | name = "lock_api" 2190 | version = "0.4.12" 2191 | source = "registry+https://github.com/rust-lang/crates.io-index" 2192 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2193 | dependencies = [ 2194 | "autocfg", 2195 | "scopeguard", 2196 | ] 2197 | 2198 | [[package]] 2199 | name = "log" 2200 | version = "0.4.22" 2201 | source = "registry+https://github.com/rust-lang/crates.io-index" 2202 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 2203 | 2204 | [[package]] 2205 | name = "lz4-sys" 2206 | version = "1.9.5" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" 2209 | dependencies = [ 2210 | "cc", 2211 | "libc", 2212 | ] 2213 | 2214 | [[package]] 2215 | name = "macro_env" 2216 | version = "0.1.8" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "dca479c22a4ced0a4a9917f8839c35e83628fe81956cbbe651b4b677a7320513" 2219 | 2220 | [[package]] 2221 | name = "matrixmultiply" 2222 | version = "0.3.8" 2223 | source = "registry+https://github.com/rust-lang/crates.io-index" 2224 | checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" 2225 | dependencies = [ 2226 | "autocfg", 2227 | "rawpointer", 2228 | ] 2229 | 2230 | [[package]] 2231 | name = "md-5" 2232 | version = "0.10.6" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2235 | dependencies = [ 2236 | "cfg-if", 2237 | "digest 0.10.7", 2238 | ] 2239 | 2240 | [[package]] 2241 | name = "memchr" 2242 | version = "2.7.4" 2243 | source = "registry+https://github.com/rust-lang/crates.io-index" 2244 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2245 | 2246 | [[package]] 2247 | name = "miette" 2248 | version = "5.10.0" 2249 | source = "registry+https://github.com/rust-lang/crates.io-index" 2250 | checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" 2251 | dependencies = [ 2252 | "miette-derive", 2253 | "once_cell", 2254 | "thiserror", 2255 | "unicode-width", 2256 | ] 2257 | 2258 | [[package]] 2259 | name = "miette-derive" 2260 | version = "5.10.0" 2261 | source = "registry+https://github.com/rust-lang/crates.io-index" 2262 | checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" 2263 | dependencies = [ 2264 | "proc-macro2", 2265 | "quote", 2266 | "syn 2.0.71", 2267 | ] 2268 | 2269 | [[package]] 2270 | name = "mime" 2271 | version = "0.3.17" 2272 | source = "registry+https://github.com/rust-lang/crates.io-index" 2273 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2274 | 2275 | [[package]] 2276 | name = "mime_guess" 2277 | version = "2.0.5" 2278 | source = "registry+https://github.com/rust-lang/crates.io-index" 2279 | checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 2280 | dependencies = [ 2281 | "mime", 2282 | "unicase", 2283 | ] 2284 | 2285 | [[package]] 2286 | name = "mini-moka" 2287 | version = "0.10.3" 2288 | source = "registry+https://github.com/rust-lang/crates.io-index" 2289 | checksum = "c325dfab65f261f386debee8b0969da215b3fa0037e74c8a1234db7ba986d803" 2290 | dependencies = [ 2291 | "crossbeam-channel", 2292 | "crossbeam-utils", 2293 | "dashmap", 2294 | "skeptic", 2295 | "smallvec", 2296 | "tagptr", 2297 | "triomphe", 2298 | ] 2299 | 2300 | [[package]] 2301 | name = "minimal-lexical" 2302 | version = "0.2.1" 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" 2304 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2305 | 2306 | [[package]] 2307 | name = "miniz_oxide" 2308 | version = "0.7.4" 2309 | source = "registry+https://github.com/rust-lang/crates.io-index" 2310 | checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" 2311 | dependencies = [ 2312 | "adler", 2313 | ] 2314 | 2315 | [[package]] 2316 | name = "mio" 2317 | version = "0.8.11" 2318 | source = "registry+https://github.com/rust-lang/crates.io-index" 2319 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 2320 | dependencies = [ 2321 | "libc", 2322 | "wasi", 2323 | "windows-sys 0.48.0", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "nanoid" 2328 | version = "0.4.0" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" 2331 | dependencies = [ 2332 | "rand", 2333 | ] 2334 | 2335 | [[package]] 2336 | name = "nanorand" 2337 | version = "0.7.0" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" 2340 | dependencies = [ 2341 | "getrandom", 2342 | ] 2343 | 2344 | [[package]] 2345 | name = "native-tls" 2346 | version = "0.2.12" 2347 | source = "registry+https://github.com/rust-lang/crates.io-index" 2348 | checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" 2349 | dependencies = [ 2350 | "libc", 2351 | "log", 2352 | "openssl", 2353 | "openssl-probe", 2354 | "openssl-sys", 2355 | "schannel", 2356 | "security-framework", 2357 | "security-framework-sys", 2358 | "tempfile", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "ndarray" 2363 | version = "0.15.6" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" 2366 | dependencies = [ 2367 | "approx 0.4.0", 2368 | "matrixmultiply", 2369 | "num-complex", 2370 | "num-integer", 2371 | "num-traits", 2372 | "rawpointer", 2373 | ] 2374 | 2375 | [[package]] 2376 | name = "ndarray-stats" 2377 | version = "0.5.1" 2378 | source = "registry+https://github.com/rust-lang/crates.io-index" 2379 | checksum = "af5a8477ac96877b5bd1fd67e0c28736c12943aba24eda92b127e036b0c8f400" 2380 | dependencies = [ 2381 | "indexmap 1.9.3", 2382 | "itertools 0.10.5", 2383 | "ndarray", 2384 | "noisy_float", 2385 | "num-integer", 2386 | "num-traits", 2387 | "rand", 2388 | ] 2389 | 2390 | [[package]] 2391 | name = "new_debug_unreachable" 2392 | version = "1.0.6" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 2395 | 2396 | [[package]] 2397 | name = "nibble_vec" 2398 | version = "0.1.0" 2399 | source = "registry+https://github.com/rust-lang/crates.io-index" 2400 | checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" 2401 | dependencies = [ 2402 | "smallvec", 2403 | ] 2404 | 2405 | [[package]] 2406 | name = "noisy_float" 2407 | version = "0.2.0" 2408 | source = "registry+https://github.com/rust-lang/crates.io-index" 2409 | checksum = "978fe6e6ebc0bf53de533cd456ca2d9de13de13856eda1518a285d7705a213af" 2410 | dependencies = [ 2411 | "num-traits", 2412 | ] 2413 | 2414 | [[package]] 2415 | name = "nom" 2416 | version = "7.1.3" 2417 | source = "registry+https://github.com/rust-lang/crates.io-index" 2418 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2419 | dependencies = [ 2420 | "memchr", 2421 | "minimal-lexical", 2422 | ] 2423 | 2424 | [[package]] 2425 | name = "num-bigint" 2426 | version = "0.4.6" 2427 | source = "registry+https://github.com/rust-lang/crates.io-index" 2428 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2429 | dependencies = [ 2430 | "num-integer", 2431 | "num-traits", 2432 | ] 2433 | 2434 | [[package]] 2435 | name = "num-bigint-dig" 2436 | version = "0.8.4" 2437 | source = "registry+https://github.com/rust-lang/crates.io-index" 2438 | checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" 2439 | dependencies = [ 2440 | "byteorder", 2441 | "lazy_static", 2442 | "libm", 2443 | "num-integer", 2444 | "num-iter", 2445 | "num-traits", 2446 | "rand", 2447 | "smallvec", 2448 | "zeroize", 2449 | ] 2450 | 2451 | [[package]] 2452 | name = "num-complex" 2453 | version = "0.4.6" 2454 | source = "registry+https://github.com/rust-lang/crates.io-index" 2455 | checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 2456 | dependencies = [ 2457 | "num-traits", 2458 | ] 2459 | 2460 | [[package]] 2461 | name = "num-conv" 2462 | version = "0.1.0" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2465 | 2466 | [[package]] 2467 | name = "num-integer" 2468 | version = "0.1.46" 2469 | source = "registry+https://github.com/rust-lang/crates.io-index" 2470 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2471 | dependencies = [ 2472 | "num-traits", 2473 | ] 2474 | 2475 | [[package]] 2476 | name = "num-iter" 2477 | version = "0.1.45" 2478 | source = "registry+https://github.com/rust-lang/crates.io-index" 2479 | checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2480 | dependencies = [ 2481 | "autocfg", 2482 | "num-integer", 2483 | "num-traits", 2484 | ] 2485 | 2486 | [[package]] 2487 | name = "num-traits" 2488 | version = "0.2.19" 2489 | source = "registry+https://github.com/rust-lang/crates.io-index" 2490 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2491 | dependencies = [ 2492 | "autocfg", 2493 | "libm", 2494 | ] 2495 | 2496 | [[package]] 2497 | name = "num_cpus" 2498 | version = "1.16.0" 2499 | source = "registry+https://github.com/rust-lang/crates.io-index" 2500 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2501 | dependencies = [ 2502 | "hermit-abi", 2503 | "libc", 2504 | ] 2505 | 2506 | [[package]] 2507 | name = "object" 2508 | version = "0.36.1" 2509 | source = "registry+https://github.com/rust-lang/crates.io-index" 2510 | checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" 2511 | dependencies = [ 2512 | "memchr", 2513 | ] 2514 | 2515 | [[package]] 2516 | name = "object_store" 2517 | version = "0.8.0" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "2524735495ea1268be33d200e1ee97455096a0846295a21548cd2f3541de7050" 2520 | dependencies = [ 2521 | "async-trait", 2522 | "bytes", 2523 | "chrono", 2524 | "futures", 2525 | "humantime", 2526 | "itertools 0.11.0", 2527 | "parking_lot", 2528 | "percent-encoding", 2529 | "snafu", 2530 | "tokio", 2531 | "tracing", 2532 | "url", 2533 | "walkdir", 2534 | ] 2535 | 2536 | [[package]] 2537 | name = "once_cell" 2538 | version = "1.19.0" 2539 | source = "registry+https://github.com/rust-lang/crates.io-index" 2540 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2541 | 2542 | [[package]] 2543 | name = "openssl" 2544 | version = "0.10.64" 2545 | source = "registry+https://github.com/rust-lang/crates.io-index" 2546 | checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" 2547 | dependencies = [ 2548 | "bitflags 2.6.0", 2549 | "cfg-if", 2550 | "foreign-types", 2551 | "libc", 2552 | "once_cell", 2553 | "openssl-macros", 2554 | "openssl-sys", 2555 | ] 2556 | 2557 | [[package]] 2558 | name = "openssl-macros" 2559 | version = "0.1.1" 2560 | source = "registry+https://github.com/rust-lang/crates.io-index" 2561 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 2562 | dependencies = [ 2563 | "proc-macro2", 2564 | "quote", 2565 | "syn 2.0.71", 2566 | ] 2567 | 2568 | [[package]] 2569 | name = "openssl-probe" 2570 | version = "0.1.5" 2571 | source = "registry+https://github.com/rust-lang/crates.io-index" 2572 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 2573 | 2574 | [[package]] 2575 | name = "openssl-sys" 2576 | version = "0.9.102" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" 2579 | dependencies = [ 2580 | "cc", 2581 | "libc", 2582 | "pkg-config", 2583 | "vcpkg", 2584 | ] 2585 | 2586 | [[package]] 2587 | name = "parity-scale-codec" 2588 | version = "3.6.12" 2589 | source = "registry+https://github.com/rust-lang/crates.io-index" 2590 | checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" 2591 | dependencies = [ 2592 | "arrayvec", 2593 | "bitvec", 2594 | "byte-slice-cast", 2595 | "impl-trait-for-tuples", 2596 | "parity-scale-codec-derive", 2597 | "serde", 2598 | ] 2599 | 2600 | [[package]] 2601 | name = "parity-scale-codec-derive" 2602 | version = "3.6.12" 2603 | source = "registry+https://github.com/rust-lang/crates.io-index" 2604 | checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" 2605 | dependencies = [ 2606 | "proc-macro-crate", 2607 | "proc-macro2", 2608 | "quote", 2609 | "syn 1.0.109", 2610 | ] 2611 | 2612 | [[package]] 2613 | name = "parking" 2614 | version = "2.2.0" 2615 | source = "registry+https://github.com/rust-lang/crates.io-index" 2616 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 2617 | 2618 | [[package]] 2619 | name = "parking_lot" 2620 | version = "0.12.3" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2623 | dependencies = [ 2624 | "lock_api", 2625 | "parking_lot_core", 2626 | ] 2627 | 2628 | [[package]] 2629 | name = "parking_lot_core" 2630 | version = "0.9.10" 2631 | source = "registry+https://github.com/rust-lang/crates.io-index" 2632 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2633 | dependencies = [ 2634 | "cfg-if", 2635 | "libc", 2636 | "redox_syscall", 2637 | "smallvec", 2638 | "windows-targets 0.52.6", 2639 | ] 2640 | 2641 | [[package]] 2642 | name = "password-hash" 2643 | version = "0.5.0" 2644 | source = "registry+https://github.com/rust-lang/crates.io-index" 2645 | checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" 2646 | dependencies = [ 2647 | "base64ct", 2648 | "rand_core", 2649 | "subtle", 2650 | ] 2651 | 2652 | [[package]] 2653 | name = "paste" 2654 | version = "1.0.15" 2655 | source = "registry+https://github.com/rust-lang/crates.io-index" 2656 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2657 | 2658 | [[package]] 2659 | name = "path-clean" 2660 | version = "1.0.1" 2661 | source = "registry+https://github.com/rust-lang/crates.io-index" 2662 | checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" 2663 | 2664 | [[package]] 2665 | name = "pbkdf2" 2666 | version = "0.12.2" 2667 | source = "registry+https://github.com/rust-lang/crates.io-index" 2668 | checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" 2669 | dependencies = [ 2670 | "digest 0.10.7", 2671 | "hmac", 2672 | "password-hash", 2673 | "sha2", 2674 | ] 2675 | 2676 | [[package]] 2677 | name = "peeking_take_while" 2678 | version = "0.1.2" 2679 | source = "registry+https://github.com/rust-lang/crates.io-index" 2680 | checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 2681 | 2682 | [[package]] 2683 | name = "pem" 2684 | version = "2.0.1" 2685 | source = "registry+https://github.com/rust-lang/crates.io-index" 2686 | checksum = "6b13fe415cdf3c8e44518e18a7c95a13431d9bdf6d15367d82b23c377fdd441a" 2687 | dependencies = [ 2688 | "base64 0.21.7", 2689 | "serde", 2690 | ] 2691 | 2692 | [[package]] 2693 | name = "pem-rfc7468" 2694 | version = "0.7.0" 2695 | source = "registry+https://github.com/rust-lang/crates.io-index" 2696 | checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2697 | dependencies = [ 2698 | "base64ct", 2699 | ] 2700 | 2701 | [[package]] 2702 | name = "percent-encoding" 2703 | version = "2.3.1" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2706 | 2707 | [[package]] 2708 | name = "pest" 2709 | version = "2.7.11" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" 2712 | dependencies = [ 2713 | "memchr", 2714 | "thiserror", 2715 | "ucd-trie", 2716 | ] 2717 | 2718 | [[package]] 2719 | name = "petgraph" 2720 | version = "0.6.5" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" 2723 | dependencies = [ 2724 | "fixedbitset", 2725 | "indexmap 2.2.6", 2726 | ] 2727 | 2728 | [[package]] 2729 | name = "pharos" 2730 | version = "0.5.3" 2731 | source = "registry+https://github.com/rust-lang/crates.io-index" 2732 | checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" 2733 | dependencies = [ 2734 | "futures", 2735 | "rustc_version 0.4.0", 2736 | ] 2737 | 2738 | [[package]] 2739 | name = "phf_shared" 2740 | version = "0.10.0" 2741 | source = "registry+https://github.com/rust-lang/crates.io-index" 2742 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 2743 | dependencies = [ 2744 | "siphasher", 2745 | ] 2746 | 2747 | [[package]] 2748 | name = "pico-args" 2749 | version = "0.5.0" 2750 | source = "registry+https://github.com/rust-lang/crates.io-index" 2751 | checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" 2752 | 2753 | [[package]] 2754 | name = "pin-project" 2755 | version = "1.1.5" 2756 | source = "registry+https://github.com/rust-lang/crates.io-index" 2757 | checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" 2758 | dependencies = [ 2759 | "pin-project-internal", 2760 | ] 2761 | 2762 | [[package]] 2763 | name = "pin-project-internal" 2764 | version = "1.1.5" 2765 | source = "registry+https://github.com/rust-lang/crates.io-index" 2766 | checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" 2767 | dependencies = [ 2768 | "proc-macro2", 2769 | "quote", 2770 | "syn 2.0.71", 2771 | ] 2772 | 2773 | [[package]] 2774 | name = "pin-project-lite" 2775 | version = "0.2.14" 2776 | source = "registry+https://github.com/rust-lang/crates.io-index" 2777 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 2778 | 2779 | [[package]] 2780 | name = "pin-utils" 2781 | version = "0.1.0" 2782 | source = "registry+https://github.com/rust-lang/crates.io-index" 2783 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2784 | 2785 | [[package]] 2786 | name = "pkcs1" 2787 | version = "0.7.5" 2788 | source = "registry+https://github.com/rust-lang/crates.io-index" 2789 | checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2790 | dependencies = [ 2791 | "der", 2792 | "pkcs8", 2793 | "spki", 2794 | ] 2795 | 2796 | [[package]] 2797 | name = "pkcs8" 2798 | version = "0.10.2" 2799 | source = "registry+https://github.com/rust-lang/crates.io-index" 2800 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2801 | dependencies = [ 2802 | "der", 2803 | "spki", 2804 | ] 2805 | 2806 | [[package]] 2807 | name = "pkg-config" 2808 | version = "0.3.30" 2809 | source = "registry+https://github.com/rust-lang/crates.io-index" 2810 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2811 | 2812 | [[package]] 2813 | name = "poise" 2814 | version = "0.6.1" 2815 | source = "git+https://github.com/serenity-rs/poise.git?branch=next#6c26be9d3fa6ee092b9e418618596dfdf443097b" 2816 | dependencies = [ 2817 | "async-trait", 2818 | "derivative", 2819 | "futures-util", 2820 | "indexmap 2.2.6", 2821 | "parking_lot", 2822 | "poise_macros", 2823 | "regex", 2824 | "serenity", 2825 | "tokio", 2826 | "tracing", 2827 | "trim-in-place", 2828 | ] 2829 | 2830 | [[package]] 2831 | name = "poise_macros" 2832 | version = "0.6.1" 2833 | source = "git+https://github.com/serenity-rs/poise.git?branch=next#6c26be9d3fa6ee092b9e418618596dfdf443097b" 2834 | dependencies = [ 2835 | "darling", 2836 | "proc-macro2", 2837 | "quote", 2838 | "syn 2.0.71", 2839 | ] 2840 | 2841 | [[package]] 2842 | name = "powerfmt" 2843 | version = "0.2.0" 2844 | source = "registry+https://github.com/rust-lang/crates.io-index" 2845 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2846 | 2847 | [[package]] 2848 | name = "ppv-lite86" 2849 | version = "0.2.17" 2850 | source = "registry+https://github.com/rust-lang/crates.io-index" 2851 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2852 | 2853 | [[package]] 2854 | name = "precomputed-hash" 2855 | version = "0.1.1" 2856 | source = "registry+https://github.com/rust-lang/crates.io-index" 2857 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2858 | 2859 | [[package]] 2860 | name = "prettyplease" 2861 | version = "0.2.20" 2862 | source = "registry+https://github.com/rust-lang/crates.io-index" 2863 | checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" 2864 | dependencies = [ 2865 | "proc-macro2", 2866 | "syn 2.0.71", 2867 | ] 2868 | 2869 | [[package]] 2870 | name = "primitive-types" 2871 | version = "0.12.2" 2872 | source = "registry+https://github.com/rust-lang/crates.io-index" 2873 | checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" 2874 | dependencies = [ 2875 | "fixed-hash", 2876 | "impl-codec", 2877 | "uint", 2878 | ] 2879 | 2880 | [[package]] 2881 | name = "proc-macro-crate" 2882 | version = "3.1.0" 2883 | source = "registry+https://github.com/rust-lang/crates.io-index" 2884 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 2885 | dependencies = [ 2886 | "toml_edit", 2887 | ] 2888 | 2889 | [[package]] 2890 | name = "proc-macro-error" 2891 | version = "1.0.4" 2892 | source = "registry+https://github.com/rust-lang/crates.io-index" 2893 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2894 | dependencies = [ 2895 | "proc-macro-error-attr", 2896 | "proc-macro2", 2897 | "quote", 2898 | "syn 1.0.109", 2899 | "version_check", 2900 | ] 2901 | 2902 | [[package]] 2903 | name = "proc-macro-error-attr" 2904 | version = "1.0.4" 2905 | source = "registry+https://github.com/rust-lang/crates.io-index" 2906 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2907 | dependencies = [ 2908 | "proc-macro2", 2909 | "quote", 2910 | "version_check", 2911 | ] 2912 | 2913 | [[package]] 2914 | name = "proc-macro2" 2915 | version = "1.0.86" 2916 | source = "registry+https://github.com/rust-lang/crates.io-index" 2917 | checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" 2918 | dependencies = [ 2919 | "unicode-ident", 2920 | ] 2921 | 2922 | [[package]] 2923 | name = "proptest" 2924 | version = "1.5.0" 2925 | source = "registry+https://github.com/rust-lang/crates.io-index" 2926 | checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" 2927 | dependencies = [ 2928 | "bit-set", 2929 | "bit-vec", 2930 | "bitflags 2.6.0", 2931 | "lazy_static", 2932 | "num-traits", 2933 | "rand", 2934 | "rand_chacha", 2935 | "rand_xorshift", 2936 | "regex-syntax", 2937 | "rusty-fork", 2938 | "tempfile", 2939 | "unarray", 2940 | ] 2941 | 2942 | [[package]] 2943 | name = "psl-types" 2944 | version = "2.0.11" 2945 | source = "registry+https://github.com/rust-lang/crates.io-index" 2946 | checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" 2947 | 2948 | [[package]] 2949 | name = "psm" 2950 | version = "0.1.21" 2951 | source = "registry+https://github.com/rust-lang/crates.io-index" 2952 | checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" 2953 | dependencies = [ 2954 | "cc", 2955 | ] 2956 | 2957 | [[package]] 2958 | name = "ptr_meta" 2959 | version = "0.1.4" 2960 | source = "registry+https://github.com/rust-lang/crates.io-index" 2961 | checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" 2962 | dependencies = [ 2963 | "ptr_meta_derive", 2964 | ] 2965 | 2966 | [[package]] 2967 | name = "ptr_meta_derive" 2968 | version = "0.1.4" 2969 | source = "registry+https://github.com/rust-lang/crates.io-index" 2970 | checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" 2971 | dependencies = [ 2972 | "proc-macro2", 2973 | "quote", 2974 | "syn 1.0.109", 2975 | ] 2976 | 2977 | [[package]] 2978 | name = "pulldown-cmark" 2979 | version = "0.9.6" 2980 | source = "registry+https://github.com/rust-lang/crates.io-index" 2981 | checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" 2982 | dependencies = [ 2983 | "bitflags 2.6.0", 2984 | "memchr", 2985 | "unicase", 2986 | ] 2987 | 2988 | [[package]] 2989 | name = "quick-error" 2990 | version = "1.2.3" 2991 | source = "registry+https://github.com/rust-lang/crates.io-index" 2992 | checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 2993 | 2994 | [[package]] 2995 | name = "quick_cache" 2996 | version = "0.4.2" 2997 | source = "registry+https://github.com/rust-lang/crates.io-index" 2998 | checksum = "b1380629287ed1247c1e0fcc6d43efdcec508b65382c9ab775cc8f3df7ca07b0" 2999 | dependencies = [ 3000 | "ahash 0.8.11", 3001 | "equivalent", 3002 | "hashbrown 0.14.5", 3003 | "parking_lot", 3004 | ] 3005 | 3006 | [[package]] 3007 | name = "quote" 3008 | version = "1.0.36" 3009 | source = "registry+https://github.com/rust-lang/crates.io-index" 3010 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 3011 | dependencies = [ 3012 | "proc-macro2", 3013 | ] 3014 | 3015 | [[package]] 3016 | name = "radium" 3017 | version = "0.7.0" 3018 | source = "registry+https://github.com/rust-lang/crates.io-index" 3019 | checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" 3020 | 3021 | [[package]] 3022 | name = "radix_trie" 3023 | version = "0.2.1" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" 3026 | dependencies = [ 3027 | "endian-type", 3028 | "nibble_vec", 3029 | "serde", 3030 | ] 3031 | 3032 | [[package]] 3033 | name = "rand" 3034 | version = "0.8.5" 3035 | source = "registry+https://github.com/rust-lang/crates.io-index" 3036 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 3037 | dependencies = [ 3038 | "libc", 3039 | "rand_chacha", 3040 | "rand_core", 3041 | ] 3042 | 3043 | [[package]] 3044 | name = "rand_chacha" 3045 | version = "0.3.1" 3046 | source = "registry+https://github.com/rust-lang/crates.io-index" 3047 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 3048 | dependencies = [ 3049 | "ppv-lite86", 3050 | "rand_core", 3051 | ] 3052 | 3053 | [[package]] 3054 | name = "rand_core" 3055 | version = "0.6.4" 3056 | source = "registry+https://github.com/rust-lang/crates.io-index" 3057 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 3058 | dependencies = [ 3059 | "getrandom", 3060 | ] 3061 | 3062 | [[package]] 3063 | name = "rand_xorshift" 3064 | version = "0.3.0" 3065 | source = "registry+https://github.com/rust-lang/crates.io-index" 3066 | checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" 3067 | dependencies = [ 3068 | "rand_core", 3069 | ] 3070 | 3071 | [[package]] 3072 | name = "rand_xoshiro" 3073 | version = "0.6.0" 3074 | source = "registry+https://github.com/rust-lang/crates.io-index" 3075 | checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" 3076 | dependencies = [ 3077 | "rand_core", 3078 | ] 3079 | 3080 | [[package]] 3081 | name = "rawpointer" 3082 | version = "0.2.1" 3083 | source = "registry+https://github.com/rust-lang/crates.io-index" 3084 | checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" 3085 | 3086 | [[package]] 3087 | name = "rayon" 3088 | version = "1.10.0" 3089 | source = "registry+https://github.com/rust-lang/crates.io-index" 3090 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 3091 | dependencies = [ 3092 | "either", 3093 | "rayon-core", 3094 | ] 3095 | 3096 | [[package]] 3097 | name = "rayon-core" 3098 | version = "1.12.1" 3099 | source = "registry+https://github.com/rust-lang/crates.io-index" 3100 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 3101 | dependencies = [ 3102 | "crossbeam-deque", 3103 | "crossbeam-utils", 3104 | ] 3105 | 3106 | [[package]] 3107 | name = "reblessive" 3108 | version = "0.3.5" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "4149deda5bd21e0f6ccaa2f907cd542541521dead5861bc51bebdf2af4acaf2a" 3111 | 3112 | [[package]] 3113 | name = "redox_syscall" 3114 | version = "0.5.3" 3115 | source = "registry+https://github.com/rust-lang/crates.io-index" 3116 | checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" 3117 | dependencies = [ 3118 | "bitflags 2.6.0", 3119 | ] 3120 | 3121 | [[package]] 3122 | name = "redox_users" 3123 | version = "0.4.5" 3124 | source = "registry+https://github.com/rust-lang/crates.io-index" 3125 | checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" 3126 | dependencies = [ 3127 | "getrandom", 3128 | "libredox", 3129 | "thiserror", 3130 | ] 3131 | 3132 | [[package]] 3133 | name = "ref-cast" 3134 | version = "1.0.23" 3135 | source = "registry+https://github.com/rust-lang/crates.io-index" 3136 | checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" 3137 | dependencies = [ 3138 | "ref-cast-impl", 3139 | ] 3140 | 3141 | [[package]] 3142 | name = "ref-cast-impl" 3143 | version = "1.0.23" 3144 | source = "registry+https://github.com/rust-lang/crates.io-index" 3145 | checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" 3146 | dependencies = [ 3147 | "proc-macro2", 3148 | "quote", 3149 | "syn 2.0.71", 3150 | ] 3151 | 3152 | [[package]] 3153 | name = "regex" 3154 | version = "1.10.5" 3155 | source = "registry+https://github.com/rust-lang/crates.io-index" 3156 | checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" 3157 | dependencies = [ 3158 | "aho-corasick", 3159 | "memchr", 3160 | "regex-automata", 3161 | "regex-syntax", 3162 | ] 3163 | 3164 | [[package]] 3165 | name = "regex-automata" 3166 | version = "0.4.7" 3167 | source = "registry+https://github.com/rust-lang/crates.io-index" 3168 | checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" 3169 | dependencies = [ 3170 | "aho-corasick", 3171 | "memchr", 3172 | "regex-syntax", 3173 | ] 3174 | 3175 | [[package]] 3176 | name = "regex-syntax" 3177 | version = "0.8.4" 3178 | source = "registry+https://github.com/rust-lang/crates.io-index" 3179 | checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" 3180 | 3181 | [[package]] 3182 | name = "rend" 3183 | version = "0.4.2" 3184 | source = "registry+https://github.com/rust-lang/crates.io-index" 3185 | checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" 3186 | dependencies = [ 3187 | "bytecheck", 3188 | ] 3189 | 3190 | [[package]] 3191 | name = "reqwest" 3192 | version = "0.11.27" 3193 | source = "registry+https://github.com/rust-lang/crates.io-index" 3194 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 3195 | dependencies = [ 3196 | "base64 0.21.7", 3197 | "bytes", 3198 | "encoding_rs", 3199 | "futures-core", 3200 | "futures-util", 3201 | "h2", 3202 | "http 0.2.12", 3203 | "http-body", 3204 | "hyper", 3205 | "hyper-rustls", 3206 | "hyper-tls", 3207 | "ipnet", 3208 | "js-sys", 3209 | "log", 3210 | "mime", 3211 | "mime_guess", 3212 | "native-tls", 3213 | "once_cell", 3214 | "percent-encoding", 3215 | "pin-project-lite", 3216 | "rustls 0.21.12", 3217 | "rustls-pemfile", 3218 | "serde", 3219 | "serde_json", 3220 | "serde_urlencoded", 3221 | "sync_wrapper", 3222 | "system-configuration", 3223 | "tokio", 3224 | "tokio-native-tls", 3225 | "tokio-rustls 0.24.1", 3226 | "tokio-util", 3227 | "tower-service", 3228 | "url", 3229 | "wasm-bindgen", 3230 | "wasm-bindgen-futures", 3231 | "wasm-streams", 3232 | "web-sys", 3233 | "webpki-roots 0.25.4", 3234 | "winreg", 3235 | ] 3236 | 3237 | [[package]] 3238 | name = "revision" 3239 | version = "0.7.1" 3240 | source = "registry+https://github.com/rust-lang/crates.io-index" 3241 | checksum = "4df61cfb2522f24fd6aa90ce3489c2c8660a181075e7bac3ae7bdf22287d238f" 3242 | dependencies = [ 3243 | "bincode", 3244 | "chrono", 3245 | "geo 0.26.0", 3246 | "regex", 3247 | "revision-derive", 3248 | "roaring", 3249 | "rust_decimal", 3250 | "serde", 3251 | "thiserror", 3252 | "uuid", 3253 | ] 3254 | 3255 | [[package]] 3256 | name = "revision-derive" 3257 | version = "0.7.0" 3258 | source = "registry+https://github.com/rust-lang/crates.io-index" 3259 | checksum = "854ff0b6794d4e0aab5e4486870941caefe9f258e63cad2f21b49a6302377c85" 3260 | dependencies = [ 3261 | "darling", 3262 | "proc-macro-error", 3263 | "proc-macro2", 3264 | "quote", 3265 | "syn 2.0.71", 3266 | ] 3267 | 3268 | [[package]] 3269 | name = "rfc6979" 3270 | version = "0.4.0" 3271 | source = "registry+https://github.com/rust-lang/crates.io-index" 3272 | checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 3273 | dependencies = [ 3274 | "hmac", 3275 | "subtle", 3276 | ] 3277 | 3278 | [[package]] 3279 | name = "ring" 3280 | version = "0.16.20" 3281 | source = "registry+https://github.com/rust-lang/crates.io-index" 3282 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 3283 | dependencies = [ 3284 | "cc", 3285 | "libc", 3286 | "once_cell", 3287 | "spin 0.5.2", 3288 | "untrusted 0.7.1", 3289 | "web-sys", 3290 | "winapi", 3291 | ] 3292 | 3293 | [[package]] 3294 | name = "ring" 3295 | version = "0.17.8" 3296 | source = "registry+https://github.com/rust-lang/crates.io-index" 3297 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 3298 | dependencies = [ 3299 | "cc", 3300 | "cfg-if", 3301 | "getrandom", 3302 | "libc", 3303 | "spin 0.9.8", 3304 | "untrusted 0.9.0", 3305 | "windows-sys 0.52.0", 3306 | ] 3307 | 3308 | [[package]] 3309 | name = "rkyv" 3310 | version = "0.7.44" 3311 | source = "registry+https://github.com/rust-lang/crates.io-index" 3312 | checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" 3313 | dependencies = [ 3314 | "bitvec", 3315 | "bytecheck", 3316 | "bytes", 3317 | "hashbrown 0.12.3", 3318 | "ptr_meta", 3319 | "rend", 3320 | "rkyv_derive", 3321 | "seahash", 3322 | "tinyvec", 3323 | "uuid", 3324 | ] 3325 | 3326 | [[package]] 3327 | name = "rkyv_derive" 3328 | version = "0.7.44" 3329 | source = "registry+https://github.com/rust-lang/crates.io-index" 3330 | checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" 3331 | dependencies = [ 3332 | "proc-macro2", 3333 | "quote", 3334 | "syn 1.0.109", 3335 | ] 3336 | 3337 | [[package]] 3338 | name = "rlp" 3339 | version = "0.5.2" 3340 | source = "registry+https://github.com/rust-lang/crates.io-index" 3341 | checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" 3342 | dependencies = [ 3343 | "bytes", 3344 | "rustc-hex", 3345 | ] 3346 | 3347 | [[package]] 3348 | name = "rmp" 3349 | version = "0.8.14" 3350 | source = "registry+https://github.com/rust-lang/crates.io-index" 3351 | checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" 3352 | dependencies = [ 3353 | "byteorder", 3354 | "num-traits", 3355 | "paste", 3356 | ] 3357 | 3358 | [[package]] 3359 | name = "rmp-serde" 3360 | version = "1.3.0" 3361 | source = "registry+https://github.com/rust-lang/crates.io-index" 3362 | checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" 3363 | dependencies = [ 3364 | "byteorder", 3365 | "rmp", 3366 | "serde", 3367 | ] 3368 | 3369 | [[package]] 3370 | name = "rmpv" 3371 | version = "1.3.0" 3372 | source = "registry+https://github.com/rust-lang/crates.io-index" 3373 | checksum = "58450723cd9ee93273ce44a20b6ec4efe17f8ed2e3631474387bfdecf18bb2a9" 3374 | dependencies = [ 3375 | "num-traits", 3376 | "rmp", 3377 | ] 3378 | 3379 | [[package]] 3380 | name = "roaring" 3381 | version = "0.10.6" 3382 | source = "registry+https://github.com/rust-lang/crates.io-index" 3383 | checksum = "8f4b84ba6e838ceb47b41de5194a60244fac43d9fe03b71dbe8c5a201081d6d1" 3384 | dependencies = [ 3385 | "bytemuck", 3386 | "byteorder", 3387 | "serde", 3388 | ] 3389 | 3390 | [[package]] 3391 | name = "robust" 3392 | version = "1.1.0" 3393 | source = "registry+https://github.com/rust-lang/crates.io-index" 3394 | checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" 3395 | 3396 | [[package]] 3397 | name = "rocksdb" 3398 | version = "0.21.0" 3399 | source = "registry+https://github.com/rust-lang/crates.io-index" 3400 | checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe" 3401 | dependencies = [ 3402 | "libc", 3403 | "librocksdb-sys", 3404 | ] 3405 | 3406 | [[package]] 3407 | name = "rsa" 3408 | version = "0.9.6" 3409 | source = "registry+https://github.com/rust-lang/crates.io-index" 3410 | checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" 3411 | dependencies = [ 3412 | "const-oid", 3413 | "digest 0.10.7", 3414 | "num-bigint-dig", 3415 | "num-integer", 3416 | "num-traits", 3417 | "pkcs1", 3418 | "pkcs8", 3419 | "rand_core", 3420 | "signature", 3421 | "spki", 3422 | "subtle", 3423 | "zeroize", 3424 | ] 3425 | 3426 | [[package]] 3427 | name = "rstar" 3428 | version = "0.11.0" 3429 | source = "registry+https://github.com/rust-lang/crates.io-index" 3430 | checksum = "73111312eb7a2287d229f06c00ff35b51ddee180f017ab6dec1f69d62ac098d6" 3431 | dependencies = [ 3432 | "heapless", 3433 | "num-traits", 3434 | "smallvec", 3435 | ] 3436 | 3437 | [[package]] 3438 | name = "ruint" 3439 | version = "1.12.3" 3440 | source = "registry+https://github.com/rust-lang/crates.io-index" 3441 | checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" 3442 | dependencies = [ 3443 | "alloy-rlp", 3444 | "ark-ff 0.3.0", 3445 | "ark-ff 0.4.2", 3446 | "bytes", 3447 | "fastrlp", 3448 | "num-bigint", 3449 | "num-traits", 3450 | "parity-scale-codec", 3451 | "primitive-types", 3452 | "proptest", 3453 | "rand", 3454 | "rlp", 3455 | "ruint-macro", 3456 | "serde", 3457 | "valuable", 3458 | "zeroize", 3459 | ] 3460 | 3461 | [[package]] 3462 | name = "ruint-macro" 3463 | version = "1.2.1" 3464 | source = "registry+https://github.com/rust-lang/crates.io-index" 3465 | checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" 3466 | 3467 | [[package]] 3468 | name = "rust-stemmers" 3469 | version = "1.2.0" 3470 | source = "registry+https://github.com/rust-lang/crates.io-index" 3471 | checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54" 3472 | dependencies = [ 3473 | "serde", 3474 | "serde_derive", 3475 | ] 3476 | 3477 | [[package]] 3478 | name = "rust_decimal" 3479 | version = "1.35.0" 3480 | source = "registry+https://github.com/rust-lang/crates.io-index" 3481 | checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" 3482 | dependencies = [ 3483 | "arrayvec", 3484 | "borsh", 3485 | "bytes", 3486 | "num-traits", 3487 | "rand", 3488 | "rkyv", 3489 | "serde", 3490 | "serde_json", 3491 | ] 3492 | 3493 | [[package]] 3494 | name = "rustc-demangle" 3495 | version = "0.1.24" 3496 | source = "registry+https://github.com/rust-lang/crates.io-index" 3497 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 3498 | 3499 | [[package]] 3500 | name = "rustc-hash" 3501 | version = "1.1.0" 3502 | source = "registry+https://github.com/rust-lang/crates.io-index" 3503 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 3504 | 3505 | [[package]] 3506 | name = "rustc-hex" 3507 | version = "2.1.0" 3508 | source = "registry+https://github.com/rust-lang/crates.io-index" 3509 | checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" 3510 | 3511 | [[package]] 3512 | name = "rustc_lexer" 3513 | version = "0.1.0" 3514 | source = "registry+https://github.com/rust-lang/crates.io-index" 3515 | checksum = "c86aae0c77166108c01305ee1a36a1e77289d7dc6ca0a3cd91ff4992de2d16a5" 3516 | dependencies = [ 3517 | "unicode-xid", 3518 | ] 3519 | 3520 | [[package]] 3521 | name = "rustc_version" 3522 | version = "0.3.3" 3523 | source = "registry+https://github.com/rust-lang/crates.io-index" 3524 | checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" 3525 | dependencies = [ 3526 | "semver 0.11.0", 3527 | ] 3528 | 3529 | [[package]] 3530 | name = "rustc_version" 3531 | version = "0.4.0" 3532 | source = "registry+https://github.com/rust-lang/crates.io-index" 3533 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 3534 | dependencies = [ 3535 | "semver 1.0.23", 3536 | ] 3537 | 3538 | [[package]] 3539 | name = "rustix" 3540 | version = "0.38.34" 3541 | source = "registry+https://github.com/rust-lang/crates.io-index" 3542 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 3543 | dependencies = [ 3544 | "bitflags 2.6.0", 3545 | "errno", 3546 | "libc", 3547 | "linux-raw-sys", 3548 | "windows-sys 0.52.0", 3549 | ] 3550 | 3551 | [[package]] 3552 | name = "rustls" 3553 | version = "0.21.12" 3554 | source = "registry+https://github.com/rust-lang/crates.io-index" 3555 | checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 3556 | dependencies = [ 3557 | "log", 3558 | "ring 0.17.8", 3559 | "rustls-webpki 0.101.7", 3560 | "sct", 3561 | ] 3562 | 3563 | [[package]] 3564 | name = "rustls" 3565 | version = "0.22.4" 3566 | source = "registry+https://github.com/rust-lang/crates.io-index" 3567 | checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" 3568 | dependencies = [ 3569 | "log", 3570 | "ring 0.17.8", 3571 | "rustls-pki-types", 3572 | "rustls-webpki 0.102.5", 3573 | "subtle", 3574 | "zeroize", 3575 | ] 3576 | 3577 | [[package]] 3578 | name = "rustls-pemfile" 3579 | version = "1.0.4" 3580 | source = "registry+https://github.com/rust-lang/crates.io-index" 3581 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 3582 | dependencies = [ 3583 | "base64 0.21.7", 3584 | ] 3585 | 3586 | [[package]] 3587 | name = "rustls-pki-types" 3588 | version = "1.7.0" 3589 | source = "registry+https://github.com/rust-lang/crates.io-index" 3590 | checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" 3591 | 3592 | [[package]] 3593 | name = "rustls-webpki" 3594 | version = "0.101.7" 3595 | source = "registry+https://github.com/rust-lang/crates.io-index" 3596 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 3597 | dependencies = [ 3598 | "ring 0.17.8", 3599 | "untrusted 0.9.0", 3600 | ] 3601 | 3602 | [[package]] 3603 | name = "rustls-webpki" 3604 | version = "0.102.5" 3605 | source = "registry+https://github.com/rust-lang/crates.io-index" 3606 | checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" 3607 | dependencies = [ 3608 | "ring 0.17.8", 3609 | "rustls-pki-types", 3610 | "untrusted 0.9.0", 3611 | ] 3612 | 3613 | [[package]] 3614 | name = "rustversion" 3615 | version = "1.0.17" 3616 | source = "registry+https://github.com/rust-lang/crates.io-index" 3617 | checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" 3618 | 3619 | [[package]] 3620 | name = "rusty-fork" 3621 | version = "0.3.0" 3622 | source = "registry+https://github.com/rust-lang/crates.io-index" 3623 | checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" 3624 | dependencies = [ 3625 | "fnv", 3626 | "quick-error", 3627 | "tempfile", 3628 | "wait-timeout", 3629 | ] 3630 | 3631 | [[package]] 3632 | name = "ryu" 3633 | version = "1.0.18" 3634 | source = "registry+https://github.com/rust-lang/crates.io-index" 3635 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 3636 | 3637 | [[package]] 3638 | name = "salsa20" 3639 | version = "0.10.2" 3640 | source = "registry+https://github.com/rust-lang/crates.io-index" 3641 | checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" 3642 | dependencies = [ 3643 | "cipher", 3644 | ] 3645 | 3646 | [[package]] 3647 | name = "same-file" 3648 | version = "1.0.6" 3649 | source = "registry+https://github.com/rust-lang/crates.io-index" 3650 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3651 | dependencies = [ 3652 | "winapi-util", 3653 | ] 3654 | 3655 | [[package]] 3656 | name = "schannel" 3657 | version = "0.1.23" 3658 | source = "registry+https://github.com/rust-lang/crates.io-index" 3659 | checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 3660 | dependencies = [ 3661 | "windows-sys 0.52.0", 3662 | ] 3663 | 3664 | [[package]] 3665 | name = "scopeguard" 3666 | version = "1.2.0" 3667 | source = "registry+https://github.com/rust-lang/crates.io-index" 3668 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3669 | 3670 | [[package]] 3671 | name = "scrypt" 3672 | version = "0.11.0" 3673 | source = "registry+https://github.com/rust-lang/crates.io-index" 3674 | checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" 3675 | dependencies = [ 3676 | "password-hash", 3677 | "pbkdf2", 3678 | "salsa20", 3679 | "sha2", 3680 | ] 3681 | 3682 | [[package]] 3683 | name = "sct" 3684 | version = "0.7.1" 3685 | source = "registry+https://github.com/rust-lang/crates.io-index" 3686 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 3687 | dependencies = [ 3688 | "ring 0.17.8", 3689 | "untrusted 0.9.0", 3690 | ] 3691 | 3692 | [[package]] 3693 | name = "seahash" 3694 | version = "4.1.0" 3695 | source = "registry+https://github.com/rust-lang/crates.io-index" 3696 | checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" 3697 | 3698 | [[package]] 3699 | name = "sec1" 3700 | version = "0.7.3" 3701 | source = "registry+https://github.com/rust-lang/crates.io-index" 3702 | checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 3703 | dependencies = [ 3704 | "base16ct", 3705 | "der", 3706 | "generic-array", 3707 | "pkcs8", 3708 | "subtle", 3709 | "zeroize", 3710 | ] 3711 | 3712 | [[package]] 3713 | name = "secrecy" 3714 | version = "0.8.0" 3715 | source = "registry+https://github.com/rust-lang/crates.io-index" 3716 | checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" 3717 | dependencies = [ 3718 | "serde", 3719 | "zeroize", 3720 | ] 3721 | 3722 | [[package]] 3723 | name = "security-framework" 3724 | version = "2.11.1" 3725 | source = "registry+https://github.com/rust-lang/crates.io-index" 3726 | checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 3727 | dependencies = [ 3728 | "bitflags 2.6.0", 3729 | "core-foundation", 3730 | "core-foundation-sys", 3731 | "libc", 3732 | "security-framework-sys", 3733 | ] 3734 | 3735 | [[package]] 3736 | name = "security-framework-sys" 3737 | version = "2.11.1" 3738 | source = "registry+https://github.com/rust-lang/crates.io-index" 3739 | checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" 3740 | dependencies = [ 3741 | "core-foundation-sys", 3742 | "libc", 3743 | ] 3744 | 3745 | [[package]] 3746 | name = "semver" 3747 | version = "0.11.0" 3748 | source = "registry+https://github.com/rust-lang/crates.io-index" 3749 | checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" 3750 | dependencies = [ 3751 | "semver-parser", 3752 | ] 3753 | 3754 | [[package]] 3755 | name = "semver" 3756 | version = "1.0.23" 3757 | source = "registry+https://github.com/rust-lang/crates.io-index" 3758 | checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" 3759 | dependencies = [ 3760 | "serde", 3761 | ] 3762 | 3763 | [[package]] 3764 | name = "semver-parser" 3765 | version = "0.10.2" 3766 | source = "registry+https://github.com/rust-lang/crates.io-index" 3767 | checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" 3768 | dependencies = [ 3769 | "pest", 3770 | ] 3771 | 3772 | [[package]] 3773 | name = "send_wrapper" 3774 | version = "0.6.0" 3775 | source = "registry+https://github.com/rust-lang/crates.io-index" 3776 | checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 3777 | 3778 | [[package]] 3779 | name = "serde" 3780 | version = "1.0.204" 3781 | source = "registry+https://github.com/rust-lang/crates.io-index" 3782 | checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" 3783 | dependencies = [ 3784 | "serde_derive", 3785 | ] 3786 | 3787 | [[package]] 3788 | name = "serde_cow" 3789 | version = "0.1.2" 3790 | source = "registry+https://github.com/rust-lang/crates.io-index" 3791 | checksum = "1e7bbbec7196bfde255ab54b65e34087c0849629280028238e67ee25d6a4b7da" 3792 | dependencies = [ 3793 | "serde", 3794 | ] 3795 | 3796 | [[package]] 3797 | name = "serde_derive" 3798 | version = "1.0.204" 3799 | source = "registry+https://github.com/rust-lang/crates.io-index" 3800 | checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" 3801 | dependencies = [ 3802 | "proc-macro2", 3803 | "quote", 3804 | "syn 2.0.71", 3805 | ] 3806 | 3807 | [[package]] 3808 | name = "serde_json" 3809 | version = "1.0.120" 3810 | source = "registry+https://github.com/rust-lang/crates.io-index" 3811 | checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" 3812 | dependencies = [ 3813 | "indexmap 2.2.6", 3814 | "itoa", 3815 | "ryu", 3816 | "serde", 3817 | ] 3818 | 3819 | [[package]] 3820 | name = "serde_urlencoded" 3821 | version = "0.7.1" 3822 | source = "registry+https://github.com/rust-lang/crates.io-index" 3823 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3824 | dependencies = [ 3825 | "form_urlencoded", 3826 | "itoa", 3827 | "ryu", 3828 | "serde", 3829 | ] 3830 | 3831 | [[package]] 3832 | name = "serde_with" 3833 | version = "3.9.0" 3834 | source = "registry+https://github.com/rust-lang/crates.io-index" 3835 | checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" 3836 | dependencies = [ 3837 | "base64 0.22.1", 3838 | "chrono", 3839 | "hex", 3840 | "indexmap 1.9.3", 3841 | "indexmap 2.2.6", 3842 | "serde", 3843 | "serde_derive", 3844 | "serde_json", 3845 | "serde_with_macros", 3846 | "time", 3847 | ] 3848 | 3849 | [[package]] 3850 | name = "serde_with_macros" 3851 | version = "3.9.0" 3852 | source = "registry+https://github.com/rust-lang/crates.io-index" 3853 | checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" 3854 | dependencies = [ 3855 | "darling", 3856 | "proc-macro2", 3857 | "quote", 3858 | "syn 2.0.71", 3859 | ] 3860 | 3861 | [[package]] 3862 | name = "serenity" 3863 | version = "0.12.2" 3864 | source = "registry+https://github.com/rust-lang/crates.io-index" 3865 | checksum = "880a04106592d0a8f5bdacb1d935889bfbccb4a14f7074984d9cd857235d34ac" 3866 | dependencies = [ 3867 | "arrayvec", 3868 | "async-trait", 3869 | "base64 0.22.1", 3870 | "bitflags 2.6.0", 3871 | "bytes", 3872 | "chrono", 3873 | "dashmap", 3874 | "flate2", 3875 | "futures", 3876 | "fxhash", 3877 | "mime_guess", 3878 | "parking_lot", 3879 | "percent-encoding", 3880 | "reqwest", 3881 | "secrecy", 3882 | "serde", 3883 | "serde_cow", 3884 | "serde_json", 3885 | "time", 3886 | "tokio", 3887 | "tokio-tungstenite 0.21.0", 3888 | "tracing", 3889 | "typemap_rev", 3890 | "typesize", 3891 | "url", 3892 | ] 3893 | 3894 | [[package]] 3895 | name = "sha1" 3896 | version = "0.10.6" 3897 | source = "registry+https://github.com/rust-lang/crates.io-index" 3898 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3899 | dependencies = [ 3900 | "cfg-if", 3901 | "cpufeatures", 3902 | "digest 0.10.7", 3903 | ] 3904 | 3905 | [[package]] 3906 | name = "sha2" 3907 | version = "0.10.8" 3908 | source = "registry+https://github.com/rust-lang/crates.io-index" 3909 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 3910 | dependencies = [ 3911 | "cfg-if", 3912 | "cpufeatures", 3913 | "digest 0.10.7", 3914 | ] 3915 | 3916 | [[package]] 3917 | name = "sha3-asm" 3918 | version = "0.1.1" 3919 | source = "registry+https://github.com/rust-lang/crates.io-index" 3920 | checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40" 3921 | dependencies = [ 3922 | "cc", 3923 | "cfg-if", 3924 | ] 3925 | 3926 | [[package]] 3927 | name = "shlex" 3928 | version = "1.3.0" 3929 | source = "registry+https://github.com/rust-lang/crates.io-index" 3930 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3931 | 3932 | [[package]] 3933 | name = "signature" 3934 | version = "2.2.0" 3935 | source = "registry+https://github.com/rust-lang/crates.io-index" 3936 | checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 3937 | dependencies = [ 3938 | "digest 0.10.7", 3939 | "rand_core", 3940 | ] 3941 | 3942 | [[package]] 3943 | name = "simdutf8" 3944 | version = "0.1.4" 3945 | source = "registry+https://github.com/rust-lang/crates.io-index" 3946 | checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" 3947 | 3948 | [[package]] 3949 | name = "simple_asn1" 3950 | version = "0.6.2" 3951 | source = "registry+https://github.com/rust-lang/crates.io-index" 3952 | checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" 3953 | dependencies = [ 3954 | "num-bigint", 3955 | "num-traits", 3956 | "thiserror", 3957 | "time", 3958 | ] 3959 | 3960 | [[package]] 3961 | name = "siphasher" 3962 | version = "0.3.11" 3963 | source = "registry+https://github.com/rust-lang/crates.io-index" 3964 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 3965 | 3966 | [[package]] 3967 | name = "skeptic" 3968 | version = "0.13.7" 3969 | source = "registry+https://github.com/rust-lang/crates.io-index" 3970 | checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" 3971 | dependencies = [ 3972 | "bytecount", 3973 | "cargo_metadata", 3974 | "error-chain", 3975 | "glob", 3976 | "pulldown-cmark", 3977 | "tempfile", 3978 | "walkdir", 3979 | ] 3980 | 3981 | [[package]] 3982 | name = "slab" 3983 | version = "0.4.9" 3984 | source = "registry+https://github.com/rust-lang/crates.io-index" 3985 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 3986 | dependencies = [ 3987 | "autocfg", 3988 | ] 3989 | 3990 | [[package]] 3991 | name = "smallvec" 3992 | version = "1.13.2" 3993 | source = "registry+https://github.com/rust-lang/crates.io-index" 3994 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 3995 | 3996 | [[package]] 3997 | name = "smol_str" 3998 | version = "0.2.2" 3999 | source = "registry+https://github.com/rust-lang/crates.io-index" 4000 | checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 4001 | dependencies = [ 4002 | "serde", 4003 | ] 4004 | 4005 | [[package]] 4006 | name = "snafu" 4007 | version = "0.7.5" 4008 | source = "registry+https://github.com/rust-lang/crates.io-index" 4009 | checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" 4010 | dependencies = [ 4011 | "doc-comment", 4012 | "snafu-derive", 4013 | ] 4014 | 4015 | [[package]] 4016 | name = "snafu-derive" 4017 | version = "0.7.5" 4018 | source = "registry+https://github.com/rust-lang/crates.io-index" 4019 | checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" 4020 | dependencies = [ 4021 | "heck", 4022 | "proc-macro2", 4023 | "quote", 4024 | "syn 1.0.109", 4025 | ] 4026 | 4027 | [[package]] 4028 | name = "snap" 4029 | version = "1.1.1" 4030 | source = "registry+https://github.com/rust-lang/crates.io-index" 4031 | checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" 4032 | 4033 | [[package]] 4034 | name = "socket2" 4035 | version = "0.5.7" 4036 | source = "registry+https://github.com/rust-lang/crates.io-index" 4037 | checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 4038 | dependencies = [ 4039 | "libc", 4040 | "windows-sys 0.52.0", 4041 | ] 4042 | 4043 | [[package]] 4044 | name = "spade" 4045 | version = "2.9.0" 4046 | source = "registry+https://github.com/rust-lang/crates.io-index" 4047 | checksum = "9f4ec45f91925e2c9ab3b6a857ee9ed36916990df76a1c475d783a328e247cc8" 4048 | dependencies = [ 4049 | "hashbrown 0.14.5", 4050 | "num-traits", 4051 | "robust", 4052 | "smallvec", 4053 | ] 4054 | 4055 | [[package]] 4056 | name = "spin" 4057 | version = "0.5.2" 4058 | source = "registry+https://github.com/rust-lang/crates.io-index" 4059 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 4060 | 4061 | [[package]] 4062 | name = "spin" 4063 | version = "0.9.8" 4064 | source = "registry+https://github.com/rust-lang/crates.io-index" 4065 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4066 | dependencies = [ 4067 | "lock_api", 4068 | ] 4069 | 4070 | [[package]] 4071 | name = "spki" 4072 | version = "0.7.3" 4073 | source = "registry+https://github.com/rust-lang/crates.io-index" 4074 | checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 4075 | dependencies = [ 4076 | "base64ct", 4077 | "der", 4078 | ] 4079 | 4080 | [[package]] 4081 | name = "stable_deref_trait" 4082 | version = "1.2.0" 4083 | source = "registry+https://github.com/rust-lang/crates.io-index" 4084 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 4085 | 4086 | [[package]] 4087 | name = "stacker" 4088 | version = "0.1.15" 4089 | source = "registry+https://github.com/rust-lang/crates.io-index" 4090 | checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" 4091 | dependencies = [ 4092 | "cc", 4093 | "cfg-if", 4094 | "libc", 4095 | "psm", 4096 | "winapi", 4097 | ] 4098 | 4099 | [[package]] 4100 | name = "static_assertions" 4101 | version = "1.1.0" 4102 | source = "registry+https://github.com/rust-lang/crates.io-index" 4103 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4104 | 4105 | [[package]] 4106 | name = "storekey" 4107 | version = "0.5.0" 4108 | source = "registry+https://github.com/rust-lang/crates.io-index" 4109 | checksum = "43c42833834a5d23b344f71d87114e0cc9994766a5c42938f4b50e7b2aef85b2" 4110 | dependencies = [ 4111 | "byteorder", 4112 | "memchr", 4113 | "serde", 4114 | "thiserror", 4115 | ] 4116 | 4117 | [[package]] 4118 | name = "string_cache" 4119 | version = "0.8.7" 4120 | source = "registry+https://github.com/rust-lang/crates.io-index" 4121 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 4122 | dependencies = [ 4123 | "new_debug_unreachable", 4124 | "once_cell", 4125 | "parking_lot", 4126 | "phf_shared", 4127 | "precomputed-hash", 4128 | ] 4129 | 4130 | [[package]] 4131 | name = "strsim" 4132 | version = "0.11.1" 4133 | source = "registry+https://github.com/rust-lang/crates.io-index" 4134 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 4135 | 4136 | [[package]] 4137 | name = "subtle" 4138 | version = "2.6.1" 4139 | source = "registry+https://github.com/rust-lang/crates.io-index" 4140 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 4141 | 4142 | [[package]] 4143 | name = "surrealdb" 4144 | version = "1.5.4" 4145 | source = "registry+https://github.com/rust-lang/crates.io-index" 4146 | checksum = "430b7d33686ece41796236416707398574da147f78c6b4e5dc9a10592907029b" 4147 | dependencies = [ 4148 | "async-channel", 4149 | "bincode", 4150 | "chrono", 4151 | "dmp", 4152 | "flume", 4153 | "futures", 4154 | "futures-concurrency", 4155 | "geo 0.27.0", 4156 | "indexmap 2.2.6", 4157 | "once_cell", 4158 | "path-clean", 4159 | "pharos", 4160 | "reqwest", 4161 | "revision", 4162 | "ring 0.17.8", 4163 | "rust_decimal", 4164 | "rustls 0.21.12", 4165 | "semver 1.0.23", 4166 | "serde", 4167 | "serde_json", 4168 | "surrealdb-core 1.5.1", 4169 | "surrealdb-core 2.0.0-1.5.4", 4170 | "thiserror", 4171 | "tokio", 4172 | "tokio-tungstenite 0.20.1", 4173 | "tracing", 4174 | "trice", 4175 | "url", 4176 | "uuid", 4177 | "wasm-bindgen-futures", 4178 | "wasmtimer", 4179 | "ws_stream_wasm", 4180 | ] 4181 | 4182 | [[package]] 4183 | name = "surrealdb-core" 4184 | version = "1.5.1" 4185 | source = "registry+https://github.com/rust-lang/crates.io-index" 4186 | checksum = "c3e0c2ab384286d025809460c65e6e24aef7919a6bfb98e961828d687560c2b8" 4187 | dependencies = [ 4188 | "addr", 4189 | "any_ascii", 4190 | "argon2", 4191 | "async-channel", 4192 | "async-executor", 4193 | "async-recursion", 4194 | "base64 0.21.7", 4195 | "bcrypt", 4196 | "bincode", 4197 | "bytes", 4198 | "cedar-policy", 4199 | "chrono", 4200 | "deunicode", 4201 | "dmp", 4202 | "echodb", 4203 | "fst", 4204 | "futures", 4205 | "fuzzy-matcher", 4206 | "geo 0.27.0", 4207 | "geo-types", 4208 | "hex", 4209 | "ipnet", 4210 | "lexicmp", 4211 | "md-5", 4212 | "nanoid", 4213 | "nom", 4214 | "num_cpus", 4215 | "object_store", 4216 | "once_cell", 4217 | "pbkdf2", 4218 | "pharos", 4219 | "pin-project-lite", 4220 | "quick_cache", 4221 | "radix_trie", 4222 | "rand", 4223 | "regex", 4224 | "revision", 4225 | "ring 0.17.8", 4226 | "roaring", 4227 | "rocksdb", 4228 | "rust-stemmers", 4229 | "rust_decimal", 4230 | "scrypt", 4231 | "semver 1.0.23", 4232 | "serde", 4233 | "serde_json", 4234 | "sha1", 4235 | "sha2", 4236 | "snap", 4237 | "storekey", 4238 | "surrealdb-derive", 4239 | "surrealdb-jsonwebtoken", 4240 | "thiserror", 4241 | "tokio", 4242 | "tracing", 4243 | "trice", 4244 | "ulid", 4245 | "url", 4246 | "uuid", 4247 | "wasm-bindgen-futures", 4248 | "wasmtimer", 4249 | "ws_stream_wasm", 4250 | ] 4251 | 4252 | [[package]] 4253 | name = "surrealdb-core" 4254 | version = "2.0.0-1.5.4" 4255 | source = "registry+https://github.com/rust-lang/crates.io-index" 4256 | checksum = "4da0070ee77cc4a6938000a365c3c2cf0233708d2ac16feb680a6d90a3535025" 4257 | dependencies = [ 4258 | "addr", 4259 | "ahash 0.8.11", 4260 | "any_ascii", 4261 | "argon2", 4262 | "async-channel", 4263 | "async-executor", 4264 | "async-recursion", 4265 | "base64 0.21.7", 4266 | "bcrypt", 4267 | "bincode", 4268 | "bytes", 4269 | "cedar-policy", 4270 | "chrono", 4271 | "ciborium", 4272 | "dashmap", 4273 | "deunicode", 4274 | "dmp", 4275 | "echodb", 4276 | "ext-sort", 4277 | "fst", 4278 | "futures", 4279 | "fuzzy-matcher", 4280 | "geo 0.27.0", 4281 | "geo-types", 4282 | "hashbrown 0.14.5", 4283 | "hex", 4284 | "ipnet", 4285 | "lexicmp", 4286 | "linfa-linalg", 4287 | "md-5", 4288 | "nanoid", 4289 | "ndarray", 4290 | "ndarray-stats", 4291 | "nom", 4292 | "num-traits", 4293 | "num_cpus", 4294 | "object_store", 4295 | "once_cell", 4296 | "pbkdf2", 4297 | "pharos", 4298 | "pin-project-lite", 4299 | "quick_cache", 4300 | "radix_trie", 4301 | "rand", 4302 | "reblessive", 4303 | "regex", 4304 | "revision", 4305 | "ring 0.17.8", 4306 | "rmpv", 4307 | "roaring", 4308 | "rocksdb", 4309 | "rust-stemmers", 4310 | "rust_decimal", 4311 | "scrypt", 4312 | "semver 1.0.23", 4313 | "serde", 4314 | "serde_json", 4315 | "sha1", 4316 | "sha2", 4317 | "snap", 4318 | "storekey", 4319 | "surrealdb-derive", 4320 | "surrealdb-jsonwebtoken", 4321 | "tempfile", 4322 | "thiserror", 4323 | "tokio", 4324 | "tracing", 4325 | "trice", 4326 | "ulid", 4327 | "url", 4328 | "uuid", 4329 | "wasm-bindgen-futures", 4330 | "wasmtimer", 4331 | "ws_stream_wasm", 4332 | ] 4333 | 4334 | [[package]] 4335 | name = "surrealdb-derive" 4336 | version = "0.12.0" 4337 | source = "registry+https://github.com/rust-lang/crates.io-index" 4338 | checksum = "aacdb4c58b9ebef0291310afcd63af0012d85610d361f3785952c61b6f1dddf4" 4339 | dependencies = [ 4340 | "quote", 4341 | "syn 1.0.109", 4342 | ] 4343 | 4344 | [[package]] 4345 | name = "surrealdb-jsonwebtoken" 4346 | version = "8.3.0-surreal.1" 4347 | source = "registry+https://github.com/rust-lang/crates.io-index" 4348 | checksum = "02d4f759c65df8a8cf2d83c99db7fdd3ae5b8fff05fa7fe69a8612f29dd5f99b" 4349 | dependencies = [ 4350 | "base64 0.21.7", 4351 | "getrandom", 4352 | "hmac", 4353 | "pem", 4354 | "rand", 4355 | "ring 0.16.20", 4356 | "rsa", 4357 | "serde", 4358 | "serde_json", 4359 | "sha2", 4360 | "simple_asn1", 4361 | ] 4362 | 4363 | [[package]] 4364 | name = "syn" 4365 | version = "1.0.109" 4366 | source = "registry+https://github.com/rust-lang/crates.io-index" 4367 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4368 | dependencies = [ 4369 | "proc-macro2", 4370 | "quote", 4371 | "unicode-ident", 4372 | ] 4373 | 4374 | [[package]] 4375 | name = "syn" 4376 | version = "2.0.71" 4377 | source = "registry+https://github.com/rust-lang/crates.io-index" 4378 | checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" 4379 | dependencies = [ 4380 | "proc-macro2", 4381 | "quote", 4382 | "unicode-ident", 4383 | ] 4384 | 4385 | [[package]] 4386 | name = "syn_derive" 4387 | version = "0.1.8" 4388 | source = "registry+https://github.com/rust-lang/crates.io-index" 4389 | checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" 4390 | dependencies = [ 4391 | "proc-macro-error", 4392 | "proc-macro2", 4393 | "quote", 4394 | "syn 2.0.71", 4395 | ] 4396 | 4397 | [[package]] 4398 | name = "sync_wrapper" 4399 | version = "0.1.2" 4400 | source = "registry+https://github.com/rust-lang/crates.io-index" 4401 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 4402 | 4403 | [[package]] 4404 | name = "system-configuration" 4405 | version = "0.5.1" 4406 | source = "registry+https://github.com/rust-lang/crates.io-index" 4407 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 4408 | dependencies = [ 4409 | "bitflags 1.3.2", 4410 | "core-foundation", 4411 | "system-configuration-sys", 4412 | ] 4413 | 4414 | [[package]] 4415 | name = "system-configuration-sys" 4416 | version = "0.5.0" 4417 | source = "registry+https://github.com/rust-lang/crates.io-index" 4418 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 4419 | dependencies = [ 4420 | "core-foundation-sys", 4421 | "libc", 4422 | ] 4423 | 4424 | [[package]] 4425 | name = "tagptr" 4426 | version = "0.2.0" 4427 | source = "registry+https://github.com/rust-lang/crates.io-index" 4428 | checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 4429 | 4430 | [[package]] 4431 | name = "tap" 4432 | version = "1.0.1" 4433 | source = "registry+https://github.com/rust-lang/crates.io-index" 4434 | checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 4435 | 4436 | [[package]] 4437 | name = "tempfile" 4438 | version = "3.10.1" 4439 | source = "registry+https://github.com/rust-lang/crates.io-index" 4440 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 4441 | dependencies = [ 4442 | "cfg-if", 4443 | "fastrand 2.1.0", 4444 | "rustix", 4445 | "windows-sys 0.52.0", 4446 | ] 4447 | 4448 | [[package]] 4449 | name = "term" 4450 | version = "0.7.0" 4451 | source = "registry+https://github.com/rust-lang/crates.io-index" 4452 | checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" 4453 | dependencies = [ 4454 | "dirs-next", 4455 | "rustversion", 4456 | "winapi", 4457 | ] 4458 | 4459 | [[package]] 4460 | name = "thiserror" 4461 | version = "1.0.63" 4462 | source = "registry+https://github.com/rust-lang/crates.io-index" 4463 | checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" 4464 | dependencies = [ 4465 | "thiserror-impl", 4466 | ] 4467 | 4468 | [[package]] 4469 | name = "thiserror-impl" 4470 | version = "1.0.63" 4471 | source = "registry+https://github.com/rust-lang/crates.io-index" 4472 | checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" 4473 | dependencies = [ 4474 | "proc-macro2", 4475 | "quote", 4476 | "syn 2.0.71", 4477 | ] 4478 | 4479 | [[package]] 4480 | name = "thread_local" 4481 | version = "1.1.8" 4482 | source = "registry+https://github.com/rust-lang/crates.io-index" 4483 | checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 4484 | dependencies = [ 4485 | "cfg-if", 4486 | "once_cell", 4487 | ] 4488 | 4489 | [[package]] 4490 | name = "time" 4491 | version = "0.3.36" 4492 | source = "registry+https://github.com/rust-lang/crates.io-index" 4493 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 4494 | dependencies = [ 4495 | "deranged", 4496 | "itoa", 4497 | "num-conv", 4498 | "powerfmt", 4499 | "serde", 4500 | "time-core", 4501 | "time-macros", 4502 | ] 4503 | 4504 | [[package]] 4505 | name = "time-core" 4506 | version = "0.1.2" 4507 | source = "registry+https://github.com/rust-lang/crates.io-index" 4508 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 4509 | 4510 | [[package]] 4511 | name = "time-macros" 4512 | version = "0.2.18" 4513 | source = "registry+https://github.com/rust-lang/crates.io-index" 4514 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 4515 | dependencies = [ 4516 | "num-conv", 4517 | "time-core", 4518 | ] 4519 | 4520 | [[package]] 4521 | name = "tiny-keccak" 4522 | version = "2.0.2" 4523 | source = "registry+https://github.com/rust-lang/crates.io-index" 4524 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 4525 | dependencies = [ 4526 | "crunchy", 4527 | ] 4528 | 4529 | [[package]] 4530 | name = "tinyvec" 4531 | version = "1.8.0" 4532 | source = "registry+https://github.com/rust-lang/crates.io-index" 4533 | checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" 4534 | dependencies = [ 4535 | "tinyvec_macros", 4536 | ] 4537 | 4538 | [[package]] 4539 | name = "tinyvec_macros" 4540 | version = "0.1.1" 4541 | source = "registry+https://github.com/rust-lang/crates.io-index" 4542 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 4543 | 4544 | [[package]] 4545 | name = "tokio" 4546 | version = "1.38.1" 4547 | source = "registry+https://github.com/rust-lang/crates.io-index" 4548 | checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" 4549 | dependencies = [ 4550 | "backtrace", 4551 | "bytes", 4552 | "libc", 4553 | "mio", 4554 | "num_cpus", 4555 | "pin-project-lite", 4556 | "socket2", 4557 | "tokio-macros", 4558 | "windows-sys 0.48.0", 4559 | ] 4560 | 4561 | [[package]] 4562 | name = "tokio-macros" 4563 | version = "2.3.0" 4564 | source = "registry+https://github.com/rust-lang/crates.io-index" 4565 | checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" 4566 | dependencies = [ 4567 | "proc-macro2", 4568 | "quote", 4569 | "syn 2.0.71", 4570 | ] 4571 | 4572 | [[package]] 4573 | name = "tokio-native-tls" 4574 | version = "0.3.1" 4575 | source = "registry+https://github.com/rust-lang/crates.io-index" 4576 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 4577 | dependencies = [ 4578 | "native-tls", 4579 | "tokio", 4580 | ] 4581 | 4582 | [[package]] 4583 | name = "tokio-rustls" 4584 | version = "0.24.1" 4585 | source = "registry+https://github.com/rust-lang/crates.io-index" 4586 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 4587 | dependencies = [ 4588 | "rustls 0.21.12", 4589 | "tokio", 4590 | ] 4591 | 4592 | [[package]] 4593 | name = "tokio-rustls" 4594 | version = "0.25.0" 4595 | source = "registry+https://github.com/rust-lang/crates.io-index" 4596 | checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" 4597 | dependencies = [ 4598 | "rustls 0.22.4", 4599 | "rustls-pki-types", 4600 | "tokio", 4601 | ] 4602 | 4603 | [[package]] 4604 | name = "tokio-tungstenite" 4605 | version = "0.20.1" 4606 | source = "registry+https://github.com/rust-lang/crates.io-index" 4607 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 4608 | dependencies = [ 4609 | "futures-util", 4610 | "log", 4611 | "rustls 0.21.12", 4612 | "tokio", 4613 | "tokio-rustls 0.24.1", 4614 | "tungstenite 0.20.1", 4615 | "webpki-roots 0.25.4", 4616 | ] 4617 | 4618 | [[package]] 4619 | name = "tokio-tungstenite" 4620 | version = "0.21.0" 4621 | source = "registry+https://github.com/rust-lang/crates.io-index" 4622 | checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" 4623 | dependencies = [ 4624 | "futures-util", 4625 | "log", 4626 | "rustls 0.22.4", 4627 | "rustls-pki-types", 4628 | "tokio", 4629 | "tokio-rustls 0.25.0", 4630 | "tungstenite 0.21.0", 4631 | "webpki-roots 0.26.3", 4632 | ] 4633 | 4634 | [[package]] 4635 | name = "tokio-util" 4636 | version = "0.7.11" 4637 | source = "registry+https://github.com/rust-lang/crates.io-index" 4638 | checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 4639 | dependencies = [ 4640 | "bytes", 4641 | "futures-core", 4642 | "futures-sink", 4643 | "pin-project-lite", 4644 | "tokio", 4645 | ] 4646 | 4647 | [[package]] 4648 | name = "toml_datetime" 4649 | version = "0.6.6" 4650 | source = "registry+https://github.com/rust-lang/crates.io-index" 4651 | checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" 4652 | 4653 | [[package]] 4654 | name = "toml_edit" 4655 | version = "0.21.1" 4656 | source = "registry+https://github.com/rust-lang/crates.io-index" 4657 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 4658 | dependencies = [ 4659 | "indexmap 2.2.6", 4660 | "toml_datetime", 4661 | "winnow", 4662 | ] 4663 | 4664 | [[package]] 4665 | name = "tower-service" 4666 | version = "0.3.2" 4667 | source = "registry+https://github.com/rust-lang/crates.io-index" 4668 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 4669 | 4670 | [[package]] 4671 | name = "tracing" 4672 | version = "0.1.40" 4673 | source = "registry+https://github.com/rust-lang/crates.io-index" 4674 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 4675 | dependencies = [ 4676 | "log", 4677 | "pin-project-lite", 4678 | "tracing-attributes", 4679 | "tracing-core", 4680 | ] 4681 | 4682 | [[package]] 4683 | name = "tracing-attributes" 4684 | version = "0.1.27" 4685 | source = "registry+https://github.com/rust-lang/crates.io-index" 4686 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 4687 | dependencies = [ 4688 | "proc-macro2", 4689 | "quote", 4690 | "syn 2.0.71", 4691 | ] 4692 | 4693 | [[package]] 4694 | name = "tracing-core" 4695 | version = "0.1.32" 4696 | source = "registry+https://github.com/rust-lang/crates.io-index" 4697 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 4698 | dependencies = [ 4699 | "once_cell", 4700 | ] 4701 | 4702 | [[package]] 4703 | name = "trice" 4704 | version = "0.4.0" 4705 | source = "registry+https://github.com/rust-lang/crates.io-index" 4706 | checksum = "d3aaab10ae9fac0b10f392752bf56f0fd20845f39037fec931e8537b105b515a" 4707 | dependencies = [ 4708 | "js-sys", 4709 | "wasm-bindgen", 4710 | "web-sys", 4711 | ] 4712 | 4713 | [[package]] 4714 | name = "trim-in-place" 4715 | version = "0.1.7" 4716 | source = "registry+https://github.com/rust-lang/crates.io-index" 4717 | checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" 4718 | 4719 | [[package]] 4720 | name = "triomphe" 4721 | version = "0.1.13" 4722 | source = "registry+https://github.com/rust-lang/crates.io-index" 4723 | checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" 4724 | 4725 | [[package]] 4726 | name = "try-lock" 4727 | version = "0.2.5" 4728 | source = "registry+https://github.com/rust-lang/crates.io-index" 4729 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4730 | 4731 | [[package]] 4732 | name = "tungstenite" 4733 | version = "0.20.1" 4734 | source = "registry+https://github.com/rust-lang/crates.io-index" 4735 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" 4736 | dependencies = [ 4737 | "byteorder", 4738 | "bytes", 4739 | "data-encoding", 4740 | "http 0.2.12", 4741 | "httparse", 4742 | "log", 4743 | "rand", 4744 | "rustls 0.21.12", 4745 | "sha1", 4746 | "thiserror", 4747 | "url", 4748 | "utf-8", 4749 | ] 4750 | 4751 | [[package]] 4752 | name = "tungstenite" 4753 | version = "0.21.0" 4754 | source = "registry+https://github.com/rust-lang/crates.io-index" 4755 | checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" 4756 | dependencies = [ 4757 | "byteorder", 4758 | "bytes", 4759 | "data-encoding", 4760 | "http 1.1.0", 4761 | "httparse", 4762 | "log", 4763 | "rand", 4764 | "rustls 0.22.4", 4765 | "rustls-pki-types", 4766 | "sha1", 4767 | "thiserror", 4768 | "url", 4769 | "utf-8", 4770 | ] 4771 | 4772 | [[package]] 4773 | name = "typemap_rev" 4774 | version = "0.3.0" 4775 | source = "registry+https://github.com/rust-lang/crates.io-index" 4776 | checksum = "74b08b0c1257381af16a5c3605254d529d3e7e109f3c62befc5d168968192998" 4777 | 4778 | [[package]] 4779 | name = "typenum" 4780 | version = "1.17.0" 4781 | source = "registry+https://github.com/rust-lang/crates.io-index" 4782 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 4783 | 4784 | [[package]] 4785 | name = "typesize" 4786 | version = "0.1.7" 4787 | source = "registry+https://github.com/rust-lang/crates.io-index" 4788 | checksum = "eb704842c709bc76f63e99e704cb208beeccca2abbabd0d9aec02e48ca1cee0f" 4789 | dependencies = [ 4790 | "chrono", 4791 | "dashmap", 4792 | "hashbrown 0.14.5", 4793 | "mini-moka", 4794 | "parking_lot", 4795 | "secrecy", 4796 | "serde_json", 4797 | "time", 4798 | "typesize-derive", 4799 | "url", 4800 | ] 4801 | 4802 | [[package]] 4803 | name = "typesize-derive" 4804 | version = "0.1.7" 4805 | source = "registry+https://github.com/rust-lang/crates.io-index" 4806 | checksum = "905e88c2a4cc27686bd57e495121d451f027e441388a67f773be729ad4be1ea8" 4807 | dependencies = [ 4808 | "proc-macro2", 4809 | "quote", 4810 | "syn 2.0.71", 4811 | ] 4812 | 4813 | [[package]] 4814 | name = "ucd-trie" 4815 | version = "0.1.6" 4816 | source = "registry+https://github.com/rust-lang/crates.io-index" 4817 | checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" 4818 | 4819 | [[package]] 4820 | name = "uint" 4821 | version = "0.9.5" 4822 | source = "registry+https://github.com/rust-lang/crates.io-index" 4823 | checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" 4824 | dependencies = [ 4825 | "byteorder", 4826 | "crunchy", 4827 | "hex", 4828 | "static_assertions", 4829 | ] 4830 | 4831 | [[package]] 4832 | name = "ulid" 4833 | version = "1.1.3" 4834 | source = "registry+https://github.com/rust-lang/crates.io-index" 4835 | checksum = "04f903f293d11f31c0c29e4148f6dc0d033a7f80cebc0282bea147611667d289" 4836 | dependencies = [ 4837 | "getrandom", 4838 | "rand", 4839 | "serde", 4840 | "web-time", 4841 | ] 4842 | 4843 | [[package]] 4844 | name = "unarray" 4845 | version = "0.1.4" 4846 | source = "registry+https://github.com/rust-lang/crates.io-index" 4847 | checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" 4848 | 4849 | [[package]] 4850 | name = "unicase" 4851 | version = "2.7.0" 4852 | source = "registry+https://github.com/rust-lang/crates.io-index" 4853 | checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" 4854 | dependencies = [ 4855 | "version_check", 4856 | ] 4857 | 4858 | [[package]] 4859 | name = "unicode-bidi" 4860 | version = "0.3.15" 4861 | source = "registry+https://github.com/rust-lang/crates.io-index" 4862 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 4863 | 4864 | [[package]] 4865 | name = "unicode-ident" 4866 | version = "1.0.12" 4867 | source = "registry+https://github.com/rust-lang/crates.io-index" 4868 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 4869 | 4870 | [[package]] 4871 | name = "unicode-normalization" 4872 | version = "0.1.23" 4873 | source = "registry+https://github.com/rust-lang/crates.io-index" 4874 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 4875 | dependencies = [ 4876 | "tinyvec", 4877 | ] 4878 | 4879 | [[package]] 4880 | name = "unicode-script" 4881 | version = "0.5.6" 4882 | source = "registry+https://github.com/rust-lang/crates.io-index" 4883 | checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" 4884 | 4885 | [[package]] 4886 | name = "unicode-security" 4887 | version = "0.1.1" 4888 | source = "registry+https://github.com/rust-lang/crates.io-index" 4889 | checksum = "ee9e13753df674873f3c4693b240ae5c03245ddc157dfccf7c26db9329af3a11" 4890 | dependencies = [ 4891 | "unicode-normalization", 4892 | "unicode-script", 4893 | ] 4894 | 4895 | [[package]] 4896 | name = "unicode-width" 4897 | version = "0.1.13" 4898 | source = "registry+https://github.com/rust-lang/crates.io-index" 4899 | checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" 4900 | 4901 | [[package]] 4902 | name = "unicode-xid" 4903 | version = "0.2.4" 4904 | source = "registry+https://github.com/rust-lang/crates.io-index" 4905 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 4906 | 4907 | [[package]] 4908 | name = "untrusted" 4909 | version = "0.7.1" 4910 | source = "registry+https://github.com/rust-lang/crates.io-index" 4911 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 4912 | 4913 | [[package]] 4914 | name = "untrusted" 4915 | version = "0.9.0" 4916 | source = "registry+https://github.com/rust-lang/crates.io-index" 4917 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 4918 | 4919 | [[package]] 4920 | name = "url" 4921 | version = "2.5.2" 4922 | source = "registry+https://github.com/rust-lang/crates.io-index" 4923 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 4924 | dependencies = [ 4925 | "form_urlencoded", 4926 | "idna", 4927 | "percent-encoding", 4928 | "serde", 4929 | ] 4930 | 4931 | [[package]] 4932 | name = "urlencoding" 4933 | version = "2.1.3" 4934 | source = "registry+https://github.com/rust-lang/crates.io-index" 4935 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 4936 | 4937 | [[package]] 4938 | name = "utf-8" 4939 | version = "0.7.6" 4940 | source = "registry+https://github.com/rust-lang/crates.io-index" 4941 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 4942 | 4943 | [[package]] 4944 | name = "uuid" 4945 | version = "1.10.0" 4946 | source = "registry+https://github.com/rust-lang/crates.io-index" 4947 | checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" 4948 | dependencies = [ 4949 | "getrandom", 4950 | "serde", 4951 | "wasm-bindgen", 4952 | ] 4953 | 4954 | [[package]] 4955 | name = "valuable" 4956 | version = "0.1.0" 4957 | source = "registry+https://github.com/rust-lang/crates.io-index" 4958 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 4959 | 4960 | [[package]] 4961 | name = "vcpkg" 4962 | version = "0.2.15" 4963 | source = "registry+https://github.com/rust-lang/crates.io-index" 4964 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 4965 | 4966 | [[package]] 4967 | name = "version_check" 4968 | version = "0.9.4" 4969 | source = "registry+https://github.com/rust-lang/crates.io-index" 4970 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 4971 | 4972 | [[package]] 4973 | name = "wait-timeout" 4974 | version = "0.2.0" 4975 | source = "registry+https://github.com/rust-lang/crates.io-index" 4976 | checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" 4977 | dependencies = [ 4978 | "libc", 4979 | ] 4980 | 4981 | [[package]] 4982 | name = "waker-fn" 4983 | version = "1.2.0" 4984 | source = "registry+https://github.com/rust-lang/crates.io-index" 4985 | checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" 4986 | 4987 | [[package]] 4988 | name = "walkdir" 4989 | version = "2.5.0" 4990 | source = "registry+https://github.com/rust-lang/crates.io-index" 4991 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 4992 | dependencies = [ 4993 | "same-file", 4994 | "winapi-util", 4995 | ] 4996 | 4997 | [[package]] 4998 | name = "want" 4999 | version = "0.3.1" 5000 | source = "registry+https://github.com/rust-lang/crates.io-index" 5001 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 5002 | dependencies = [ 5003 | "try-lock", 5004 | ] 5005 | 5006 | [[package]] 5007 | name = "wasi" 5008 | version = "0.11.0+wasi-snapshot-preview1" 5009 | source = "registry+https://github.com/rust-lang/crates.io-index" 5010 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 5011 | 5012 | [[package]] 5013 | name = "wasm-bindgen" 5014 | version = "0.2.92" 5015 | source = "registry+https://github.com/rust-lang/crates.io-index" 5016 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 5017 | dependencies = [ 5018 | "cfg-if", 5019 | "wasm-bindgen-macro", 5020 | ] 5021 | 5022 | [[package]] 5023 | name = "wasm-bindgen-backend" 5024 | version = "0.2.92" 5025 | source = "registry+https://github.com/rust-lang/crates.io-index" 5026 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 5027 | dependencies = [ 5028 | "bumpalo", 5029 | "log", 5030 | "once_cell", 5031 | "proc-macro2", 5032 | "quote", 5033 | "syn 2.0.71", 5034 | "wasm-bindgen-shared", 5035 | ] 5036 | 5037 | [[package]] 5038 | name = "wasm-bindgen-futures" 5039 | version = "0.4.42" 5040 | source = "registry+https://github.com/rust-lang/crates.io-index" 5041 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 5042 | dependencies = [ 5043 | "cfg-if", 5044 | "js-sys", 5045 | "wasm-bindgen", 5046 | "web-sys", 5047 | ] 5048 | 5049 | [[package]] 5050 | name = "wasm-bindgen-macro" 5051 | version = "0.2.92" 5052 | source = "registry+https://github.com/rust-lang/crates.io-index" 5053 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 5054 | dependencies = [ 5055 | "quote", 5056 | "wasm-bindgen-macro-support", 5057 | ] 5058 | 5059 | [[package]] 5060 | name = "wasm-bindgen-macro-support" 5061 | version = "0.2.92" 5062 | source = "registry+https://github.com/rust-lang/crates.io-index" 5063 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 5064 | dependencies = [ 5065 | "proc-macro2", 5066 | "quote", 5067 | "syn 2.0.71", 5068 | "wasm-bindgen-backend", 5069 | "wasm-bindgen-shared", 5070 | ] 5071 | 5072 | [[package]] 5073 | name = "wasm-bindgen-shared" 5074 | version = "0.2.92" 5075 | source = "registry+https://github.com/rust-lang/crates.io-index" 5076 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 5077 | 5078 | [[package]] 5079 | name = "wasm-streams" 5080 | version = "0.4.0" 5081 | source = "registry+https://github.com/rust-lang/crates.io-index" 5082 | checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" 5083 | dependencies = [ 5084 | "futures-util", 5085 | "js-sys", 5086 | "wasm-bindgen", 5087 | "wasm-bindgen-futures", 5088 | "web-sys", 5089 | ] 5090 | 5091 | [[package]] 5092 | name = "wasmtimer" 5093 | version = "0.2.0" 5094 | source = "registry+https://github.com/rust-lang/crates.io-index" 5095 | checksum = "5f656cd8858a5164932d8a90f936700860976ec21eb00e0fe2aa8cab13f6b4cf" 5096 | dependencies = [ 5097 | "futures", 5098 | "js-sys", 5099 | "parking_lot", 5100 | "pin-utils", 5101 | "wasm-bindgen", 5102 | ] 5103 | 5104 | [[package]] 5105 | name = "web-sys" 5106 | version = "0.3.69" 5107 | source = "registry+https://github.com/rust-lang/crates.io-index" 5108 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 5109 | dependencies = [ 5110 | "js-sys", 5111 | "wasm-bindgen", 5112 | ] 5113 | 5114 | [[package]] 5115 | name = "web-time" 5116 | version = "1.1.0" 5117 | source = "registry+https://github.com/rust-lang/crates.io-index" 5118 | checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 5119 | dependencies = [ 5120 | "js-sys", 5121 | "wasm-bindgen", 5122 | ] 5123 | 5124 | [[package]] 5125 | name = "webpki-roots" 5126 | version = "0.25.4" 5127 | source = "registry+https://github.com/rust-lang/crates.io-index" 5128 | checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 5129 | 5130 | [[package]] 5131 | name = "webpki-roots" 5132 | version = "0.26.3" 5133 | source = "registry+https://github.com/rust-lang/crates.io-index" 5134 | checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" 5135 | dependencies = [ 5136 | "rustls-pki-types", 5137 | ] 5138 | 5139 | [[package]] 5140 | name = "winapi" 5141 | version = "0.3.9" 5142 | source = "registry+https://github.com/rust-lang/crates.io-index" 5143 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 5144 | dependencies = [ 5145 | "winapi-i686-pc-windows-gnu", 5146 | "winapi-x86_64-pc-windows-gnu", 5147 | ] 5148 | 5149 | [[package]] 5150 | name = "winapi-i686-pc-windows-gnu" 5151 | version = "0.4.0" 5152 | source = "registry+https://github.com/rust-lang/crates.io-index" 5153 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 5154 | 5155 | [[package]] 5156 | name = "winapi-util" 5157 | version = "0.1.8" 5158 | source = "registry+https://github.com/rust-lang/crates.io-index" 5159 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 5160 | dependencies = [ 5161 | "windows-sys 0.52.0", 5162 | ] 5163 | 5164 | [[package]] 5165 | name = "winapi-x86_64-pc-windows-gnu" 5166 | version = "0.4.0" 5167 | source = "registry+https://github.com/rust-lang/crates.io-index" 5168 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 5169 | 5170 | [[package]] 5171 | name = "windows-core" 5172 | version = "0.52.0" 5173 | source = "registry+https://github.com/rust-lang/crates.io-index" 5174 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 5175 | dependencies = [ 5176 | "windows-targets 0.52.6", 5177 | ] 5178 | 5179 | [[package]] 5180 | name = "windows-sys" 5181 | version = "0.48.0" 5182 | source = "registry+https://github.com/rust-lang/crates.io-index" 5183 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 5184 | dependencies = [ 5185 | "windows-targets 0.48.5", 5186 | ] 5187 | 5188 | [[package]] 5189 | name = "windows-sys" 5190 | version = "0.52.0" 5191 | source = "registry+https://github.com/rust-lang/crates.io-index" 5192 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 5193 | dependencies = [ 5194 | "windows-targets 0.52.6", 5195 | ] 5196 | 5197 | [[package]] 5198 | name = "windows-targets" 5199 | version = "0.48.5" 5200 | source = "registry+https://github.com/rust-lang/crates.io-index" 5201 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 5202 | dependencies = [ 5203 | "windows_aarch64_gnullvm 0.48.5", 5204 | "windows_aarch64_msvc 0.48.5", 5205 | "windows_i686_gnu 0.48.5", 5206 | "windows_i686_msvc 0.48.5", 5207 | "windows_x86_64_gnu 0.48.5", 5208 | "windows_x86_64_gnullvm 0.48.5", 5209 | "windows_x86_64_msvc 0.48.5", 5210 | ] 5211 | 5212 | [[package]] 5213 | name = "windows-targets" 5214 | version = "0.52.6" 5215 | source = "registry+https://github.com/rust-lang/crates.io-index" 5216 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 5217 | dependencies = [ 5218 | "windows_aarch64_gnullvm 0.52.6", 5219 | "windows_aarch64_msvc 0.52.6", 5220 | "windows_i686_gnu 0.52.6", 5221 | "windows_i686_gnullvm", 5222 | "windows_i686_msvc 0.52.6", 5223 | "windows_x86_64_gnu 0.52.6", 5224 | "windows_x86_64_gnullvm 0.52.6", 5225 | "windows_x86_64_msvc 0.52.6", 5226 | ] 5227 | 5228 | [[package]] 5229 | name = "windows_aarch64_gnullvm" 5230 | version = "0.48.5" 5231 | source = "registry+https://github.com/rust-lang/crates.io-index" 5232 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 5233 | 5234 | [[package]] 5235 | name = "windows_aarch64_gnullvm" 5236 | version = "0.52.6" 5237 | source = "registry+https://github.com/rust-lang/crates.io-index" 5238 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 5239 | 5240 | [[package]] 5241 | name = "windows_aarch64_msvc" 5242 | version = "0.48.5" 5243 | source = "registry+https://github.com/rust-lang/crates.io-index" 5244 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 5245 | 5246 | [[package]] 5247 | name = "windows_aarch64_msvc" 5248 | version = "0.52.6" 5249 | source = "registry+https://github.com/rust-lang/crates.io-index" 5250 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 5251 | 5252 | [[package]] 5253 | name = "windows_i686_gnu" 5254 | version = "0.48.5" 5255 | source = "registry+https://github.com/rust-lang/crates.io-index" 5256 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 5257 | 5258 | [[package]] 5259 | name = "windows_i686_gnu" 5260 | version = "0.52.6" 5261 | source = "registry+https://github.com/rust-lang/crates.io-index" 5262 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 5263 | 5264 | [[package]] 5265 | name = "windows_i686_gnullvm" 5266 | version = "0.52.6" 5267 | source = "registry+https://github.com/rust-lang/crates.io-index" 5268 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 5269 | 5270 | [[package]] 5271 | name = "windows_i686_msvc" 5272 | version = "0.48.5" 5273 | source = "registry+https://github.com/rust-lang/crates.io-index" 5274 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 5275 | 5276 | [[package]] 5277 | name = "windows_i686_msvc" 5278 | version = "0.52.6" 5279 | source = "registry+https://github.com/rust-lang/crates.io-index" 5280 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 5281 | 5282 | [[package]] 5283 | name = "windows_x86_64_gnu" 5284 | version = "0.48.5" 5285 | source = "registry+https://github.com/rust-lang/crates.io-index" 5286 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 5287 | 5288 | [[package]] 5289 | name = "windows_x86_64_gnu" 5290 | version = "0.52.6" 5291 | source = "registry+https://github.com/rust-lang/crates.io-index" 5292 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 5293 | 5294 | [[package]] 5295 | name = "windows_x86_64_gnullvm" 5296 | version = "0.48.5" 5297 | source = "registry+https://github.com/rust-lang/crates.io-index" 5298 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 5299 | 5300 | [[package]] 5301 | name = "windows_x86_64_gnullvm" 5302 | version = "0.52.6" 5303 | source = "registry+https://github.com/rust-lang/crates.io-index" 5304 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 5305 | 5306 | [[package]] 5307 | name = "windows_x86_64_msvc" 5308 | version = "0.48.5" 5309 | source = "registry+https://github.com/rust-lang/crates.io-index" 5310 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 5311 | 5312 | [[package]] 5313 | name = "windows_x86_64_msvc" 5314 | version = "0.52.6" 5315 | source = "registry+https://github.com/rust-lang/crates.io-index" 5316 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 5317 | 5318 | [[package]] 5319 | name = "winnow" 5320 | version = "0.5.40" 5321 | source = "registry+https://github.com/rust-lang/crates.io-index" 5322 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 5323 | dependencies = [ 5324 | "memchr", 5325 | ] 5326 | 5327 | [[package]] 5328 | name = "winreg" 5329 | version = "0.50.0" 5330 | source = "registry+https://github.com/rust-lang/crates.io-index" 5331 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 5332 | dependencies = [ 5333 | "cfg-if", 5334 | "windows-sys 0.48.0", 5335 | ] 5336 | 5337 | [[package]] 5338 | name = "ws_stream_wasm" 5339 | version = "0.7.4" 5340 | source = "registry+https://github.com/rust-lang/crates.io-index" 5341 | checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" 5342 | dependencies = [ 5343 | "async_io_stream", 5344 | "futures", 5345 | "js-sys", 5346 | "log", 5347 | "pharos", 5348 | "rustc_version 0.4.0", 5349 | "send_wrapper", 5350 | "thiserror", 5351 | "wasm-bindgen", 5352 | "wasm-bindgen-futures", 5353 | "web-sys", 5354 | ] 5355 | 5356 | [[package]] 5357 | name = "wyz" 5358 | version = "0.5.1" 5359 | source = "registry+https://github.com/rust-lang/crates.io-index" 5360 | checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" 5361 | dependencies = [ 5362 | "tap", 5363 | ] 5364 | 5365 | [[package]] 5366 | name = "zerocopy" 5367 | version = "0.7.35" 5368 | source = "registry+https://github.com/rust-lang/crates.io-index" 5369 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 5370 | dependencies = [ 5371 | "zerocopy-derive", 5372 | ] 5373 | 5374 | [[package]] 5375 | name = "zerocopy-derive" 5376 | version = "0.7.35" 5377 | source = "registry+https://github.com/rust-lang/crates.io-index" 5378 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 5379 | dependencies = [ 5380 | "proc-macro2", 5381 | "quote", 5382 | "syn 2.0.71", 5383 | ] 5384 | 5385 | [[package]] 5386 | name = "zeroize" 5387 | version = "1.8.1" 5388 | source = "registry+https://github.com/rust-lang/crates.io-index" 5389 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 5390 | dependencies = [ 5391 | "zeroize_derive", 5392 | ] 5393 | 5394 | [[package]] 5395 | name = "zeroize_derive" 5396 | version = "1.4.2" 5397 | source = "registry+https://github.com/rust-lang/crates.io-index" 5398 | checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" 5399 | dependencies = [ 5400 | "proc-macro2", 5401 | "quote", 5402 | "syn 2.0.71", 5403 | ] 5404 | 5405 | [[package]] 5406 | name = "zstd-sys" 5407 | version = "2.0.12+zstd.1.5.6" 5408 | source = "registry+https://github.com/rust-lang/crates.io-index" 5409 | checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" 5410 | dependencies = [ 5411 | "cc", 5412 | "pkg-config", 5413 | ] 5414 | --------------------------------------------------------------------------------