g3-cli 0.2.0

CLI interface for G3/GB AI coding agent
Build #2845840 2026-01-24 04:25:39

Build failed. If you want to re-trigger a documentation build, you can do it here. You can find more information on docs.rs builds documentation on the builds page.

# rustc version
rustc 1.95.0-nightly (d222ddc4d 2026-01-23)# docs.rs version
docsrs 0.1.0 (07f7a059 2026-01-22 )# build log
[INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace-builder/builds/g3-cli-0.2.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace-builder/builds/g3-cli-0.2.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace-builder/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace-builder/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "6442450944" "--cpus" "6" "--user" "1001:1001" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20260123-1.95.0-nightly-d222ddc4d\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 88b8e6d3becfabcbf720206f3b4d46fb09090066da778ab71e611f0e1d56529e
[INFO] running `Command { std: "docker" "start" "-a" "88b8e6d3becfabcbf720206f3b4d46fb09090066da778ab71e611f0e1d56529e", kill_on_drop: false }`
[INFO] [stderr] warning: target filter specified, but no targets matched; this is a no-op
[INFO] [stderr]     Checking g3-computer-control v0.2.0
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking onig_sys v69.9.1
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.5.1
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr] error[E0432]: unresolved import `tesseract`
[INFO] [stderr]  --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tesseract::Tesseract;
[INFO] [stderr]   |     ^^^^^^^^^ use of unresolved module or unlinked crate `tesseract`
[INFO] [stderr]   |
[INFO] [stderr]   = help: if you wanted to use a crate named `tesseract`, use `cargo add tesseract` to add it to your `Cargo.toml`
[INFO] [stderr] 
[INFO] [stderr]     Checking quick-xml v0.38.4
[INFO] [stderr] error[E0407]: method `click` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | /     async fn click(&self, _button: MouseButton) -> Result<()> {
[INFO] [stderr] 26 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 27 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `double_click` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | /     async fn double_click(&self, _button: MouseButton) -> Result<()> {
[INFO] [stderr] 30 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 31 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `type_text` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 | /     async fn type_text(&self, _text: &str) -> Result<()> {
[INFO] [stderr] 34 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 35 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `press_key` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:37:5
[INFO] [stderr]    |
[INFO] [stderr] 37 | /     async fn press_key(&self, _key: &str) -> Result<()> {
[INFO] [stderr] 38 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 39 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `list_windows` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 41 | /     async fn list_windows(&self) -> Result<Vec<Window>> {
[INFO] [stderr] 42 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 43 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `focus_window` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:45:5
[INFO] [stderr]    |
[INFO] [stderr] 45 | /     async fn focus_window(&self, _window_id: &str) -> Result<()> {
[INFO] [stderr] 46 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 47 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `get_window_bounds` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:49:5
[INFO] [stderr]    |
[INFO] [stderr] 49 | /     async fn get_window_bounds(&self, _window_id: &str) -> Result<Rect> {
[INFO] [stderr] 50 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 51 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `find_element` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:53:5
[INFO] [stderr]    |
[INFO] [stderr] 53 | /     async fn find_element(&self, _selector: &ElementSelector) -> Result<Option<UIElement>> {
[INFO] [stderr] 54 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 55 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `get_element_text` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 57 | /     async fn get_element_text(&self, _element_id: &str) -> Result<String> {
[INFO] [stderr] 58 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 59 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `get_element_bounds` is not a member of trait `ComputerController`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:61:5
[INFO] [stderr]    |
[INFO] [stderr] 61 | /     async fn get_element_bounds(&self, _element_id: &str) -> Result<Rect> {
[INFO] [stderr] 62 | |         anyhow::bail!("Linux implementation not yet available")
[INFO] [stderr] 63 | |     }
[INFO] [stderr]    | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0407]: method `find_text_on_screen` is not a member of trait `ComputerController`
[INFO] [stderr]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:134:5
[INFO] [stderr]     |
[INFO] [stderr] 134 | /     async fn find_text_on_screen(&self, _text: &str) -> Result<Option<Point>> {
[INFO] [stderr] 135 | |         // Check if tesseract is available on the system
[INFO] [stderr] 136 | |         let tesseract_check = std::process::Command::new("which")
[INFO] [stderr] 137 | |             .arg("tesseract")
[INFO] [stderr] ...   |
[INFO] [stderr] 187 | |     }
[INFO] [stderr]     | |_____^ not a member of trait `ComputerController`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `AXUIElement` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/macax/controller.rs:19:49
[INFO] [stderr]    |
[INFO] [stderr] 19 |     app_cache: std::sync::Mutex<HashMap<String, AXUIElement>>,
[INFO] [stderr]    |                                                 ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/macax/mod.rs:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct AXElement {
[INFO] [stderr]    | -------------------- similarly named struct `AXElement` defined here
[INFO] [stderr]    |
[INFO] [stderr] help: a struct with a similar name exists
[INFO] [stderr]    |
[INFO] [stderr] 19 -     app_cache: std::sync::Mutex<HashMap<String, AXUIElement>>,
[INFO] [stderr] 19 +     app_cache: std::sync::Mutex<HashMap<String, AXElement>>,
[INFO] [stderr]    |
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct MacAxController<AXUIElement> {
[INFO] [stderr]    |                           +++++++++++++
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `MouseButton` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:25:36
[INFO] [stderr]    |
[INFO] [stderr] 25 |     async fn click(&self, _button: MouseButton) -> Result<()> {
[INFO] [stderr]    |                                    ^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `MouseButton` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:29:43
[INFO] [stderr]    |
[INFO] [stderr] 29 |     async fn double_click(&self, _button: MouseButton) -> Result<()> {
[INFO] [stderr]    |                                           ^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `Window` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:41:48
[INFO] [stderr]    |
[INFO] [stderr] 41 |     async fn list_windows(&self) -> Result<Vec<Window>> {
[INFO] [stderr]    |                                                ^^^^^^ not found in this scope
[INFO] [stderr]    |
[INFO] [stderr] help: consider importing this type alias
[INFO] [stderr]    |
[INFO] [stderr]  1 + use x11::xlib::Window;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `ElementSelector` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:53:46
[INFO] [stderr]    |
[INFO] [stderr] 53 |     async fn find_element(&self, _selector: &ElementSelector) -> Result<Option<UIElement>> {
[INFO] [stderr]    |                                              ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `UIElement` in this scope
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:53:80
[INFO] [stderr]    |
[INFO] [stderr] 53 |     async fn find_element(&self, _selector: &ElementSelector) -> Result<Option<UIElement>> {
[INFO] [stderr]    |                                                                                ^^^^^^^^^ not found in this scope
[INFO] [stderr]    |
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl<UIElement> ComputerController for LinuxController {
[INFO] [stderr]    |     +++++++++++
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `OCRResult` in this scope
[INFO] [stderr]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:83:68
[INFO] [stderr]     |
[INFO] [stderr]  83 |     async fn extract_text_from_image(&self, _path: &str) -> Result<OCRResult> {
[INFO] [stderr]     |                                                                    ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/lib.rs:472:1
[INFO] [stderr]     |
[INFO] [stderr] 472 | pub type Result<T, E = Error> = core::result::Result<T, E>;
[INFO] [stderr]     | ----------------------------- similarly named type alias `Result` defined here
[INFO] [stderr]     |
[INFO] [stderr] help: a type alias with a similar name exists
[INFO] [stderr]     |
[INFO] [stderr]  83 -     async fn extract_text_from_image(&self, _path: &str) -> Result<OCRResult> {
[INFO] [stderr]  83 +     async fn extract_text_from_image(&self, _path: &str) -> Result<Result> {
[INFO] [stderr]     |
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl<OCRResult> ComputerController for LinuxController {
[INFO] [stderr]     |     +++++++++++
[INFO] [stderr] 
[INFO] [stderr] error[E0422]: cannot find struct, variant or union type `OCRResult` in this scope
[INFO] [stderr]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:122:12
[INFO] [stderr]     |
[INFO] [stderr] 122 |         Ok(OCRResult {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.100/src/lib.rs:472:1
[INFO] [stderr]     |
[INFO] [stderr] 472 | pub type Result<T, E = Error> = core::result::Result<T, E>;
[INFO] [stderr]     | ----------------------------- similarly named type alias `Result` defined here
[INFO] [stderr]     |
[INFO] [stderr] help: a type alias with a similar name exists
[INFO] [stderr]     |
[INFO] [stderr] 122 -         Ok(OCRResult {
[INFO] [stderr] 122 +         Ok(Result {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find type `Point` in this scope
[INFO] [stderr]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:134:71
[INFO] [stderr]     |
[INFO] [stderr] 134 |     async fn find_text_on_screen(&self, _text: &str) -> Result<Option<Point>> {
[INFO] [stderr]     |                                                                       ^^^^^ not found in this scope
[INFO] [stderr]     |
[INFO] [stderr] help: you might be missing a type parameter
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl<Point> ComputerController for LinuxController {
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] error[E0422]: cannot find struct, variant or union type `Point` in this scope
[INFO] [stderr]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:183:21
[INFO] [stderr]     |
[INFO] [stderr] 183 |             Ok(Some(Point { x: 0, y: 0 }))
[INFO] [stderr]     |                     ^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0195]: lifetime parameters or bounds on method `move_mouse` do not match the trait declaration
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:21:14
[INFO] [stderr]    |
[INFO] [stderr] 19 | #[async_trait]
[INFO] [stderr]    | -------------- this `where` clause might not match the one in the trait
[INFO] [stderr] 20 | impl ComputerController for LinuxController {
[INFO] [stderr] 21 |     async fn move_mouse(&self, _x: i32, _y: i32) -> Result<()> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetimes do not match method in trait
[INFO] [stderr]    |
[INFO] [stderr]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/lib.rs:43:18
[INFO] [stderr]    |
[INFO] [stderr] 43 |     fn move_mouse(&self, x: i32, y: i32) -> Result<()>;
[INFO] [stderr]    |                  - lifetimes in impl do not match this method in trait
[INFO] [stderr] 
[INFO] [stderr] error[E0046]: not all trait items implemented, missing: `extract_text_with_locations`, `find_text_in_app`, `click_at`
[INFO] [stderr]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/platform/linux.rs:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 |   impl ComputerController for LinuxController {
[INFO] [stderr]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `extract_text_with_locations`, `find_text_in_app`, `click_at` in implementation
[INFO] [stderr]    |
[INFO] [stderr]   ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/g3-computer-control-0.2.0/src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 |       async fn extract_text_with_locations(&self, path: &str) -> Result<Vec<TextLocation>>;
[INFO] [stderr]    |       ------------------------------------------------------------------------------------- `extract_text_with_locations` from trait
[INFO] [stderr] 36 | /     async fn find_text_in_app(
[INFO] [stderr] 37 | |         &self,
[INFO] [stderr] 38 | |         app_name: &str,
[INFO] [stderr] 39 | |         search_text: &str,
[INFO] [stderr] 40 | |     ) -> Result<Option<TextLocation>>;
[INFO] [stderr]    | |______________________________________- `find_text_in_app` from trait
[INFO] [stderr] ...
[INFO] [stderr] 44 |       fn click_at(&self, x: i32, y: i32, app_name: Option<&str>) -> Result<()>;
[INFO] [stderr]    |       ------------------------------------------------------------------------- `click_at` from trait
[INFO] [stderr] 
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking strict v0.2.0
[INFO] [stderr] Some errors have detailed explanations: E0046, E0195, E0407, E0422, E0425, E0432.
[INFO] [stderr] For more information about an error, try `rustc --explain E0046`.
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr] error: could not compile `g3-computer-control` (lib) due to 24 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "88b8e6d3becfabcbf720206f3b4d46fb09090066da778ab71e611f0e1d56529e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "88b8e6d3becfabcbf720206f3b4d46fb09090066da778ab71e611f0e1d56529e", kill_on_drop: false }`
[INFO] [stdout] 88b8e6d3becfabcbf720206f3b4d46fb09090066da778ab71e611f0e1d56529e