[INFO] cloning repository https://github.com/iam-joey/rust-learning [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/iam-joey/rust-learning" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiam-joey%2Frust-learning", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiam-joey%2Frust-learning'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 23b540d761887e49be0df1d75a9efde5826d507f [INFO] building iam-joey/rust-learning against try#334963c956d25708feab489a3816ae63f639355d for pr-135216 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fiam-joey%2Frust-learning" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/iam-joey/rust-learning on toolchain 334963c956d25708feab489a3816ae63f639355d [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/iam-joey/rust-learning [INFO] finished tweaking git repo https://github.com/iam-joey/rust-learning [INFO] tweaked toml for git repo https://github.com/iam-joey/rust-learning written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/iam-joey/rust-learning 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" "+334963c956d25708feab489a3816ae63f639355d" "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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 03ff9757f7ddc9cc5a68546e83c1b3077647c72d14206b3306ca6ce44bfd3676 [INFO] running `Command { std: "docker" "start" "-a" "03ff9757f7ddc9cc5a68546e83c1b3077647c72d14206b3306ca6ce44bfd3676", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "03ff9757f7ddc9cc5a68546e83c1b3077647c72d14206b3306ca6ce44bfd3676", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "03ff9757f7ddc9cc5a68546e83c1b3077647c72d14206b3306ca6ce44bfd3676", kill_on_drop: false }` [INFO] [stdout] 03ff9757f7ddc9cc5a68546e83c1b3077647c72d14206b3306ca6ce44bfd3676 [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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b78b09d4c4977dead1eccae6f29ae6a335b43e346c62a8f9c81ff3e08a817e41 [INFO] running `Command { std: "docker" "start" "-a" "b78b09d4c4977dead1eccae6f29ae6a335b43e346c62a8f9c81ff3e08a817e41", kill_on_drop: false }` [INFO] [stderr] Compiling rustify v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `iterators::dsa` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use iterators::dsa; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `thread::sleep` and `time::Duration` [INFO] [stdout] --> src/main.rs:2:11 [INFO] [stdout] | [INFO] [stdout] 2 | use std::{thread::sleep, time::Duration}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `traits::Sounds` [INFO] [stdout] --> src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use traits::Sounds; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `fmt::format` [INFO] [stdout] --> src/files.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{fmt::format, fs, path}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type parameter `petType` should have an upper camel case name [INFO] [stdout] --> src/traits.rs:1:19 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `PetType` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/dsa.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | for i in a.chars().enumerate() {} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a` [INFO] [stdout] --> src/files.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | let a = fs::create_dir("joey"); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `file` [INFO] [stdout] --> src/files.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let file = fs::File::create(path); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_file` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fruit` [INFO] [stdout] --> src/iterators.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | let fruit = fruits.iter(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_fruit` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a` [INFO] [stdout] --> src/thread.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | let a = spawn(thread_busy); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Animal` is more private than the item `Person` [INFO] [stdout] --> src/traits.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `Person` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but trait `Animal` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/traits.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | trait Animal {} [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_bounds)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Friendly` is more private than the item `Person` [INFO] [stdout] --> src/traits.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ struct `Person` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but trait `Friendly` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/traits.rs:29:1 [INFO] [stdout] | [INFO] [stdout] 29 | trait Friendly {} [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `closure` is never used [INFO] [stdout] --> src/closure.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn closure() { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `plus_one` is never used [INFO] [stdout] --> src/dsa.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn plus_one(mut digits: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `single_number` is never used [INFO] [stdout] --> src/dsa.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn single_number(nums: Vec) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `string` is never used [INFO] [stdout] --> src/dsa.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn string(s: &String) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_create_dir` is never used [INFO] [stdout] --> src/files.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn test_create_dir() { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `file_create` is never used [INFO] [stdout] --> src/files.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn file_create() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `write_to_file` is never used [INFO] [stdout] --> src/files.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn write_to_file() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_file` is never used [INFO] [stdout] --> src/files.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn delete_file() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `say_hello` is never used [INFO] [stdout] --> src/helper.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn say_hello() { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_iterators` is never used [INFO] [stdout] --> src/iterators.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn test_iterators() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dsa` is never used [INFO] [stdout] --> src/iterators.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn dsa() { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_mutex` is never used [INFO] [stdout] --> src/mutex.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn test_mutex() { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_thread` is never used [INFO] [stdout] --> src/mympsc.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn test_thread() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `scope_thread_spawn` is never used [INFO] [stdout] --> src/scopethreads.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn scope_thread_spawn() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `thread_spawn` is never used [INFO] [stdout] --> src/thread.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn thread_spawn() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Person` is never constructed [INFO] [stdout] --> src/traits.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Person [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Animal` is never used [INFO] [stdout] --> src/traits.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | trait Animal {} [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Friendly` is never used [INFO] [stdout] --> src/traits.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | trait Friendly {} [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `sound` is never used [INFO] [stdout] --> src/traits.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub trait Sounds { [INFO] [stdout] | ------ method in this trait [INFO] [stdout] 36 | fn sound(&self) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/mympsc.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | sender.send(i + 1); [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] 31 | let _ = sender.send(i + 1); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/mympsc.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | t1.join(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 35 | let _ = t1.join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/scopethreads.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | scope.spawn(closure).join(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 13 | let _ = scope.spawn(closure).join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/scopethreads.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | scope.spawn(closure).join(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 15 | let _ = scope.spawn(closure).join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/scopethreads.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | scope.spawn(closure).join(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 17 | let _ = scope.spawn(closure).join(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: linking with `cc` failed: exit status: 1 [INFO] [stdout] | [INFO] [stdout] = note: LC_ALL="C" PATH="/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin:/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/opt/rustwide/cargo-home/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustceuj5o8/symbols.o" "<2 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-d6f1d924b2f4233e.rlib,libpanic_unwind-00eb06e39850f679.rlib,libobject-d0382f11baa011b6.rlib,libmemchr-b7e2e2c1a7e4643d.rlib,libaddr2line-30ced7f1999cfa29.rlib,libgimli-3ee7e14c58e31ebd.rlib,librustc_demangle-a4f649bba77ffcc5.rlib,libstd_detect-c89a3ce7ad7c3dbd.rlib,libhashbrown-e1ce1d3d110c6707.rlib,librustc_std_workspace_alloc-e0604fecbf0f39dc.rlib,libminiz_oxide-0a9c6172f04822cc.rlib,libadler2-14a33f7117abcee7.rlib,libunwind-24c16adbe5e57356.rlib,libcfg_if-d2688d4a5c8e415b.rlib,liblibc-8ff7ba6d97853f27.rlib,liballoc-5c001d095eb077ec.rlib,librustc_std_workspace_core-395a38b8e0851c9b.rlib,libcore-d453bab70303062c.rlib,libcompiler_builtins-dd545221bb4f4734.rlib}" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-B/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/rustify-002224ceb46ea8fb" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" [INFO] [stdout] = note: some arguments are omitted. use `--verbose` to show all linker arguments [INFO] [stdout] = note: collect2: fatal error: ld terminated with signal 7 [Bus error], core dumped [INFO] [stdout] compilation terminated. [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `rustify` (bin "rustify") due to 1 previous error; 36 warnings emitted [INFO] running `Command { std: "docker" "inspect" "b78b09d4c4977dead1eccae6f29ae6a335b43e346c62a8f9c81ff3e08a817e41", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b78b09d4c4977dead1eccae6f29ae6a335b43e346c62a8f9c81ff3e08a817e41", kill_on_drop: false }` [INFO] [stdout] b78b09d4c4977dead1eccae6f29ae6a335b43e346c62a8f9c81ff3e08a817e41