[INFO] cloning repository https://github.com/clivoa/backstep
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/clivoa/backstep" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclivoa%2Fbackstep", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclivoa%2Fbackstep'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f399e78a9f83d9d93e8be19191ce8c5d80bea754
[INFO] testing clivoa/backstep against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclivoa%2Fbackstep" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/clivoa/backstep
[INFO] finished tweaking git repo https://github.com/clivoa/backstep
[INFO] tweaked toml for git repo https://github.com/clivoa/backstep written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/clivoa/backstep on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/clivoa/backstep 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sdl2 v0.37.0
[INFO] [stderr]   Downloaded sdl2-sys v0.37.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a
[INFO] running `Command { std: "docker" "start" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling rollback-runner v0.1.0 (/opt/rustwide/workdir/crates/rollback-runner)
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling sdl2 v0.37.0
[INFO] [stderr]    Compiling fake-libretro-core v0.1.0 (/opt/rustwide/workdir/crates/fake-libretro-core)
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling clap_builder v4.6.6
[INFO] [stderr]    Compiling rollback-libretro v0.1.0 (/opt/rustwide/workdir/crates/rollback-libretro)
[INFO] [stderr]    Compiling sdl2-sys v0.37.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling clap v4.6.6
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling rollback-core v0.1.0 (/opt/rustwide/workdir/crates/rollback-core)
[INFO] [stderr]    Compiling rollback-report v0.1.0 (/opt/rustwide/workdir/crates/rollback-report)
[INFO] [stderr]    Compiling rollback-net v0.1.0 (/opt/rustwide/workdir/crates/rollback-net)
[INFO] [stderr]    Compiling rollback-arena v0.1.0 (/opt/rustwide/workdir/crates/rollback-arena)
[INFO] [stderr]    Compiling rollback-telemetry v0.1.0 (/opt/rustwide/workdir/crates/rollback-telemetry)
[INFO] [stderr]    Compiling rollback-client v0.1.0 (/opt/rustwide/workdir/crates/rollback-client)
[INFO] [stderr]    Compiling rollback-bot v0.1.0 (/opt/rustwide/workdir/crates/rollback-bot)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.99s
[INFO] running `Command { std: "docker" "inspect" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling rollback-report v0.1.0 (/opt/rustwide/workdir/crates/rollback-report)
[INFO] [stderr]    Compiling fake-libretro-core v0.1.0 (/opt/rustwide/workdir/crates/fake-libretro-core)
[INFO] [stderr]    Compiling rollback-libretro v0.1.0 (/opt/rustwide/workdir/crates/rollback-libretro)
[INFO] [stderr]    Compiling rollback-telemetry v0.1.0 (/opt/rustwide/workdir/crates/rollback-telemetry)
[INFO] [stderr]    Compiling rollback-runner v0.1.0 (/opt/rustwide/workdir/crates/rollback-runner)
[INFO] [stderr]    Compiling rollback-client v0.1.0 (/opt/rustwide/workdir/crates/rollback-client)
[INFO] [stderr]    Compiling rollback-bot v0.1.0 (/opt/rustwide/workdir/crates/rollback-bot)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling rollback-net v0.1.0 (/opt/rustwide/workdir/crates/rollback-net)
[INFO] [stderr]    Compiling rollback-arena v0.1.0 (/opt/rustwide/workdir/crates/rollback-arena)
[INFO] [stderr]    Compiling rollback-core v0.1.0 (/opt/rustwide/workdir/crates/rollback-core)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 13.52s
[INFO] running `Command { std: "docker" "inspect" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/fake_libretro_core-828ba89d0102d6a0)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test tests::a_state_round_trips_through_the_byte_form ... ok
[INFO] [stdout] test tests::a_wrong_sized_state_is_rejected ... ok
[INFO] [stdout] test tests::input_order_changes_the_state ... ok
[INFO] [stdout] test tests::the_same_inputs_give_the_same_state ... ok
[INFO] [stdout] test tests::positions_wrap_rather_than_going_negative ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_arena-f8d4e05f15ca6cb2)
[INFO] [stdout] 
[INFO] [stdout] running 32 tests
[INFO] [stdout] test arena::tests::an_attack_out_of_range_does_nothing ... ok
[INFO] [stdout] test arena::tests::blocking_converts_a_hit_into_chip_damage ... ok
[INFO] [stdout] test arena::tests::health_percent_tracks_damage ... ok
[INFO] [stdout] test arena::tests::a_projectile_crosses_the_stage_and_connects ... ok
[INFO] [stdout] test arena::tests::loading_an_undersized_blob_is_an_error ... ok
[INFO] [stdout] test arena::tests::one_swing_can_only_connect_once ... ok
[INFO] [stdout] test arena::tests::the_same_inputs_always_produce_the_same_checksum ... ok
[INFO] [stdout] test arena::tests::the_special_respects_its_cooldown ... ok
[INFO] [stdout] test arena::tests::an_attack_in_range_takes_health ... ok
[INFO] [stdout] test arena::tests::a_ko_freezes_the_round_and_then_resets_it ... ok
[INFO] [stdout] test arena::tests::fighters_never_overlap ... ok
[INFO] [stdout] test codec::tests::a_wrong_length_is_refused_before_any_read ... ok
[INFO] [stdout] test codec::tests::values_round_trip_in_order ... ok
[INFO] [stdout] test arena::tests::state_blob_has_the_documented_size ... ok
[INFO] [stdout] test bot::tests::the_two_sides_do_not_mirror_each_other_on_a_shared_seed ... ok
[INFO] [stdout] test arena::tests::state_round_trips_exactly ... ok
[INFO] [stdout] test fixed::tests::clamp_and_signum_behave ... ok
[INFO] [stdout] test arena::tests::walking_moves_and_the_stage_has_walls ... ok
[INFO] [stdout] test bot::tests::different_seeds_diverge ... ok
[INFO] [stdout] test bot::tests::bots_actually_fight ... ok
[INFO] [stdout] test arena::tests::a_jump_leaves_the_ground_and_comes_back ... ok
[INFO] [stdout] test fixed::tests::mul_does_not_overflow_at_large_magnitudes ... ok
[INFO] [stdout] test bot::tests::a_bot_never_holds_both_directions ... ok
[INFO] [stdout] test bot::tests::an_incoming_projectile_makes_the_bot_guard ... ok
[INFO] [stdout] test fixed::tests::abs_survives_i32_min ... ok
[INFO] [stdout] test fixed::tests::div_is_the_inverse_of_mul_for_exact_values ... ok
[INFO] [stdout] test bot::tests::the_same_seed_replays_the_same_match ... ok
[INFO] [stdout] test fixed::tests::px_conversions_round_trip_on_whole_pixels ... ok
[INFO] [stdout] test fixed::tests::mul_matches_rational_arithmetic ... ok
[INFO] [stdout] test bot::tests::a_stunned_bot_sends_neutral ... ok
[INFO] [stdout] test arena::tests::fighters_start_apart_and_face_each_other ... ok
[INFO] [stdout] test arena::tests::output_mode_cannot_touch_simulation_state ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/replay_100k.rs (/opt/rustwide/target/debug/deps/replay_100k-02e9f20ea1c06ce3)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test print_golden_constants ... ignored, prints the golden constants; run with --ignored to regenerate
[INFO] [stdout] test health_and_positions_stay_inside_their_bounds_for_the_whole_replay ... ok
[INFO] [stdout] test a_hundred_thousand_frames_replay_to_the_same_checksum ... ok
[INFO] [stdout] test a_hundred_thousand_bot_frames_replay_to_the_same_checksum ... ok
[INFO] [stdout] test saving_and_restoring_mid_replay_changes_nothing ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_bot-e7b6fa91311b5469)
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rollback_bot-3187873cc284685c)
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.28s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_client-6c46ecb2281872b0)
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rollback_client-1da7af4836bff421)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 26 tests
[INFO] [stdout] test font::tests::glyphs_advance_left_to_right ... ok
[INFO] [stdout] test font::tests::lowercase_maps_to_uppercase ... ok
[INFO] [stdout] test font::tests::no_pixel_escapes_the_line_height ... ok
[INFO] [stdout] test input::tests::a_single_direction_is_untouched ... ok
[INFO] [stdout] test input::tests::combining_nothing_is_neutral ... ok
[INFO] [stdout] test input::tests::the_deadzone_is_large_enough_to_ignore_drift ... ok
[INFO] [stdout] test overlay::tests::a_desync_replaces_the_last_line ... ok
[INFO] [stdout] test overlay::tests::a_rollback_repaints_the_frame_it_was_noticed_on ... ok
[INFO] [stdout] test overlay::tests::a_stall_is_never_overwritten_by_a_rollback ... ok
[INFO] [stdout] test font::tests::every_glyph_fits_the_cell ... ok
[INFO] [stdout] test overlay::tests::the_strip_grows_then_scrolls ... ok
[INFO] [stdout] test overlay::tests::the_strip_keeps_frames_in_order ... ok
[INFO] [stdout] test overlay::tests::the_text_reports_the_headline_numbers ... ok
[INFO] [stdout] test render::tests::casting_an_empty_framebuffer_is_empty ... ok
[INFO] [stdout] test render::tests::casting_pixels_to_bytes_preserves_length_and_order ... ok
[INFO] [stdout] test font::tests::an_unknown_character_has_no_glyph_but_still_takes_space ... ok
[INFO] [stdout] test font::tests::width_accounts_for_tracking_and_scale ... ok
[INFO] [stdout] test input::tests::opposing_directions_cancel_to_neutral ... ok
[INFO] [stdout] test font::tests::a_space_lights_nothing_and_a_full_block_lights_everything ... ok
[INFO] [stdout] test render::tests::the_overlay_box_fits_the_window ... ok
[INFO] [stdout] test input::tests::every_logical_button_is_reachable_from_the_keyboard ... ok
[INFO] [stdout] test overlay::tests::every_mark_has_a_distinct_colour ... ok
[INFO] [stdout] test render::tests::the_history_strip_fits_the_window ... ok
[INFO] [stdout] test input::tests::combining_devices_ors_their_buttons ... ok
[INFO] [stdout] test input::tests::every_logical_button_is_reachable_from_a_gamepad ... ok
[INFO] [stdout] test overlay::tests::every_line_is_drawable_by_the_bitmap_font ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_core-b36d4faacb0dfc7a)
[INFO] [stdout] 
[INFO] [stdout] running 45 tests
[INFO] [stdout] test config::tests::simulation_kind_round_trips_through_str ... ok
[INFO] [stdout] test config::tests::compatibility_hash_reacts_to_every_agreed_field ... ok
[INFO] [stdout] test input::tests::set_and_contains_round_trip ... ok
[INFO] [stdout] test config::tests::state_history_must_exceed_prediction_limit ... ok
[INFO] [stdout] test session::tests::a_checksum_is_not_compared_while_a_correction_is_still_pending ... ok
[INFO] [stdout] test session::tests::a_checksum_that_arrives_early_is_compared_once_the_frame_is_final ... ok
[INFO] [stdout] test session::tests::a_correct_prediction_never_rolls_back ... ok
[INFO] [stdout] test session::tests::a_hole_behind_an_out_of_order_batch_still_stalls_the_session ... ok
[INFO] [stdout] test session::tests::a_matching_peer_checksum_keeps_the_session_alive ... ok
[INFO] [stdout] test session::tests::a_mismatching_peer_checksum_ends_the_session_immediately ... ok
[INFO] [stdout] test session::tests::a_stall_clears_once_the_peer_catches_up ... ok
[INFO] [stdout] test session::tests::a_wrong_prediction_rolls_back_to_the_divergent_frame ... ok
[INFO] [stdout] test input::tests::other_handle_is_an_involution ... ok
[INFO] [stdout] test rng::tests::same_seed_same_stream ... ok
[INFO] [stdout] test session::tests::advancing_without_a_local_input_is_an_error ... ok
[INFO] [stdout] test session::tests::an_absurd_checksum_frame_is_discarded_rather_than_parked ... ok
[INFO] [stdout] test rng::tests::zero_seed_still_advances ... ok
[INFO] [stdout] test session::tests::an_early_checksum_that_disagrees_still_ends_the_session ... ok
[INFO] [stdout] test session::tests::checksums_are_emitted_once_per_interval_and_only_when_final ... ok
[INFO] [stdout] test session::tests::multiple_divergences_in_one_batch_are_all_repaired ... ok
[INFO] [stdout] test session::tests::silence_past_the_timeout_ends_the_session ... ok
[INFO] [stdout] test session::tests::the_session_stalls_at_the_prediction_limit ... ok
[INFO] [stdout] test stats::tests::accuracy_and_depth_use_the_recorded_counters ... ok
[INFO] [stdout] test rng::tests::below_respects_bound ... ok
[INFO] [stdout] test rng::tests::chance_permille_endpoints_are_absolute ... ok
[INFO] [stdout] test stats::tests::accuracy_of_a_session_that_never_predicted_is_one ... ok
[INFO] [stdout] test stats::tests::misprediction_cannot_push_accuracy_below_zero ... ok
[INFO] [stdout] test stats::tests::state_size_tracks_last_and_max ... ok
[INFO] [stdout] test testing::tests::a_short_state_blob_is_rejected ... ok
[INFO] [stdout] test testing::tests::input_order_changes_the_checksum ... ok
[INFO] [stdout] test testing::tests::output_mode_does_not_touch_simulation_state ... ok
[INFO] [stdout] test testing::tests::state_round_trips ... ok
[INFO] [stdout] test config::tests::compatibility_hash_ignores_network_profile ... ok
[INFO] [stdout] test input::tests::buttons_have_unique_masks ... ok
[INFO] [stdout] test config::tests::default_config_is_valid_and_matches_the_spec ... ok
[INFO] [stdout] test config::tests::all_named_profiles_resolve ... ok
[INFO] [stdout] test session::tests::contradicting_a_confirmed_frame_is_rejected ... ok
[INFO] [stdout] test session::tests::duplicate_and_reordered_batches_are_absorbed_silently ... ok
[INFO] [stdout] test session::tests::future_inputs_arriving_early_are_kept_for_later ... ok
[INFO] [stdout] test session::tests::input_delay_files_inputs_into_the_future ... ok
[INFO] [stdout] test session::tests::local_inputs_since_feeds_the_redundant_batch ... ok
[INFO] [stdout] test session::tests::resimulation_reaches_the_same_state_as_a_clean_run ... ok
[INFO] [stdout] test session::tests::rolling_back_past_the_state_buffer_is_reported_not_silently_wrong ... ok
[INFO] [stdout] test config::tests::combined_profile_matches_the_experiment_matrix ... ok
[INFO] [stderr]      Running tests/property_delivery.rs (/opt/rustwide/target/debug/deps/property_delivery-31f8a45f20e8d75c)
[INFO] [stdout] test simulation::tests::only_present_emits_output ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test prediction_never_exceeds_the_configured_limit ... ok
[INFO] [stdout] test repeated_delivery_is_idempotent ... ok
[INFO] [stdout] test the_confirmed_frontier_never_moves_backwards ... ok
[INFO] [stdout] test arbitrary_delivery_converges_on_the_reference ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.36s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_libretro-194dc9b516ae28fe)
[INFO] [stdout] 
[INFO] [stdout] running 30 tests
[INFO] [stdout] test hash::tests::a_missing_file_is_an_error_not_a_zero_digest ... ok
[INFO] [stdout] test host::tests::an_unknown_environment_command_is_refused_and_recorded ... ok
[INFO] [stdout] test script::tests::a_game_round_trips_through_its_name ... ok
[INFO] [stdout] test hash::tests::hex_helpers_agree_with_each_other ... ok
[INFO] [stdout] test host::tests::input_state_reads_the_requested_port ... ok
[INFO] [stdout] test host::tests::discarded_output_is_counted_and_not_stored ... ok
[INFO] [stdout] test host::tests::pixel_conversion_preserves_the_extremes ... ok
[INFO] [stdout] test host::tests::the_environment_rejects_an_unsupported_pixel_format ... ok
[INFO] [stdout] test host::tests::the_environment_survives_null_pointers ... ok
[INFO] [stdout] test hash::tests::hashes_the_known_sha256_of_abc ... ok
[INFO] [stdout] test core::tests::retropad_mapping_is_one_bit_per_logical_button ... ok
[INFO] [stdout] test ffi::tests::struct_layouts_match_the_c_header ... ok
[INFO] [stdout] test ffi::tests::the_experimental_bit_is_set_where_the_header_sets_it ... ok
[INFO] [stdout] test host::tests::pixel_conversion_keeps_channels_separate ... ok
[INFO] [stdout] test core::tests::loading_a_file_that_is_not_a_core_fails_cleanly ... ok
[INFO] [stdout] test script::tests::a_longer_cursor_walk_takes_more_frames ... ok
[INFO] [stdout] test script::tests::an_empty_macro_is_immediately_over ... ok
[INFO] [stdout] test script::tests::a_macro_reports_the_input_of_the_step_it_is_in ... ok
[INFO] [stdout] test script::tests::every_boot_script_lets_the_logos_finish_first ... ok
[INFO] [stdout] test script::tests::only_the_neo_geo_game_needs_a_bios ... ok
[INFO] [stdout] test script::tests::every_boot_fits_in_a_reasonable_wait ... ok
[INFO] [stdout] test script::tests::every_boot_script_presses_coin_before_start ... ok
[INFO] [stdout] test core::tests::combined_inputs_or_together ... ok
[INFO] [stdout] test script::tests::start_is_held_across_the_measured_accept_point ... ok
[INFO] [stdout] test script::tests::the_bot_is_reproducible_from_its_seed ... ok
[INFO] [stdout] test script::tests::the_bot_never_holds_opposing_directions ... ok
[INFO] [stdout] test script::tests::the_two_sides_select_different_characters ... ok
[INFO] [stdout] test script::tests::the_director_hands_over_only_after_both_scripts_finish ... ok
[INFO] [stdout] test script::tests::the_bot_plays_a_whole_fighting_game_move_list ... ok
[INFO] [stdout] test script::tests::the_two_sides_face_each_other ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/fake_core_ffi.rs (/opt/rustwide/target/debug/deps/fake_core_ffi-e5d727ce3f69e7ea)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test a_modest_checksum_skip_still_distinguishes_states ... ok
[INFO] [stdout] test output_mode_does_not_change_the_machine_state ... ok
[INFO] [stdout] test resimulated_frames_produce_no_video_or_audio ... ok
[INFO] [stdout] test loading_a_game_reports_a_usable_state_size_and_geometry ... ok
[INFO] [stdout] test the_core_can_log_through_the_c_variadic_shim ... ok
[INFO] [stdout] test a_wrong_sized_state_is_refused ... ok
[INFO] [stdout] test a_full_rollback_session_over_the_ffi_converges ... ok
[INFO] [stdout] test a_state_restores_exactly ... ok
[INFO] [stdout] test advancing_produces_video_and_serialisable_state ... ok
[INFO] [stdout] test a_checksum_skip_that_swallows_the_state_is_refused ... ok
[INFO] [stdout] test a_second_core_in_the_same_process_is_refused ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_net-519ed6552921eacc)
[INFO] [stdout] test the_core_loads_reports_itself_and_unloads ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 49 tests
[INFO] [stdout] test auth::tests::a_flipped_body_bit_fails_verification ... ok
[INFO] [stdout] test auth::tests::a_sealed_datagram_opens_to_the_original_body ... ok
[INFO] [stdout] test auth::tests::the_key_never_appears_in_debug_output ... ok
[INFO] [stdout] test auth::tests::malformed_hex_keys_are_rejected ... ok
[INFO] [stdout] test auth::tests::a_datagram_with_no_room_for_a_tag_is_rejected ... ok
[INFO] [stdout] test auth::tests::a_flipped_tag_bit_fails_verification ... ok
[INFO] [stdout] test cursor::tests::reading_past_the_end_is_an_error_not_a_panic ... ok
[INFO] [stdout] test cursor::tests::trailing_bytes_are_rejected ... ok
[INFO] [stdout] test auth::tests::a_different_key_cannot_open_the_datagram ... ok
[INFO] [stdout] test emulator::tests::a_transparent_profile_passes_datagrams_straight_through ... ok
[INFO] [stdout] test emulator::tests::flush_releases_everything_still_queued ... ok
[INFO] [stdout] test emulator::tests::reordering_actually_swaps_the_delivery_order ... ok
[INFO] [stdout] test link::tests::a_late_arrival_counts_as_reordered_and_repairs_the_loss_estimate ... ok
[INFO] [stdout] test emulator::tests::a_fixed_delay_holds_the_datagram_for_exactly_that_long ... ok
[INFO] [stdout] test auth::tests::hex_keys_round_trip ... ok
[INFO] [stdout] test emulator::tests::jitter_stays_inside_the_configured_band ... ok
[INFO] [stdout] test emulator::tests::duplication_delivers_the_datagram_twice ... ok
[INFO] [stdout] test link::tests::bitrate_is_bits_per_second ... ok
[INFO] [stdout] test link::tests::rtt_starts_at_the_first_sample_and_then_smooths ... ok
[INFO] [stdout] test link::tests::stale_send_timestamps_are_forgotten ... ok
[INFO] [stdout] test cursor::tests::every_width_round_trips ... ok
[INFO] [stdout] test link::tests::an_in_order_run_is_all_unique_and_loses_nothing ... ok
[INFO] [stdout] test link::tests::a_genuine_gap_shows_up_as_loss ... ok
[INFO] [stdout] test link::tests::a_huge_jump_forward_resets_the_window_without_panicking ... ok
[INFO] [stdout] test link::tests::an_ack_for_something_we_never_sent_is_ignored ... ok
[INFO] [stdout] test transport::tests::an_input_batch_ack_produces_an_rtt_sample ... ok
[INFO] [stdout] test transport::tests::flush_releases_queued_datagrams_immediately ... ok
[INFO] [stdout] test transport::tests::sending_without_a_peer_is_refused ... ok
[INFO] [stdout] test transport::tests::sequence_numbers_increment_per_send ... ok
[INFO] [stdout] test transport::tests::garbage_that_is_not_even_a_datagram_is_counted_as_an_auth_failure ... ok
[INFO] [stdout] test emulator::tests::the_same_seed_produces_the_same_impairment_pattern ... ok
[INFO] [stdout] test transport::tests::a_server_learns_the_peer_address_from_the_first_datagram ... ok
[INFO] [stdout] test transport::tests::a_datagram_signed_with_the_wrong_key_is_counted_and_dropped ... ok
[INFO] [stdout] test transport::tests::a_message_survives_the_round_trip ... ok
[INFO] [stdout] test wire::tests::compatibility_reports_the_first_difference ... ok
[INFO] [stdout] test wire::tests::every_packet_fits_the_datagram_cap ... ok
[INFO] [stdout] test wire::tests::every_rejection_has_a_readable_reason ... ok
[INFO] [stdout] test wire::tests::an_oversized_input_batch_is_refused_at_encode_time ... ok
[INFO] [stdout] test wire::tests::identity_encoding_has_the_documented_length ... ok
[INFO] [stdout] test link::tests::a_duplicate_is_detected_and_told_to_be_ignored ... ok
[INFO] [stdout] test link::tests::auth_and_parse_failures_are_counted_separately ... ok
[INFO] [stdout] test wire::tests::every_message_round_trips ... ok
[INFO] [stdout] test transport::tests::the_timeout_clock_only_moves_on_authenticated_datagrams ... ok
[INFO] [stdout] test wire::tests::bad_headers_are_rejected ... ok
[INFO] [stdout] test wire::tests::truncated_and_padded_payloads_are_rejected ... ok
[INFO] [stdout] test wire::tests::unknown_enum_values_are_rejected_rather_than_defaulted ... ok
[INFO] [stdout] test wire::tests::two_peers_cannot_claim_the_same_slot ... ok
[INFO] [stdout] test emulator::tests::loss_drops_roughly_the_configured_fraction ... ok
[INFO] [stdout] test transport::tests::an_impaired_profile_holds_datagrams_until_pumped ... ok
[INFO] [stderr]      Running tests/golden_protocol.rs (/opt/rustwide/target/debug/deps/golden_protocol-4cb3dbd0749d3376)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 49 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test golden_hello ... ok
[INFO] [stdout] test golden_input_batch ... ok
[INFO] [stdout] test a_datagram_from_the_future_is_rejected_rather_than_misparsed ... ok
[INFO] [stdout] test golden_hello_ack_accepted_and_rejected ... ok
[INFO] [stdout] test the_passphrase_derivation_is_stable ... ok
[INFO] [stdout] test golden_input_batch_with_a_negative_frame ... ok
[INFO] [stdout] test golden_sealed_datagram ... ok
[INFO] [stdout] test the_header_layout_is_fixed ... ok
[INFO] [stdout] test every_message_stays_inside_the_datagram_cap ... ok
[INFO] [stdout] test golden_telemetry_field_order ... ok
[INFO] [stdout] test golden_disconnect_reasons ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_report-d658efaee25a447a)
[INFO] [stdout] test golden_checksum ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rollback_report-a02ed6d28e04e51f)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 26 tests
[INFO] [stdout] test html::tests::charts_are_inline_svg_with_finite_coordinates ... ok
[INFO] [stdout] test html::tests::html_special_characters_are_escaped ... ok
[INFO] [stdout] test html::tests::an_empty_run_produces_a_readable_page ... ok
[INFO] [stdout] test html::tests::both_peers_appear_in_one_table ... ok
[INFO] [stdout] test html::tests::every_profile_gets_an_overview_row ... ok
[INFO] [stdout] test html::tests::the_report_is_self_contained ... ok
[INFO] [stdout] test html::tests::a_desync_is_called_out_loudly ... ok
[INFO] [stdout] test summary::tests::quoting_leaves_ordinary_values_alone ... ok
[INFO] [stdout] test html::tests::a_session_with_one_sample_draws_no_chart_rather_than_a_broken_one ... ok
[INFO] [stdout] test parse::tests::a_complete_log_yields_a_full_summary ... ok
[INFO] [stdout] test summary::tests::values_with_commas_and_quotes_are_escaped ... ok
[INFO] [stdout] test parse::tests::sessions_group_by_simulation_mode_and_profile ... ok
[INFO] [stdout] test parse::tests::loss_is_inferred_from_the_sequence_run ... ok
[INFO] [stdout] test parse::tests::a_log_with_only_a_header_does_not_divide_by_zero ... ok
[INFO] [stdout] test parse::tests::periodic_snapshots_become_the_time_series ... ok
[INFO] [stdout] test summary::tests::an_empty_run_still_produces_a_header ... ok
[INFO] [stdout] test parse::tests::a_truncated_log_is_summarised_and_flagged_incomplete ... ok
[INFO] [stdout] test tests::known_timestamps_format_correctly ... ok
[INFO] [stdout] test summary::tests::a_missing_remote_summary_leaves_the_column_empty ... ok
[INFO] [stdout] test summary::tests::derived_columns_are_computed_not_copied ... ok
[INFO] [stdout] test summary::tests::the_header_matches_every_row ... ok
[INFO] [stdout] test tests::a_pre_epoch_timestamp_does_not_panic ... ok
[INFO] [stdout] test tests::the_current_time_is_plausible ... ok
[INFO] [stdout] test parse::tests::reading_a_directory_finds_every_log_in_order ... ok
[INFO] [stdout] test html::tests::the_caveats_explain_why_there_is_no_one_way_latency ... ok
[INFO] [stdout] test tests::the_epoch_formats_correctly ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_runner-9281f78a1136763c)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 22 tests
[INFO] [stdout] test app::tests::identities_of_two_peers_from_the_same_build_are_compatible ... ok
[INFO] [stdout] test app::tests::session_names_are_filesystem_safe ... ok
[INFO] [stdout] test handshake::tests::describe_names_both_slots ... ok
[INFO] [stdout] test handshake::tests::an_identity_is_never_compatible_with_itself ... ok
[INFO] [stdout] test app::tests::the_session_key_is_never_taken_from_a_command_line ... ok
[INFO] [stdout] test app::tests::a_different_seed_makes_the_identities_incompatible ... ok
[INFO] [stdout] test app::tests::hashing_a_real_file_matches_the_known_digest ... ok
[INFO] [stdout] test app::tests::the_commit_is_captured_and_fits_the_wire_field ... ok
[INFO] [stdout] test app::tests::a_missing_artefact_hashes_to_the_absent_digest ... ok
[INFO] [stdout] test handshake::tests::compatible_peers_exchange_identities ... ok
[INFO] [stdout] test record::tests::a_missing_ffmpeg_is_a_clear_error_not_a_panic ... ok
[INFO] [stdout] test record::tests::a_recording_produces_a_playable_file ... ok
[INFO] [stdout] test runner::tests::the_log_is_written_and_closed ... ok
[INFO] [stdout] test handshake::tests::a_client_with_nobody_listening_times_out ... ok
[INFO] [stdout] test runner::tests::a_peer_that_dies_mid_session_times_out_while_stalled ... ok
[INFO] [stdout] test runner::tests::a_silent_peer_stalls_and_then_times_out ... ok
[INFO] [stdout] test runner::tests::pacing_targets_the_configured_frame_rate ... ok
[INFO] [stdout] test runner::tests::two_peers_that_stall_at_once_still_deliver_what_is_already_in_flight ... ok
[INFO] [stdout] test runner::tests::two_runners_advance_together_and_converge ... ok
[INFO] [stdout] test handshake::tests::a_seed_mismatch_tells_the_client_why_and_leaves_the_host_listening ... ok
[INFO] [stdout] test handshake::tests::two_peers_asking_for_the_same_slot_are_refused ... ok
[INFO] [stdout] test handshake::tests::a_rom_hash_mismatch_is_refused ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rollback_telemetry-5ef8289c523a57f7)
[INFO] [stdout] running 17 tests
[INFO] [stdout] test exporter::tests::the_session_info_label_set_survives_quotes_and_backslashes ... ok
[INFO] [stdout] test exporter::tests::every_metric_has_a_help_and_a_type_line ... ok
[INFO] [stdout] test exporter::tests::the_rendered_output_parses_as_prometheus_text ... ok
[INFO] [stdout] test jsonl::tests::a_metrics_record_carries_the_whole_snapshot ... ok
[INFO] [stdout] test jsonl::tests::creating_a_log_makes_the_directory ... ok
[INFO] [stdout] test exporter::tests::accuracy_is_one_when_nothing_was_predicted ... ok
[INFO] [stdout] test jsonl::tests::every_line_is_standalone_json ... ok
[INFO] [stdout] test exporter::tests::integers_render_without_scientific_notation ... ok
[INFO] [stdout] test exporter::tests::remote_metrics_only_appear_once_the_peer_has_reported ... ok
[INFO] [stdout] test exporter::tests::an_unknown_path_is_a_404 ... ok
[INFO] [stdout] test jsonl::tests::session_events_keep_their_own_tag_when_flattened ... ok
[INFO] [stdout] test jsonl::tests::the_log_counts_what_it_wrote ... ok
[INFO] [stdout] test snapshot::tests::the_summary_mirrors_the_local_counters ... ok
[INFO] [stdout] test snapshot::tests::peer_labels_are_stable ... ok
[INFO] [stdout] test exporter::tests::the_exporter_serves_metrics_over_http ... ok
[INFO] [stdout] test snapshot::tests::process_stats_read_something_plausible_on_linux ... ok
[INFO] [stdout] test exporter::tests::published_snapshots_replace_the_previous_one ... ok
[INFO] [stderr]    Doc-tests fake_libretro_core
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_arena
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_bot
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_client
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_core
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test crates/rollback-core/src/lib.rs - (line 6) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_libretro
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_net
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_report
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_runner
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rollback_telemetry
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a", kill_on_drop: false }`
[INFO] [stdout] d68f4424963b85f0cc30e24ad5ae27299e2faf486d5417cc9e71d45f7bfebe3a
