[INFO] cloning repository https://github.com/Project-Wartemis/package-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Project-Wartemis/package-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FProject-Wartemis%2Fpackage-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FProject-Wartemis%2Fpackage-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f13fb142af6088f9f2c9385ebd8e6c74fda335e8 [INFO] checking Project-Wartemis/package-rust against try#dd2d87b6cc31907ae305875eb6be399783dc0256 for pr-143929 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FProject-Wartemis%2Fpackage-rust" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Project-Wartemis/package-rust [INFO] finished tweaking git repo https://github.com/Project-Wartemis/package-rust [INFO] tweaked toml for git repo https://github.com/Project-Wartemis/package-rust written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Project-Wartemis/package-rust on toolchain dd2d87b6cc31907ae305875eb6be399783dc0256 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Project-Wartemis/package-rust already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d25b4c79fb0883ffab3ea82ca3ab435eb81dbb7f150d1cb477c66a66852d2baf [INFO] running `Command { std: "docker" "start" "-a" "d25b4c79fb0883ffab3ea82ca3ab435eb81dbb7f150d1cb477c66a66852d2baf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d25b4c79fb0883ffab3ea82ca3ab435eb81dbb7f150d1cb477c66a66852d2baf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d25b4c79fb0883ffab3ea82ca3ab435eb81dbb7f150d1cb477c66a66852d2baf", kill_on_drop: false }` [INFO] [stdout] d25b4c79fb0883ffab3ea82ca3ab435eb81dbb7f150d1cb477c66a66852d2baf [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+dd2d87b6cc31907ae305875eb6be399783dc0256" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 933404de33edc39abe44b17f1251506fc7765ee7b71d1f1e9e5437ec25120b34 [INFO] running `Command { std: "docker" "start" "-a" "933404de33edc39abe44b17f1251506fc7765ee7b71d1f1e9e5437ec25120b34", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.24 [INFO] [stderr] Compiling unicode-xid v0.2.1 [INFO] [stderr] Compiling syn v1.0.60 [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling serde_derive v1.0.123 [INFO] [stderr] Compiling serde v1.0.123 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling serde_json v1.0.64 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking itoa v0.4.7 [INFO] [stderr] Compiling crossbeam-utils v0.8.3 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Checking crossbeam-channel v0.5.0 [INFO] [stderr] Compiling thiserror-impl v1.0.24 [INFO] [stderr] Checking thiserror v1.0.24 [INFO] [stderr] Checking package-rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error: derive helper attribute is used before it is introduced [INFO] [stdout] --> src/message.rs:16:3 [INFO] [stdout] | [INFO] [stdout] 16 | #[serde(tag = "type")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] 17 | #[derive(Serialize, Deserialize,Debug,PartialEq)] [INFO] [stdout] | --------- the attribute is introduced here [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79202 [INFO] [stdout] = note: `#[deny(legacy_derive_helpers)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `unbounded` [INFO] [stdout] --> src/client.rs:3:32 [INFO] [stdout] | [INFO] [stdout] 3 | use crossbeam_channel::{select,unbounded}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: derive helper attribute is used before it is introduced [INFO] [stdout] --> src/message.rs:16:3 [INFO] [stdout] | [INFO] [stdout] 16 | #[serde(tag = "type")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] 17 | #[derive(Serialize, Deserialize,Debug,PartialEq)] [INFO] [stdout] | --------- the attribute is introduced here [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #79202 [INFO] [stdout] = note: `#[deny(legacy_derive_helpers)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/message.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `unbounded` [INFO] [stdout] --> src/client.rs:3:32 [INFO] [stdout] | [INFO] [stdout] 3 | use crossbeam_channel::{select,unbounded}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response` [INFO] [stdout] --> src/client.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | let response = self.handler.handle(message_string,message); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MessageError` is never used [INFO] [stdout] --> src/message.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 8 | pub enum MessageError { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Message` is never used [INFO] [stdout] --> src/message.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum Message { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MessageContent` is never constructed [INFO] [stdout] --> src/message.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct MessageContent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_message` is never used [INFO] [stdout] --> src/message.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | pub fn deserialize_message(json: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `serialize_message` is never used [INFO] [stdout] --> src/message.rs:38:8 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn serialize_message(message: Message) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Connected` is never constructed [INFO] [stdout] --> src/message.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct Connected {} [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RegisterSuccess` is never constructed [INFO] [stdout] --> src/message.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct RegisterSuccess { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Register` is never constructed [INFO] [stdout] --> src/message.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct Register { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Client` is never constructed [INFO] [stdout] --> src/client.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Client { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, and `handle` are never used [INFO] [stdout] --> src/client.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 14 | impl Client { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 15 | fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | fn start(&self) -> Result<(),crossbeam_channel::RecvError>{ [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn handle(&self, channel_output: Result) [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Outputs` is never used [INFO] [stdout] --> src/handler.rs:7:10 [INFO] [stdout] | [INFO] [stdout] 7 | pub enum Outputs { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Response` is never used [INFO] [stdout] --> src/handler.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Response { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `HandleError` is never used [INFO] [stdout] --> src/handler.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum HandleError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Handler` is never used [INFO] [stdout] --> src/handler.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | pub trait Handler { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MessageHandler` is never constructed [INFO] [stdout] --> src/handler.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct MessageHandler { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/handler.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl MessageHandler { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 69 | pub fn new(client_config: ClientConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | fn build_register_message(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn handle_connected(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | fn handle_register_success(&self, m: msg::RegisterSuccess) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn handle_error(&self, m: String) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | fn handle_state(&self, m: String) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | fn handle_action(&self, m: String) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | fn send(&self, m: String, output: &Outputs) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClientConfig` is never constructed [INFO] [stdout] --> src/handler.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 119 | pub struct ClientConfig{ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `clientType` should have a snake case name [INFO] [stdout] --> src/message.rs:53:6 [INFO] [stdout] | [INFO] [stdout] 53 | pub clientType: String, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `client_type` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `clientType` should have a snake case name [INFO] [stdout] --> src/handler.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | pub clientType: String, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `client_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `package-rust` (bin "package-rust") due to 2 previous errors; 22 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:210:8 [INFO] [stdout] | [INFO] [stdout] 210 | let mut map = serde_json::Map::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:248:8 [INFO] [stdout] | [INFO] [stdout] 248 | let mut map = serde_json::Map::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/message.rs:284:8 [INFO] [stdout] | [INFO] [stdout] 284 | let mut map = serde_json::Map::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `response` [INFO] [stdout] --> src/client.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | let response = self.handler.handle(message_string,message); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handler.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | let mut handler = MessageHandler::new(default_client_config()); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `register_msg` [INFO] [stdout] --> src/handler.rs:275:72 [INFO] [stdout] | [INFO] [stdout] 275 | HandleError::UnknownMessageType(msg::Message::Register(register_msg)) => (), [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_register_msg` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `clientType` should have a snake case name [INFO] [stdout] --> src/message.rs:53:6 [INFO] [stdout] | [INFO] [stdout] 53 | pub clientType: String, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `client_type` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/client.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | / match output_type { [INFO] [stdout] 131 | | handler::Outputs::Server => svr_inc_snd.send(input_msg), [INFO] [stdout] 132 | | handler::Outputs::Bot => bot_inc_snd.send(input_msg), [INFO] [stdout] 133 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 130 | let _ = match output_type { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `clientType` should have a snake case name [INFO] [stdout] --> src/handler.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | pub clientType: String, [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `client_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `assert_response_is_Empty` should have a snake case name [INFO] [stdout] --> src/handler.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | fn assert_response_is_Empty(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `assert_response_is_empty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_msg_register_success_receive_SetID_response` should have a snake case name [INFO] [stdout] --> src/handler.rs:185:12 [INFO] [stdout] | [INFO] [stdout] 185 | fn handle_msg_register_success_receive_SetID_response() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `handle_msg_register_success_receive_set_id_response` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `package-rust` (bin "package-rust" test) due to 2 previous errors; 13 warnings emitted [INFO] running `Command { std: "docker" "inspect" "933404de33edc39abe44b17f1251506fc7765ee7b71d1f1e9e5437ec25120b34", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "933404de33edc39abe44b17f1251506fc7765ee7b71d1f1e9e5437ec25120b34", kill_on_drop: false }` [INFO] [stdout] 933404de33edc39abe44b17f1251506fc7765ee7b71d1f1e9e5437ec25120b34