[INFO] fetching crate text_io 0.1.9... [INFO] checking text_io-0.1.9 against try#a7a572ce3edd6d476191fbfe92c9c1986e009b34 for pr-87190-3 [INFO] extracting crate text_io 0.1.9 into /workspace/builds/worker-47/source [INFO] validating manifest of crates.io crate text_io 0.1.9 on toolchain a7a572ce3edd6d476191fbfe92c9c1986e009b34 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a7a572ce3edd6d476191fbfe92c9c1986e009b34" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate text_io 0.1.9 [INFO] finished tweaking crates.io crate text_io 0.1.9 [INFO] tweaked toml for crates.io crate text_io 0.1.9 written to /workspace/builds/worker-47/source/Cargo.toml [INFO] crate crates.io crate text_io 0.1.9 already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a7a572ce3edd6d476191fbfe92c9c1986e009b34" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-47/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-47/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+a7a572ce3edd6d476191fbfe92c9c1986e009b34" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c49caf3206dcabf0e7fd8a75b3ecc92c6752864982f437732de675909eef5e9b [INFO] running `Command { std: "docker" "start" "-a" "c49caf3206dcabf0e7fd8a75b3ecc92c6752864982f437732de675909eef5e9b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c49caf3206dcabf0e7fd8a75b3ecc92c6752864982f437732de675909eef5e9b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c49caf3206dcabf0e7fd8a75b3ecc92c6752864982f437732de675909eef5e9b", kill_on_drop: false }` [INFO] [stdout] c49caf3206dcabf0e7fd8a75b3ecc92c6752864982f437732de675909eef5e9b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-47/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-47/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" "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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+a7a572ce3edd6d476191fbfe92c9c1986e009b34" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 65c83728fa23bf95fdb876f800d204c6f4bfa416ee02462b64214162ed24f6f9 [INFO] running `Command { std: "docker" "start" "-a" "65c83728fa23bf95fdb876f800d204c6f4bfa416ee02462b64214162ed24f6f9", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] Running `cargo fix --edition` [INFO] [stderr] Checking text_io v0.1.9 (/tmp/fixit) [INFO] [stderr] Migrating src/lib.rs from 2018 edition to 2021 [INFO] [stderr] Migrating tests/tuple.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_try_read.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_read.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_scan_simple.rs from 2018 edition to 2021 [INFO] [stderr] Migrating tests/module.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_scan.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_read_simple.rs from 2018 edition to 2021 [INFO] [stderr] Migrating examples/test_try_scan.rs from 2018 edition to 2021 [INFO] [stderr] Migrating tests/read_str.rs from 2018 edition to 2021 [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.31s [INFO] [stderr] Running `cargo check` to verify 2021 [INFO] [stderr] Checking text_io v0.1.9 (/tmp/fixit) [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_read_simple.rs:5:18 [INFO] [stdout] | [INFO] [stdout] 5 | let i: i32 = read!(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_read.rs:5:20 [INFO] [stdout] | [INFO] [stdout] 5 | let val: i32 = read!("the answer™: {}"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_scan.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | scan!("{}, {}\n{}", a, b, c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:6:20 [INFO] [stdout] | [INFO] [stdout] 6 | let val: i32 = read!("{}", "42".bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | let val: String = read!("{} 64", "42 64".bytes()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/module.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | scan!(text.bytes() => "{}:{}", a, b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | let val: i32 = read!("The answer is {}!!!11einself\n", file); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:25:21 [INFO] [stdout] | [INFO] [stdout] 25 | let s: String = read!("There is {} spoon", file); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | scan!(file => "The answer is {}!!!11einself\nThere is {} spoon", val, *s); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | scan!("42".bytes() => "{}", val); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 50 | scan!("12".bytes() => "{}", i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | scan!(stdin => "{}", i); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> tests/read_str.rs:56:5 [INFO] [stdout] | [INFO] [stdout] 56 | scan!(stdin => "{}", j); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_read.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | try_read!("the answer™: {}", input.bytes()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_read.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | Ok(try_read!("the answer™: {}")?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_read.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | try_read!("the answer™: {}", "the answer™: 42".bytes()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_scan.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | try_scan!(input.bytes() => "{}, {}\n{}", a, b, c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_scan.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | try_scan!("{}, {}\n{}", a, b, c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `text_io` due to 2 previous errors [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_try_scan.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | try_scan!("99, 42\n66".bytes() => "{}, {}\n{}", a, b, c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 187| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error: aborting due to 3 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error: aborting due to 9 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error[E0782]: trait objects must include the `dyn` keyword [INFO] [stdout] --> examples/test_scan_simple.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | scan!("{}", a); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in the macro `$crate::try_scan` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: add `dyn` keyword before this trait [INFO] [stdout] | [INFO] [stdout] 18| let stdin: &mut dyn Iterator = &mut ($input); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stdout] error: aborting due to 3 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0782`. [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] [stderr] error: failed to check after updating to 2021 [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `cargo check --frozen --all --all-targets --message-format=json` (exit status: 101) [INFO] running `Command { std: "docker" "inspect" "65c83728fa23bf95fdb876f800d204c6f4bfa416ee02462b64214162ed24f6f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "65c83728fa23bf95fdb876f800d204c6f4bfa416ee02462b64214162ed24f6f9", kill_on_drop: false }` [INFO] [stdout] 65c83728fa23bf95fdb876f800d204c6f4bfa416ee02462b64214162ed24f6f9