Dec 17 13:26:38.066 INFO checking tnpxu/event-horizon against master#96d1334e567237b1507cd277938e7ae2de75ff51 for pr-54252 Dec 17 13:26:38.066 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/pr-54252/worker-2/master#96d1334e567237b1507cd277938e7ae2de75ff51:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/pr-54252/sources/master#96d1334e567237b1507cd277938e7ae2de75ff51/gh/tnpxu/event-horizon:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+96d1334e567237b1507cd277938e7ae2de75ff51-alt" "check" "--frozen" "--all" "--all-targets"` Dec 17 13:26:38.601 INFO [stdout] baa2c937b03d32b88ca771f25c2963466dc7bdadd419b51e07bd720f6c071eab Dec 17 13:26:38.603 INFO running `"docker" "start" "-a" "baa2c937b03d32b88ca771f25c2963466dc7bdadd419b51e07bd720f6c071eab"` Dec 17 13:26:42.141 INFO [stderr] Checking lazycell v1.1.0 Dec 17 13:26:42.151 INFO [stderr] Checking abomonation v0.7.0 Dec 17 13:26:42.152 INFO [stderr] Checking timely_bytes v0.7.0 Dec 17 13:26:42.152 INFO [stderr] Checking timely_logging v0.7.0 Dec 17 13:26:42.193 INFO [stderr] Checking timely_sort v0.1.6 Dec 17 13:26:42.194 INFO [stderr] Compiling memchr v2.1.0 Dec 17 13:26:42.196 INFO [stderr] Checking encoding_rs v0.8.6 Dec 17 13:26:42.196 INFO [stderr] Checking tokio-executor v0.1.4 Dec 17 13:26:42.979 INFO [stderr] Checking getopts v0.2.18 Dec 17 13:26:43.676 INFO [stderr] Checking want v0.0.4 Dec 17 13:26:43.790 INFO [stderr] Checking mio v0.6.16 Dec 17 13:26:44.197 INFO [stderr] Checking tokio-io v0.1.8 Dec 17 13:26:44.585 INFO [stderr] Checking input_buffer v0.2.0 Dec 17 13:26:45.245 INFO [stderr] Checking tokio-current-thread v0.1.1 Dec 17 13:26:45.354 INFO [stderr] Checking tokio-timer v0.2.6 Dec 17 13:26:45.945 INFO [stderr] Checking serde_json v1.0.27 Dec 17 13:26:46.805 INFO [stderr] Checking ring v0.13.2 Dec 17 13:26:48.168 INFO [stderr] Compiling phf_shared v0.7.23 Dec 17 13:26:50.333 INFO [stderr] Checking openssl v0.9.24 Dec 17 13:26:50.398 INFO [stderr] Checking openssl v0.10.12 Dec 17 13:26:50.486 INFO [stderr] Compiling abomonation_derive v0.3.0 Dec 17 13:26:53.816 INFO [stderr] Checking digest v0.7.5 Dec 17 13:26:54.612 INFO [stderr] Checking libflate v0.1.16 Dec 17 13:26:56.102 INFO [stderr] Checking chrono v0.4.6 Dec 17 13:26:57.704 INFO [stderr] Compiling phf_generator v0.7.23 Dec 17 13:26:58.692 INFO [stderr] Checking tokio-codec v0.1.0 Dec 17 13:26:58.728 INFO [stderr] Checking phf v0.7.23 Dec 17 13:26:59.392 INFO [stderr] Checking error-chain v0.12.0 Dec 17 13:26:59.492 INFO [stderr] Checking mio-uds v0.6.7 Dec 17 13:26:59.831 INFO [stderr] Checking sha-1 v0.7.0 Dec 17 13:26:59.956 INFO [stderr] Compiling serde_derive v1.0.79 Dec 17 13:27:00.500 INFO [stderr] Checking timely_communication v0.7.0 Dec 17 13:27:01.588 INFO [stderr] Checking parking_lot v0.6.4 Dec 17 13:27:01.780 INFO [stderr] Checking tokio-threadpool v0.1.6 Dec 17 13:27:02.557 INFO [stderr] Compiling phf_codegen v0.7.23 Dec 17 13:27:03.316 INFO [stderr] Checking csv-core v0.1.4 Dec 17 13:27:03.616 INFO [stderr] Compiling mime_guess v2.0.0-alpha.6 Dec 17 13:27:04.984 INFO [stderr] Checking tokio-reactor v0.1.5 Dec 17 13:27:05.007 INFO [stderr] Checking timely v0.7.0 Dec 17 13:27:07.869 INFO [stderr] Checking csv v1.0.1 Dec 17 13:27:07.930 INFO [stderr] Checking native-tls v0.2.1 Dec 17 13:27:08.020 INFO [stderr] Checking native-tls v0.1.5 Dec 17 13:27:08.112 INFO [stderr] Checking tokio-uds v0.2.1 Dec 17 13:27:08.136 INFO [stderr] Checking tokio-udp v0.1.2 Dec 17 13:27:09.140 INFO [stderr] Checking tokio-tcp v0.1.1 Dec 17 13:27:09.800 INFO [stderr] Checking tokio-fs v0.1.3 Dec 17 13:27:10.180 INFO [stderr] Checking tungstenite v0.6.0 Dec 17 13:27:12.881 INFO [stderr] Checking tokio v0.1.8 Dec 17 13:27:15.384 INFO [stderr] Checking tokio-core v0.1.17 Dec 17 13:27:17.944 INFO [stderr] Checking hyper v0.11.27 Dec 17 13:27:17.944 INFO [stderr] Checking tokio-tls v0.1.4 Dec 17 13:27:21.284 INFO [stderr] Checking differential-dataflow v0.7.0 Dec 17 13:27:37.173 INFO [stderr] Checking hyper-tls v0.1.4 Dec 17 13:27:38.050 INFO [stderr] Checking reqwest v0.8.8 Dec 17 13:27:42.245 INFO [stderr] Checking event-horizon v0.1.0 (/opt/crater/workdir) Dec 17 13:27:42.736 INFO [stderr] warning: unused import: `serde_json::from_str` Dec 17 13:27:42.736 INFO [stderr] --> src/websockets.rs:3:5 Dec 17 13:27:42.736 INFO [stderr] | Dec 17 13:27:42.736 INFO [stderr] 3 | use serde_json::from_str; Dec 17 13:27:42.736 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^ Dec 17 13:27:42.736 INFO [stderr] | Dec 17 13:27:42.736 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 17 13:27:42.736 INFO [stderr] Dec 17 13:27:42.752 INFO [stderr] warning: unused import: `serde_json::from_str` Dec 17 13:27:42.752 INFO [stderr] --> src/websockets.rs:3:5 Dec 17 13:27:42.752 INFO [stderr] | Dec 17 13:27:42.752 INFO [stderr] 3 | use serde_json::from_str; Dec 17 13:27:42.752 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^ Dec 17 13:27:42.752 INFO [stderr] | Dec 17 13:27:42.752 INFO [stderr] = note: #[warn(unused_imports)] on by default Dec 17 13:27:42.752 INFO [stderr] Dec 17 13:27:42.897 INFO [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting Dec 17 13:27:42.897 INFO [stderr] --> src/errors.rs:6:1 Dec 17 13:27:42.897 INFO [stderr] | Dec 17 13:27:42.897 INFO [stderr] 6 | / error_chain! { Dec 17 13:27:42.898 INFO [stderr] 7 | | types { Dec 17 13:27:42.898 INFO [stderr] 8 | | Error, ErrorKind, ResultExt, Result; Dec 17 13:27:42.898 INFO [stderr] 9 | | } Dec 17 13:27:42.898 INFO [stderr] ... | Dec 17 13:27:42.898 INFO [stderr] 19 | | } Dec 17 13:27:42.898 INFO [stderr] 20 | | } Dec 17 13:27:42.898 INFO [stderr] | |_^ Dec 17 13:27:42.910 INFO [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting Dec 17 13:27:42.910 INFO [stderr] --> src/errors.rs:6:1 Dec 17 13:27:42.910 INFO [stderr] | Dec 17 13:27:42.910 INFO [stderr] 6 | / error_chain! { Dec 17 13:27:42.910 INFO [stderr] 7 | | types { Dec 17 13:27:42.910 INFO [stderr] 8 | | Error, ErrorKind, ResultExt, Result; Dec 17 13:27:42.910 INFO [stderr] 9 | | } Dec 17 13:27:42.910 INFO [stderr] ... | Dec 17 13:27:42.910 INFO [stderr] 19 | | } Dec 17 13:27:42.910 INFO [stderr] 20 | | } Dec 17 13:27:42.910 INFO [stderr] | |_^ Dec 17 13:27:42.910 INFO [stderr] | Dec 17 13:27:42.910 INFO [stderr] = note: #[warn(deprecated)] on by default Dec 17 13:27:42.910 INFO [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) Dec 17 13:27:42.910 INFO [stderr] Dec 17 13:27:42.911 INFO [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting Dec 17 13:27:42.911 INFO [stderr] --> src/errors.rs:6:1 Dec 17 13:27:42.911 INFO [stderr] | Dec 17 13:27:42.911 INFO [stderr] 6 | / error_chain! { Dec 17 13:27:42.911 INFO [stderr] 7 | | types { Dec 17 13:27:42.911 INFO [stderr] 8 | | Error, ErrorKind, ResultExt, Result; Dec 17 13:27:42.911 INFO [stderr] 9 | | } Dec 17 13:27:42.911 INFO [stderr] ... | Dec 17 13:27:42.911 INFO [stderr] 19 | | } Dec 17 13:27:42.911 INFO [stderr] 20 | | } Dec 17 13:27:42.911 INFO [stderr] | |_^ Dec 17 13:27:42.911 INFO [stderr] | Dec 17 13:27:42.911 INFO [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) Dec 17 13:27:42.911 INFO [stderr] Dec 17 13:27:42.924 INFO [stderr] | Dec 17 13:27:42.924 INFO [stderr] = note: #[warn(deprecated)] on by default Dec 17 13:27:42.924 INFO [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) Dec 17 13:27:42.924 INFO [stderr] Dec 17 13:27:42.925 INFO [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting Dec 17 13:27:42.925 INFO [stderr] --> src/errors.rs:6:1 Dec 17 13:27:42.925 INFO [stderr] | Dec 17 13:27:42.925 INFO [stderr] 6 | / error_chain! { Dec 17 13:27:42.925 INFO [stderr] 7 | | types { Dec 17 13:27:42.925 INFO [stderr] 8 | | Error, ErrorKind, ResultExt, Result; Dec 17 13:27:42.925 INFO [stderr] 9 | | } Dec 17 13:27:42.925 INFO [stderr] ... | Dec 17 13:27:42.925 INFO [stderr] 19 | | } Dec 17 13:27:42.925 INFO [stderr] 20 | | } Dec 17 13:27:42.925 INFO [stderr] | |_^ Dec 17 13:27:42.925 INFO [stderr] | Dec 17 13:27:42.925 INFO [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) Dec 17 13:27:42.925 INFO [stderr] Dec 17 13:27:42.949 INFO [stderr] warning: unused variable: `msg` Dec 17 13:27:42.949 INFO [stderr] --> src/websockets.rs:50:20 Dec 17 13:27:42.949 INFO [stderr] | Dec 17 13:27:42.949 INFO [stderr] 50 | Ok(msg) => { Dec 17 13:27:42.949 INFO [stderr] | ^^^ help: consider using `_msg` instead Dec 17 13:27:42.949 INFO [stderr] | Dec 17 13:27:42.949 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 17 13:27:42.949 INFO [stderr] Dec 17 13:27:42.949 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:42.949 INFO [stderr] --> src/websockets.rs:53:21 Dec 17 13:27:42.949 INFO [stderr] | Dec 17 13:27:42.949 INFO [stderr] 53 | Err(e) => { Dec 17 13:27:42.949 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:42.949 INFO [stderr] Dec 17 13:27:42.949 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:42.949 INFO [stderr] --> src/websockets.rs:72:21 Dec 17 13:27:42.949 INFO [stderr] | Dec 17 13:27:42.949 INFO [stderr] 72 | Err(e) => { Dec 17 13:27:42.949 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:42.949 INFO [stderr] Dec 17 13:27:42.956 INFO [stderr] warning: unused variable: `msg` Dec 17 13:27:42.956 INFO [stderr] --> src/websockets.rs:50:20 Dec 17 13:27:42.956 INFO [stderr] | Dec 17 13:27:42.956 INFO [stderr] 50 | Ok(msg) => { Dec 17 13:27:42.956 INFO [stderr] | ^^^ help: consider using `_msg` instead Dec 17 13:27:42.969 INFO [stderr] | Dec 17 13:27:42.969 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 17 13:27:42.969 INFO [stderr] Dec 17 13:27:42.969 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:42.969 INFO [stderr] --> src/websockets.rs:53:21 Dec 17 13:27:42.969 INFO [stderr] | Dec 17 13:27:42.969 INFO [stderr] 53 | Err(e) => { Dec 17 13:27:42.969 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:42.969 INFO [stderr] Dec 17 13:27:42.970 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:42.970 INFO [stderr] --> src/websockets.rs:72:21 Dec 17 13:27:42.970 INFO [stderr] | Dec 17 13:27:42.970 INFO [stderr] 72 | Err(e) => { Dec 17 13:27:42.970 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:42.970 INFO [stderr] Dec 17 13:27:43.009 INFO [stderr] warning: variable `EXCHANGE_URL` should have a snake case name such as `exchange_url` Dec 17 13:27:43.009 INFO [stderr] --> src/websockets.rs:28:31 Dec 17 13:27:43.010 INFO [stderr] | Dec 17 13:27:43.010 INFO [stderr] 28 | pub fn connect(&mut self, EXCHANGE_URL: &str) -> Result<()> { Dec 17 13:27:43.010 INFO [stderr] | ^^^^^^^^^^^^ Dec 17 13:27:43.010 INFO [stderr] | Dec 17 13:27:43.010 INFO [stderr] = note: #[warn(non_snake_case)] on by default Dec 17 13:27:43.010 INFO [stderr] Dec 17 13:27:43.018 INFO [stderr] warning: variable `EXCHANGE_URL` should have a snake case name such as `exchange_url` Dec 17 13:27:43.018 INFO [stderr] --> src/websockets.rs:28:31 Dec 17 13:27:43.018 INFO [stderr] | Dec 17 13:27:43.018 INFO [stderr] 28 | pub fn connect(&mut self, EXCHANGE_URL: &str) -> Result<()> { Dec 17 13:27:43.018 INFO [stderr] | ^^^^^^^^^^^^ Dec 17 13:27:43.019 INFO [stderr] | Dec 17 13:27:43.019 INFO [stderr] = note: #[warn(non_snake_case)] on by default Dec 17 13:27:43.019 INFO [stderr] Dec 17 13:27:43.868 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:43.869 INFO [stderr] --> src/main.rs:86:28 Dec 17 13:27:43.869 INFO [stderr] | Dec 17 13:27:43.869 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:43.870 INFO [stderr] --> src/main.rs:86:28 Dec 17 13:27:43.870 INFO [stderr] | Dec 17 13:27:43.870 INFO [stderr] 86 | if let Err(e) = okex_socket.fetch_message() { Dec 17 13:27:43.870 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:43.871 INFO [stderr] | Dec 17 13:27:43.871 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 17 13:27:43.871 INFO [stderr] Dec 17 13:27:43.871 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:43.871 INFO [stderr] --> src/main.rs:99:28 Dec 17 13:27:43.872 INFO [stderr] | Dec 17 13:27:43.872 INFO [stderr] 99 | if let Err(e) = binance_socket.fetch_message() { Dec 17 13:27:43.872 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:43.872 INFO [stderr] Dec 17 13:27:43.873 INFO [stderr] warning: unused variable: `time` Dec 17 13:27:43.873 INFO [stderr] --> src/main.rs:112:17 Dec 17 13:27:43.873 INFO [stderr] | Dec 17 13:27:43.873 INFO [stderr] 112 | let time = current_time.parse::().unwrap(); Dec 17 13:27:43.874 INFO [stderr] | ^^^^ help: consider using `_time` instead Dec 17 13:27:43.874 INFO [stderr] Dec 17 13:27:43.874 INFO [stderr] warning: unused variable: `time_exchange2` Dec 17 13:27:43.875 INFO [stderr] --> src/main.rs:144:21 Dec 17 13:27:43.875 INFO [stderr] | Dec 17 13:27:43.875 INFO [stderr] 144 | let time_exchange2 = String::from(""); Dec 17 13:27:43.876 INFO [stderr] | ^^^^^^^^^^^^^^ help: consider using `_time_exchange2` instead Dec 17 13:27:43.876 INFO [stderr] Dec 17 13:27:43.876 INFO [stderr] warning: unused variable: `time_exchange2_datetime_format` Dec 17 13:27:43.876 INFO [stderr] --> src/main.rs:145:21 Dec 17 13:27:43.877 INFO [stderr] | Dec 17 13:27:43.877 INFO [stderr] 145 | let time_exchange2_datetime_format = String::from(""); Dec 17 13:27:43.877 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_time_exchange2_datetime_format` instead Dec 17 13:27:43.877 INFO [stderr] Dec 17 13:27:43.877 INFO [stderr] 86 | if let Err(e) = okex_socket.fetch_message() { Dec 17 13:27:43.878 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:43.878 INFO [stderr] | Dec 17 13:27:43.878 INFO [stderr] = note: #[warn(unused_variables)] on by default Dec 17 13:27:43.878 INFO [stderr] Dec 17 13:27:43.879 INFO [stderr] warning: unused variable: `e` Dec 17 13:27:43.879 INFO [stderr] --> src/main.rs:99:28 Dec 17 13:27:43.879 INFO [stderr] | Dec 17 13:27:43.879 INFO [stderr] 99 | if let Err(e) = binance_socket.fetch_message() { Dec 17 13:27:43.880 INFO [stderr] | ^ help: consider using `_e` instead Dec 17 13:27:43.880 INFO [stderr] Dec 17 13:27:43.880 INFO [stderr] warning: unused variable: `time` Dec 17 13:27:43.880 INFO [stderr] --> src/main.rs:112:17 Dec 17 13:27:43.881 INFO [stderr] | Dec 17 13:27:43.881 INFO [stderr] 112 | let time = current_time.parse::().unwrap(); Dec 17 13:27:43.881 INFO [stderr] | ^^^^ help: consider using `_time` instead Dec 17 13:27:43.881 INFO [stderr] Dec 17 13:27:43.882 INFO [stderr] warning: unused variable: `time_exchange2` Dec 17 13:27:43.882 INFO [stderr] --> src/main.rs:144:21 Dec 17 13:27:43.882 INFO [stderr] | Dec 17 13:27:43.883 INFO [stderr] 144 | let time_exchange2 = String::from(""); Dec 17 13:27:43.883 INFO [stderr] | ^^^^^^^^^^^^^^ help: consider using `_time_exchange2` instead Dec 17 13:27:43.883 INFO [stderr] Dec 17 13:27:43.884 INFO [stderr] warning: unused variable: `time_exchange2_datetime_format` Dec 17 13:27:43.884 INFO [stderr] --> src/main.rs:145:21 Dec 17 13:27:43.884 INFO [stderr] | Dec 17 13:27:43.884 INFO [stderr] 145 | let time_exchange2_datetime_format = String::from(""); Dec 17 13:27:43.885 INFO [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_time_exchange2_datetime_format` instead Dec 17 13:27:43.885 INFO [stderr] Dec 17 13:27:43.932 INFO [stderr] warning: unused `std::result::Result` that must be used Dec 17 13:27:43.933 INFO [stderr] --> src/main.rs:72:21 Dec 17 13:27:43.933 INFO [stderr] | Dec 17 13:27:43.933 INFO [stderr] 72 | wtr.flush(); Dec 17 13:27:43.933 INFO [stderr] | ^^^^^^^^^^^^ Dec 17 13:27:43.933 INFO [stderr] warning: unused `std::result::Result` that must be used Dec 17 13:27:43.934 INFO [stderr] --> src/main.rs:72:21 Dec 17 13:27:43.934 INFO [stderr] | Dec 17 13:27:43.934 INFO [stderr] 72 | wtr.flush(); Dec 17 13:27:43.934 INFO [stderr] | ^^^^^^^^^^^^ Dec 17 13:27:43.935 INFO [stderr] | Dec 17 13:27:43.935 INFO [stderr] = note: #[warn(unused_must_use)] on by default Dec 17 13:27:43.935 INFO [stderr] = note: this `Result` may be an `Err` variant, which should be handled Dec 17 13:27:43.935 INFO [stderr] Dec 17 13:27:43.935 INFO [stderr] | Dec 17 13:27:43.936 INFO [stderr] = note: #[warn(unused_must_use)] on by default Dec 17 13:27:43.936 INFO [stderr] = note: this `Result` may be an `Err` variant, which should be handled Dec 17 13:27:43.936 INFO [stderr] Dec 17 13:27:43.991 INFO [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 02s Dec 17 13:27:46.365 INFO running `"docker" "inspect" "baa2c937b03d32b88ca771f25c2963466dc7bdadd419b51e07bd720f6c071eab"` Dec 17 13:27:46.730 INFO running `"docker" "rm" "-f" "baa2c937b03d32b88ca771f25c2963466dc7bdadd419b51e07bd720f6c071eab"` Dec 17 13:27:47.084 INFO [stdout] baa2c937b03d32b88ca771f25c2963466dc7bdadd419b51e07bd720f6c071eab