Deleted "extra workspace member" functionality from crate_universe (#1406)

* Deleted "extra workspace member" functionality from crate_universe

* Regenerate documentation
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 32e2ecd..c441c65 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -333,7 +333,6 @@
       # failing. This is likely an issue with the windows workers in CI.
       - "-//vendor_local_pkgs/..."
       - "-//vendor_remote_pkgs/..."
-      - "-//extra_workspace_members/..."
       - "-//no_cargo_manifests/..."
     test_targets:
       - "//..."
@@ -341,7 +340,6 @@
       # failing. This is likely an issue with the windows workers in CI.
       - "-//vendor_local_pkgs/..."
       - "-//vendor_remote_pkgs/..."
-      - "-//extra_workspace_members/..."
       - "-//no_cargo_manifests/..."
 buildifier:
   version: latest
diff --git a/crate_universe/private/crates_repository.bzl b/crate_universe/private/crates_repository.bzl
index 70f7045..d7305d7 100644
--- a/crate_universe/private/crates_repository.bzl
+++ b/crate_universe/private/crates_repository.bzl
@@ -175,18 +175,6 @@
         "cargo_config": attr.label(
             doc = "A [Cargo configuration](https://doc.rust-lang.org/cargo/reference/config.html) file",
         ),
-        "extra_workspace_member_url_template": attr.string(
-            doc = "The registry url to use when fetching extra workspace members",
-            default = "https://crates.io/api/v1/crates/{name}/{version}/download",
-        ),
-        "extra_workspace_members": attr.string_dict(
-            doc = (
-                "Additional crates to download and include as a workspace member. This is unfortunately required in " +
-                "order to add information about \"binary-only\" crates so that a `rust_binary` may be generated for " +
-                "it. [rust-lang/cargo#9096](https://github.com/rust-lang/cargo/issues/9096) tracks an RFC which may " +
-                "solve for this."
-            ),
-        ),
         "generate_build_scripts": attr.bool(
             doc = (
                 "Whether or not to generate " +
diff --git a/crate_universe/private/crates_vendor.bzl b/crate_universe/private/crates_vendor.bzl
index 23c4c6c..1af22a8 100644
--- a/crate_universe/private/crates_vendor.bzl
+++ b/crate_universe/private/crates_vendor.bzl
@@ -120,20 +120,6 @@
     runfiles = [manifest] + ctx.files.manifests + ([ctx.file.cargo_config] if ctx.attr.cargo_config else [])
     return args, runfiles
 
-def _write_extra_manifests_manifest(ctx):
-    manifest = _write_data_file(
-        ctx = ctx,
-        name = "cargo-bazel-extra-manifests-manifest.json",
-        data = json.encode(struct(
-            # TODO: This is for extra workspace members
-            manifests = [],
-        )),
-    )
-    is_windows = _is_windows(ctx)
-    args = ["--extra-manifests-manifest", _runfiles_path(manifest.short_path, is_windows)]
-    runfiles = [manifest]
-    return args, runfiles
-
 def _write_config_file(ctx):
     rendering_config = dict(json.decode(render_config()))
 
@@ -219,11 +205,6 @@
     args.extend(splicing_manifest_args)
     cargo_bazel_runfiles.extend(splicing_manifest_runfiles)
 
-    # Generate extra-manifests manifest
-    extra_manifests_manifest_args, extra_manifests_manifest_runfiles = _write_extra_manifests_manifest(ctx)
-    args.extend(extra_manifests_manifest_args)
-    cargo_bazel_runfiles.extend(extra_manifests_manifest_runfiles)
-
     # Optionally include buildifier
     if ctx.attr.buildifier:
         args.extend(["--buildifier", _runfiles_path(ctx.executable.buildifier.short_path, is_windows)])
diff --git a/crate_universe/private/splicing_utils.bzl b/crate_universe/private/splicing_utils.bzl
index 7132f2c..6bdd473 100644
--- a/crate_universe/private/splicing_utils.bzl
+++ b/crate_universe/private/splicing_utils.bzl
@@ -21,63 +21,6 @@
         resolver_version = resolver_version,
     ))
 
-def download_extra_workspace_members(repository_ctx, cache_dir, render_template_registry_url):
-    """Download additional workspace members for use in splicing.
-
-    Args:
-        repository_ctx (repository_ctx): The rule's context object.
-        cache_dir (path): A directory in which to download and extract extra workspace members
-        render_template_registry_url (str): The base template to use for determining the crate's registry URL.
-
-    Returns:
-        list: A list of information related to the downloaded crates
-            - manifest: The path of the manifest.
-            - url: The url the manifest came from.
-            - sha256: The sha256 checksum of the new manifest.
-    """
-    manifests = []
-    extra_workspace_members = repository_ctx.attr.extra_workspace_members
-    if extra_workspace_members:
-        repository_ctx.report_progress("Downloading extra workspace members.")
-
-    for name, spec in repository_ctx.attr.extra_workspace_members.items():
-        spec = struct(**json.decode(spec))
-
-        url = render_template_registry_url
-        url = url.replace("{name}", name)
-        url = url.replace("{version}", spec.version)
-
-        if spec.sha256:
-            result = repository_ctx.download_and_extract(
-                output = cache_dir,
-                url = url,
-                sha256 = spec.sha256,
-                type = "tar.gz",
-            )
-        else:
-            result = repository_ctx.download_and_extract(
-                output = cache_dir,
-                url = url,
-                type = "tar.gz",
-            )
-
-        manifest = repository_ctx.path("{}/{}-{}/Cargo.toml".format(
-            cache_dir,
-            name,
-            spec.version,
-        ))
-
-        if not manifest.exists:
-            fail("Extra workspace member '{}' has no root Cargo.toml file".format(name))
-
-        manifests.append(struct(
-            manifest = str(manifest),
-            url = url,
-            sha256 = result.sha256,
-        ))
-
-    return manifests
-
 def kebab_case_keys(data):
     """Ensure the key value of the data given are kebab-case
 
@@ -183,22 +126,6 @@
     repository_ctx.report_progress("Splicing Cargo workspace.")
     repo_dir = repository_ctx.path(".")
 
-    # Download extra workspace members
-    crates_cache_dir = repository_ctx.path("{}/.crates_cache".format(repo_dir))
-    extra_manifest_info = download_extra_workspace_members(
-        repository_ctx = repository_ctx,
-        cache_dir = crates_cache_dir,
-        render_template_registry_url = repository_ctx.attr.extra_workspace_member_url_template,
-    )
-
-    extra_manifests_manifest = repository_ctx.path("{}/extra_manifests_manifest.json".format(repo_dir))
-    repository_ctx.file(
-        extra_manifests_manifest,
-        json.encode_indent(struct(
-            manifests = extra_manifest_info,
-        ), indent = " " * 4),
-    )
-
     splicing_output_dir = repository_ctx.path("splicing-output")
 
     # Generate a workspace root which contains all workspace members
@@ -209,8 +136,6 @@
         splicing_output_dir,
         "--splicing-manifest",
         splicing_manifest,
-        "--extra-manifests-manifest",
-        extra_manifests_manifest,
         "--cargo",
         cargo,
         "--rustc",
diff --git a/crate_universe/src/cli/splice.rs b/crate_universe/src/cli/splice.rs
index e8e72ee..22f605c 100644
--- a/crate_universe/src/cli/splice.rs
+++ b/crate_universe/src/cli/splice.rs
@@ -7,9 +7,7 @@
 
 use crate::cli::Result;
 use crate::metadata::{write_metadata, Generator, MetadataGenerator};
-use crate::splicing::{
-    generate_lockfile, ExtraManifestsManifest, Splicer, SplicingManifest, WorkspaceMetadata,
-};
+use crate::splicing::{generate_lockfile, Splicer, SplicingManifest, WorkspaceMetadata};
 
 /// Command line options for the `splice` subcommand
 #[derive(Parser, Debug)]
@@ -19,10 +17,6 @@
     #[clap(long)]
     pub splicing_manifest: PathBuf,
 
-    /// A generated manifest of "extra workspace members"
-    #[clap(long)]
-    pub extra_manifests_manifest: PathBuf,
-
     /// A Cargo lockfile (Cargo.lock).
     #[clap(long)]
     pub cargo_lockfile: Option<PathBuf>,
@@ -57,8 +51,6 @@
 pub fn splice(opt: SpliceOptions) -> Result<()> {
     // Load the all config files required for splicing a workspace
     let splicing_manifest = SplicingManifest::try_from_path(&opt.splicing_manifest)?;
-    let extra_manifests_manifest =
-        ExtraManifestsManifest::try_from_path(opt.extra_manifests_manifest)?;
 
     // Determine the splicing workspace
     let temp_dir;
@@ -71,7 +63,7 @@
     };
 
     // Generate a splicer for creating a Cargo workspace manifest
-    let splicer = Splicer::new(splicing_dir, splicing_manifest, extra_manifests_manifest)?;
+    let splicer = Splicer::new(splicing_dir, splicing_manifest)?;
 
     // Splice together the manifest
     let manifest_path = splicer.splice_workspace()?;
diff --git a/crate_universe/src/cli/vendor.rs b/crate_universe/src/cli/vendor.rs
index 3e31cfe..bf2ee09 100644
--- a/crate_universe/src/cli/vendor.rs
+++ b/crate_universe/src/cli/vendor.rs
@@ -14,9 +14,7 @@
 use crate::metadata::{Annotations, VendorGenerator};
 use crate::metadata::{Generator, MetadataGenerator};
 use crate::rendering::{render_module_label, write_outputs, Renderer};
-use crate::splicing::{
-    generate_lockfile, ExtraManifestsManifest, Splicer, SplicingManifest, WorkspaceMetadata,
-};
+use crate::splicing::{generate_lockfile, Splicer, SplicingManifest, WorkspaceMetadata};
 
 /// Command line options for the `vendor` subcommand
 #[derive(Parser, Debug)]
@@ -55,10 +53,6 @@
     #[clap(long)]
     pub metadata: Option<PathBuf>,
 
-    /// A generated manifest of "extra workspace members"
-    #[clap(long)]
-    pub extra_manifests_manifest: PathBuf,
-
     /// The path to a bazel binary
     #[clap(long, env = "BAZEL_REAL", default_value = "bazel")]
     pub bazel: PathBuf,
@@ -117,18 +111,12 @@
     // Load the all config files required for splicing a workspace
     let splicing_manifest = SplicingManifest::try_from_path(&opt.splicing_manifest)?
         .resolve(&opt.workspace_dir, &output_base);
-    let extra_manifests_manifest =
-        ExtraManifestsManifest::try_from_path(opt.extra_manifests_manifest)?.absolutize();
 
     let temp_dir = tempfile::tempdir().context("Failed to create temporary directory")?;
 
     // Generate a splicer for creating a Cargo workspace manifest
-    let splicer = Splicer::new(
-        PathBuf::from(temp_dir.as_ref()),
-        splicing_manifest,
-        extra_manifests_manifest,
-    )
-    .context("Failed to create splicer")?;
+    let splicer = Splicer::new(PathBuf::from(temp_dir.as_ref()), splicing_manifest)
+        .context("Failed to create splicer")?;
 
     // Splice together the manifest
     let manifest_path = splicer
diff --git a/crate_universe/src/splicing.rs b/crate_universe/src/splicing.rs
index cb7d698..df10b8e 100644
--- a/crate_universe/src/splicing.rs
+++ b/crate_universe/src/splicing.rs
@@ -21,20 +21,9 @@
 use self::cargo_config::CargoConfig;
 pub use self::splicer::*;
 
-#[derive(Debug, Default, Serialize, Deserialize)]
-pub struct ExtraManifestInfo {
-    // The path to a Cargo Manifest
-    pub manifest: PathBuf,
-
-    // The URL where the manifest's package can be downloaded
-    pub url: String,
-
-    // The Sha256 checksum of the downloaded package located at `url`.
-    pub sha256: String,
-}
-
 type DirectPackageManifest = BTreeMap<String, cargo_toml::DependencyDetail>;
 
+/// A collection of information used for splicing together a new Cargo manifest.
 #[derive(Debug, Default, Serialize, Deserialize, Clone)]
 #[serde(deny_unknown_fields)]
 pub struct SplicingManifest {
@@ -104,6 +93,7 @@
     }
 }
 
+/// The result of fully resolving a [SplicingManifest] in preparation for splicing.
 #[derive(Debug, Serialize, Default)]
 pub struct SplicingMetadata {
     /// A set of all packages directly written to the rule
@@ -149,32 +139,6 @@
     }
 }
 
-/// A collection of information required for reproducible "extra worksspace members".
-#[derive(Debug, Default, Serialize, Deserialize)]
-#[serde(deny_unknown_fields)]
-pub struct ExtraManifestsManifest {
-    pub manifests: Vec<ExtraManifestInfo>,
-}
-
-impl FromStr for ExtraManifestsManifest {
-    type Err = serde_json::Error;
-
-    fn from_str(s: &str) -> Result<Self, Self::Err> {
-        serde_json::from_str(s)
-    }
-}
-
-impl ExtraManifestsManifest {
-    pub fn try_from_path<T: AsRef<Path>>(path: T) -> Result<Self> {
-        let content = fs::read_to_string(path.as_ref())?;
-        Self::from_str(&content).context("Failed to load ExtraManifestsManifest")
-    }
-
-    pub fn absolutize(self) -> Self {
-        self
-    }
-}
-
 #[derive(Debug, Default, Serialize, Deserialize, Clone)]
 pub struct SourceInfo {
     /// A url where to a `.crate` file.
@@ -229,30 +193,9 @@
 impl WorkspaceMetadata {
     fn new(
         splicing_manifest: &SplicingManifest,
-        extra_manifests_manifest: &ExtraManifestsManifest,
-        injected_manifests: HashMap<&PathBuf, String>,
+        member_manifests: HashMap<&PathBuf, String>,
     ) -> Result<Self> {
-        let mut sources = BTreeMap::new();
-
-        for config in extra_manifests_manifest.manifests.iter() {
-            let package = match read_manifest(&config.manifest) {
-                Ok(manifest) => match manifest.package {
-                    Some(pkg) => pkg,
-                    None => continue,
-                },
-                Err(e) => return Err(e),
-            };
-
-            let id = CrateId::new(package.name, package.version);
-            let info = SourceInfo {
-                url: config.url.clone(),
-                sha256: config.sha256.clone(),
-            };
-
-            sources.insert(id, info);
-        }
-
-        let mut package_prefixes: BTreeMap<String, String> = injected_manifests
+        let mut package_prefixes: BTreeMap<String, String> = member_manifests
             .iter()
             .filter_map(|(original_manifest, cargo_pkg_name)| {
                 let label = match splicing_manifest.manifests.get(*original_manifest) {
@@ -287,7 +230,7 @@
             .collect();
 
         Ok(Self {
-            sources,
+            sources: BTreeMap::new(),
             workspace_prefix,
             package_prefixes,
         })
diff --git a/crate_universe/src/splicing/splicer.rs b/crate_universe/src/splicing/splicer.rs
index 3555cb7..1a68d32 100644
--- a/crate_universe/src/splicing/splicer.rs
+++ b/crate_universe/src/splicing/splicer.rs
@@ -12,10 +12,7 @@
 use crate::splicing::{SplicedManifest, SplicingManifest};
 use crate::utils::starlark::Label;
 
-use super::{
-    read_manifest, DirectPackageManifest, ExtraManifestInfo, ExtraManifestsManifest,
-    WorkspaceMetadata,
-};
+use super::{read_manifest, DirectPackageManifest, WorkspaceMetadata};
 
 /// The core splicer implementation. Each style of Bazel workspace should be represented
 /// here and a splicing implementation defined.
@@ -25,7 +22,6 @@
         path: &'a PathBuf,
         manifest: &'a Manifest,
         splicing_manifest: &'a SplicingManifest,
-        extra_manifests_manifest: &'a ExtraManifestsManifest,
     },
     /// Splice a manifest for a single package. This includes cases where
     /// were defined directly in Bazel.
@@ -33,13 +29,11 @@
         path: &'a PathBuf,
         manifest: &'a Manifest,
         splicing_manifest: &'a SplicingManifest,
-        extra_manifests_manifest: &'a ExtraManifestsManifest,
     },
     /// Splice a manifest from multiple disjoint Cargo manifests.
     MultiPackage {
         manifests: &'a HashMap<PathBuf, Manifest>,
         splicing_manifest: &'a SplicingManifest,
-        extra_manifests_manifest: &'a ExtraManifestsManifest,
     },
 }
 
@@ -50,7 +44,6 @@
     pub fn new(
         manifests: &'a HashMap<PathBuf, Manifest>,
         splicing_manifest: &'a SplicingManifest,
-        extra_manifests_manifest: &'a ExtraManifestsManifest,
     ) -> Result<Self> {
         // First check for any workspaces in the provided manifests
         let workspace_owned: HashMap<&PathBuf, &Manifest> = manifests
@@ -114,7 +107,6 @@
                 path,
                 manifest,
                 splicing_manifest,
-                extra_manifests_manifest,
             })
         } else if manifests.len() == 1 {
             let (path, manifest) = manifests.iter().last().unwrap();
@@ -122,13 +114,11 @@
                 path,
                 manifest,
                 splicing_manifest,
-                extra_manifests_manifest,
             })
         } else {
             Ok(Self::MultiPackage {
                 manifests,
                 splicing_manifest,
-                extra_manifests_manifest,
             })
         }
     }
@@ -177,76 +167,45 @@
                 path,
                 manifest,
                 splicing_manifest,
-                extra_manifests_manifest,
-            } => Self::splice_workspace(
-                workspace_dir,
-                path,
-                manifest,
-                splicing_manifest,
-                extra_manifests_manifest,
-            ),
+            } => Self::splice_workspace(workspace_dir, path, manifest, splicing_manifest),
             SplicerKind::Package {
                 path,
                 manifest,
                 splicing_manifest,
-                extra_manifests_manifest,
-            } => Self::splice_package(
-                workspace_dir,
-                path,
-                manifest,
-                splicing_manifest,
-                extra_manifests_manifest,
-            ),
+            } => Self::splice_package(workspace_dir, path, manifest, splicing_manifest),
             SplicerKind::MultiPackage {
                 manifests,
                 splicing_manifest,
-                extra_manifests_manifest,
-            } => Self::splice_multi_package(
-                workspace_dir,
-                manifests,
-                splicing_manifest,
-                extra_manifests_manifest,
-            ),
+            } => Self::splice_multi_package(workspace_dir, manifests, splicing_manifest),
         }
     }
 
+    /// Implementation for splicing Cargo workspaces
     fn splice_workspace(
         workspace_dir: &Path,
         path: &&PathBuf,
         manifest: &&Manifest,
         splicing_manifest: &&SplicingManifest,
-        extra_manifests_manifest: &&ExtraManifestsManifest,
     ) -> Result<SplicedManifest> {
         let mut manifest = (*manifest).clone();
         let manifest_dir = path
             .parent()
             .expect("Every manifest should havee a parent directory");
 
-        let extra_workspace_manifests =
-            Self::get_extra_workspace_manifests(&extra_manifests_manifest.manifests)?;
-
         // Link the sources of the root manifest into the new workspace
         symlink_roots(manifest_dir, workspace_dir, Some(IGNORE_LIST))?;
 
         // Optionally install the cargo config after contents have been symlinked
         Self::setup_cargo_config(&splicing_manifest.cargo_config, workspace_dir)?;
 
-        // Add additional workspace members to the new manifest
-        let mut installations = Self::inject_workspace_members(
-            &mut manifest,
-            &extra_workspace_manifests,
-            workspace_dir,
-        )?;
-
         // Add any additional depeendencies to the root package
         Self::inject_direct_packages(&mut manifest, &splicing_manifest.direct_packages)?;
 
         let root_manifest_path = workspace_dir.join("Cargo.toml");
-        installations.insert(path, String::new());
+        let member_manifests = HashMap::from([(*path, String::new())]);
 
         // Write the generated metadata to the manifest
-        let workspace_metadata =
-            WorkspaceMetadata::new(splicing_manifest, extra_manifests_manifest, installations)?;
+        let workspace_metadata = WorkspaceMetadata::new(splicing_manifest, member_manifests)?;
         workspace_metadata.inject_into(&mut manifest)?;
 
         // Write the root manifest
@@ -255,20 +214,17 @@
         Ok(SplicedManifest::Workspace(root_manifest_path))
     }
 
+    /// Implementation for splicing individual Cargo packages
     fn splice_package(
         workspace_dir: &Path,
         path: &&PathBuf,
         manifest: &&Manifest,
         splicing_manifest: &&SplicingManifest,
-        extra_manifests_manifest: &&ExtraManifestsManifest,
     ) -> Result<SplicedManifest> {
         let manifest_dir = path
             .parent()
             .expect("Every manifest should havee a parent directory");
 
-        let extra_workspace_manifests =
-            Self::get_extra_workspace_manifests(&extra_manifests_manifest.manifests)?;
-
         // Link the sources of the root manifest into the new workspace
         symlink_roots(manifest_dir, workspace_dir, Some(IGNORE_LIST))?;
 
@@ -282,22 +238,14 @@
                 default_cargo_workspace_manifest(&splicing_manifest.resolver_version).workspace
         }
 
-        // Add additional workspace members to the new manifest
-        let mut installations = Self::inject_workspace_members(
-            &mut manifest,
-            &extra_workspace_manifests,
-            workspace_dir,
-        )?;
-
         // Add any additional depeendencies to the root package
         Self::inject_direct_packages(&mut manifest, &splicing_manifest.direct_packages)?;
 
         let root_manifest_path = workspace_dir.join("Cargo.toml");
-        installations.insert(path, String::new());
+        let member_manifests = HashMap::from([(*path, String::new())]);
 
         // Write the generated metadata to the manifest
-        let workspace_metadata =
-            WorkspaceMetadata::new(splicing_manifest, extra_manifests_manifest, installations)?;
+        let workspace_metadata = WorkspaceMetadata::new(splicing_manifest, member_manifests)?;
         workspace_metadata.inject_into(&mut manifest)?;
 
         // Write the root manifest
@@ -306,37 +254,22 @@
         Ok(SplicedManifest::Package(root_manifest_path))
     }
 
+    /// Implementation for splicing together multiple Cargo packages/workspaces
     fn splice_multi_package(
         workspace_dir: &Path,
         manifests: &&HashMap<PathBuf, Manifest>,
         splicing_manifest: &&SplicingManifest,
-        extra_manifests_manifest: &&ExtraManifestsManifest,
     ) -> Result<SplicedManifest> {
         let mut manifest = default_cargo_workspace_manifest(&splicing_manifest.resolver_version);
 
         // Optionally install a cargo config file into the workspace root.
         Self::setup_cargo_config(&splicing_manifest.cargo_config, workspace_dir)?;
 
-        let extra_workspace_manifests =
-            Self::get_extra_workspace_manifests(&extra_manifests_manifest.manifests)?;
-
-        let manifests: HashMap<PathBuf, Manifest> = manifests
-            .iter()
-            .map(|(p, m)| (p.to_owned(), m.to_owned()))
-            .collect();
-
-        let all_manifests = manifests
-            .iter()
-            .chain(extra_workspace_manifests.iter())
-            .map(|(k, v)| (k.clone(), v.clone()))
-            .collect();
-
         let installations =
-            Self::inject_workspace_members(&mut manifest, &all_manifests, workspace_dir)?;
+            Self::inject_workspace_members(&mut manifest, manifests, workspace_dir)?;
 
         // Write the generated metadata to the manifest
-        let workspace_metadata =
-            WorkspaceMetadata::new(splicing_manifest, extra_manifests_manifest, installations)?;
+        let workspace_metadata = WorkspaceMetadata::new(splicing_manifest, installations)?;
         workspace_metadata.inject_into(&mut manifest)?;
 
         // Add any additional depeendencies to the root package
@@ -349,20 +282,6 @@
         Ok(SplicedManifest::MultiPackage(root_manifest_path))
     }
 
-    /// Extract the set of extra workspace member manifests such that it matches
-    /// how other manifests are passed when creating a new [SplicerKind].
-    fn get_extra_workspace_manifests(
-        extra_manifests: &[ExtraManifestInfo],
-    ) -> Result<HashMap<PathBuf, Manifest>> {
-        extra_manifests
-            .iter()
-            .map(|config| match read_manifest(&config.manifest) {
-                Ok(manifest) => Ok((config.manifest.clone(), manifest)),
-                Err(err) => Err(err),
-            })
-            .collect()
-    }
-
     /// A helper for installing Cargo config files into the spliced workspace while also
     /// ensuring no other linked config file is available
     fn setup_cargo_config(cargo_config_path: &Option<PathBuf>, workspace_dir: &Path) -> Result<()> {
@@ -528,15 +447,10 @@
     workspace_dir: PathBuf,
     manifests: HashMap<PathBuf, Manifest>,
     splicing_manifest: SplicingManifest,
-    extra_manifests_manifest: ExtraManifestsManifest,
 }
 
 impl Splicer {
-    pub fn new(
-        workspace_dir: PathBuf,
-        splicing_manifest: SplicingManifest,
-        extra_manifests_manifest: ExtraManifestsManifest,
-    ) -> Result<Self> {
+    pub fn new(workspace_dir: PathBuf, splicing_manifest: SplicingManifest) -> Result<Self> {
         // Load all manifests
         let manifests = splicing_manifest
             .manifests
@@ -552,18 +466,12 @@
             workspace_dir,
             manifests,
             splicing_manifest,
-            extra_manifests_manifest,
         })
     }
 
     /// Build a new workspace root
     pub fn splice_workspace(&self) -> Result<SplicedManifest> {
-        SplicerKind::new(
-            &self.manifests,
-            &self.splicing_manifest,
-            &self.extra_manifests_manifest,
-        )?
-        .splice(&self.workspace_dir)
+        SplicerKind::new(&self.manifests, &self.splicing_manifest)?.splice(&self.workspace_dir)
     }
 }
 
@@ -769,7 +677,6 @@
     use cargo_metadata::{MetadataCommand, PackageId};
     use maplit::btreeset;
 
-    use crate::splicing::ExtraManifestInfo;
     use crate::utils::starlark::Label;
 
     /// Clone and compare two items after calling `.sort()` on them.
@@ -858,23 +765,6 @@
         manifest
     }
 
-    fn mock_extra_manifest_digest(cache_dir: &Path) -> ExtraManifestsManifest {
-        ExtraManifestsManifest {
-            manifests: vec![{
-                let manifest_path = cache_dir.join("extra_pkg").join("Cargo.toml");
-                mock_cargo_toml(&manifest_path, "extra_pkg");
-
-                ExtraManifestInfo {
-                    manifest: manifest_path,
-                    url: "https://crates.io/".to_owned(),
-                    sha256: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
-                        .to_owned(),
-                }
-            }],
-        }
-    }
-
-    /// This json object is tightly coupled to [mock_extra_manifest_digest]
     fn mock_workspace_metadata(
         include_extra_member: bool,
         workspace_prefix: Option<&str>,
@@ -1084,14 +974,11 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace()
+                .unwrap();
 
         // Ensure metadata is valid
         let metadata = generate_metadata(workspace_manifest.as_path_buf());
@@ -1120,14 +1007,11 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace()
+                .unwrap();
 
         // Ensure metadata is valid
         let metadata = generate_metadata(workspace_manifest.as_path_buf());
@@ -1162,13 +1046,10 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace();
 
         assert!(workspace_manifest.is_err());
 
@@ -1217,13 +1098,10 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace();
 
         assert!(workspace_manifest.is_err());
 
@@ -1243,14 +1121,11 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace()
+                .unwrap();
 
         // Ensure metadata is valid
         let metadata = generate_metadata(workspace_manifest.as_path_buf());
@@ -1275,14 +1150,11 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace()
+                .unwrap();
 
         // Check the default resolver version
         let cargo_manifest = cargo_toml::Manifest::from_str(
@@ -1327,14 +1199,11 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        let workspace_manifest =
+            Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+                .unwrap()
+                .splice_workspace()
+                .unwrap();
 
         // Check the specified resolver version
         let cargo_manifest = cargo_toml::Manifest::from_str(
@@ -1371,126 +1240,6 @@
     }
 
     #[test]
-    fn extra_workspace_member_with_package() {
-        let (splicing_manifest, cache_dir) = mock_splicing_manifest_with_package();
-
-        // Add the extra workspace member
-        let extra_manifests_manifest = mock_extra_manifest_digest(cache_dir.as_ref());
-
-        // Splice the workspace
-        let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            extra_manifests_manifest,
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
-
-        // Ensure metadata is valid
-        let metadata = generate_metadata(workspace_manifest.as_path_buf());
-        assert_sort_eq!(
-            metadata.workspace_members,
-            vec![
-                new_package_id("extra_pkg", workspace_root.as_ref(), false),
-                new_package_id("root_pkg", workspace_root.as_ref(), true),
-            ]
-        );
-
-        // Ensure the workspace metadata annotations are populated
-        assert_eq!(
-            metadata.workspace_metadata,
-            mock_workspace_metadata(true, None)
-        );
-
-        // Ensure lockfile was successfully spliced
-        cargo_lock::Lockfile::load(workspace_root.as_ref().join("Cargo.lock")).unwrap();
-    }
-
-    #[test]
-    fn extra_workspace_member_with_workspace() {
-        let (splicing_manifest, cache_dir) = mock_splicing_manifest_with_workspace();
-
-        // Add the extra workspace member
-        let extra_manifests_manifest = mock_extra_manifest_digest(cache_dir.as_ref());
-
-        // Splice the workspace
-        let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            extra_manifests_manifest,
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
-
-        // Ensure metadata is valid
-        let metadata = generate_metadata(workspace_manifest.as_path_buf());
-        assert_sort_eq!(
-            metadata.workspace_members,
-            vec![
-                new_package_id("sub_pkg_a", workspace_root.as_ref(), false),
-                new_package_id("sub_pkg_b", workspace_root.as_ref(), false),
-                new_package_id("extra_pkg", workspace_root.as_ref(), false),
-                new_package_id("root_pkg", workspace_root.as_ref(), true),
-            ]
-        );
-
-        // Ensure the workspace metadata annotations are populated
-        assert_eq!(
-            metadata.workspace_metadata,
-            mock_workspace_metadata(true, Some("pkg_root"))
-        );
-
-        // Ensure lockfile was successfully spliced
-        cargo_lock::Lockfile::load(workspace_root.as_ref().join("Cargo.lock")).unwrap();
-    }
-
-    #[test]
-    fn extra_workspace_member_with_multi_package() {
-        let (splicing_manifest, cache_dir) = mock_splicing_manifest_with_multi_package();
-
-        // Add the extra workspace member
-        let extra_manifests_manifest = mock_extra_manifest_digest(cache_dir.as_ref());
-
-        // Splice the workspace
-        let workspace_root = tempfile::tempdir().unwrap();
-        let workspace_manifest = Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            extra_manifests_manifest,
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
-
-        // Ensure metadata is valid
-        let metadata = generate_metadata(workspace_manifest.as_path_buf());
-        assert_sort_eq!(
-            metadata.workspace_members,
-            vec![
-                new_package_id("pkg_a", workspace_root.as_ref(), false),
-                new_package_id("pkg_b", workspace_root.as_ref(), false),
-                new_package_id("pkg_c", workspace_root.as_ref(), false),
-                new_package_id("extra_pkg", workspace_root.as_ref(), false),
-                // Multi package renderings always add a root package
-                new_package_id("direct-cargo-bazel-deps", workspace_root.as_ref(), true),
-            ]
-        );
-
-        // Ensure the workspace metadata annotations are populated
-        assert_eq!(
-            metadata.workspace_metadata,
-            mock_workspace_metadata(true, None)
-        );
-
-        // Ensure lockfile was successfully spliced
-        cargo_lock::Lockfile::load(workspace_root.as_ref().join("Cargo.lock")).unwrap();
-    }
-
-    #[test]
     fn cargo_config_setup() {
         let (mut splicing_manifest, _cache_dir) = mock_splicing_manifest_with_workspace_in_root();
 
@@ -1502,14 +1251,10 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+            .unwrap()
+            .splice_workspace()
+            .unwrap();
 
         let cargo_config = workspace_root.as_ref().join(".cargo").join("config.toml");
         assert!(cargo_config.exists());
@@ -1539,14 +1284,10 @@
 
         // Splice the workspace
         let workspace_root = tempfile::tempdir().unwrap();
-        Splicer::new(
-            workspace_root.as_ref().to_path_buf(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace()
-        .unwrap();
+        Splicer::new(workspace_root.as_ref().to_path_buf(), splicing_manifest)
+            .unwrap()
+            .splice_workspace()
+            .unwrap();
 
         let cargo_config = workspace_root.as_ref().join(".cargo").join("config.toml");
         assert!(cargo_config.exists());
@@ -1570,13 +1311,9 @@
 
         // Splice the workspace
         let workspace_root = temp_dir.as_ref().join("workspace_root");
-        let splicing_result = Splicer::new(
-            workspace_root.clone(),
-            splicing_manifest,
-            ExtraManifestsManifest::default(),
-        )
-        .unwrap()
-        .splice_workspace();
+        let splicing_result = Splicer::new(workspace_root.clone(), splicing_manifest)
+            .unwrap()
+            .splice_workspace();
 
         // Ensure cargo config files in parent directories lead to errors
         assert!(splicing_result.is_err());
diff --git a/docs/crate_universe.md b/docs/crate_universe.md
index 58d5e54..c808ce3 100644
--- a/docs/crate_universe.md
+++ b/docs/crate_universe.md
@@ -183,10 +183,9 @@
 ## crates_repository
 
 <pre>
-crates_repository(<a href="#crates_repository-name">name</a>, <a href="#crates_repository-annotations">annotations</a>, <a href="#crates_repository-cargo_config">cargo_config</a>, <a href="#crates_repository-extra_workspace_member_url_template">extra_workspace_member_url_template</a>,
-                  <a href="#crates_repository-extra_workspace_members">extra_workspace_members</a>, <a href="#crates_repository-generate_build_scripts">generate_build_scripts</a>, <a href="#crates_repository-generator">generator</a>, <a href="#crates_repository-generator_sha256s">generator_sha256s</a>,
-                  <a href="#crates_repository-generator_urls">generator_urls</a>, <a href="#crates_repository-isolated">isolated</a>, <a href="#crates_repository-lockfile">lockfile</a>, <a href="#crates_repository-lockfile_kind">lockfile_kind</a>, <a href="#crates_repository-manifests">manifests</a>, <a href="#crates_repository-packages">packages</a>, <a href="#crates_repository-quiet">quiet</a>,
-                  <a href="#crates_repository-render_config">render_config</a>, <a href="#crates_repository-repo_mapping">repo_mapping</a>, <a href="#crates_repository-rust_toolchain_cargo_template">rust_toolchain_cargo_template</a>,
+crates_repository(<a href="#crates_repository-name">name</a>, <a href="#crates_repository-annotations">annotations</a>, <a href="#crates_repository-cargo_config">cargo_config</a>, <a href="#crates_repository-generate_build_scripts">generate_build_scripts</a>, <a href="#crates_repository-generator">generator</a>,
+                  <a href="#crates_repository-generator_sha256s">generator_sha256s</a>, <a href="#crates_repository-generator_urls">generator_urls</a>, <a href="#crates_repository-isolated">isolated</a>, <a href="#crates_repository-lockfile">lockfile</a>, <a href="#crates_repository-lockfile_kind">lockfile_kind</a>, <a href="#crates_repository-manifests">manifests</a>,
+                  <a href="#crates_repository-packages">packages</a>, <a href="#crates_repository-quiet">quiet</a>, <a href="#crates_repository-render_config">render_config</a>, <a href="#crates_repository-repo_mapping">repo_mapping</a>, <a href="#crates_repository-rust_toolchain_cargo_template">rust_toolchain_cargo_template</a>,
                   <a href="#crates_repository-rust_toolchain_rustc_template">rust_toolchain_rustc_template</a>, <a href="#crates_repository-rust_version">rust_version</a>, <a href="#crates_repository-splicing_config">splicing_config</a>,
                   <a href="#crates_repository-supported_platform_triples">supported_platform_triples</a>)
 </pre>
@@ -265,8 +264,6 @@
 | <a id="crates_repository-name"></a>name |  A unique name for this repository.   | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required |  |
 | <a id="crates_repository-annotations"></a>annotations |  Extra settings to apply to crates. See [crate.annotation](#crateannotation).   | <a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> List of strings</a> | optional | {} |
 | <a id="crates_repository-cargo_config"></a>cargo_config |  A [Cargo configuration](https://doc.rust-lang.org/cargo/reference/config.html) file   | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
-| <a id="crates_repository-extra_workspace_member_url_template"></a>extra_workspace_member_url_template |  The registry url to use when fetching extra workspace members   | String | optional | "https://crates.io/api/v1/crates/{name}/{version}/download" |
-| <a id="crates_repository-extra_workspace_members"></a>extra_workspace_members |  Additional crates to download and include as a workspace member. This is unfortunately required in order to add information about "binary-only" crates so that a <code>rust_binary</code> may be generated for it. [rust-lang/cargo#9096](https://github.com/rust-lang/cargo/issues/9096) tracks an RFC which may solve for this.   | <a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a> | optional | {} |
 | <a id="crates_repository-generate_build_scripts"></a>generate_build_scripts |  Whether or not to generate [cargo build scripts](https://doc.rust-lang.org/cargo/reference/build-scripts.html) by default.   | Boolean | optional | True |
 | <a id="crates_repository-generator"></a>generator |  The absolute label of a generator. Eg. <code>@cargo_bazel_bootstrap//:cargo-bazel</code>. This is typically used when bootstrapping   | String | optional | "" |
 | <a id="crates_repository-generator_sha256s"></a>generator_sha256s |  Dictionary of <code>host_triple</code> -&gt; <code>sha256</code> for a <code>cargo-bazel</code> binary.   | <a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a> | optional | {} |
diff --git a/examples/crate_universe/WORKSPACE.bazel b/examples/crate_universe/WORKSPACE.bazel
index 0f90c22..f4fe58b 100644
--- a/examples/crate_universe/WORKSPACE.bazel
+++ b/examples/crate_universe/WORKSPACE.bazel
@@ -129,32 +129,6 @@
 cargo_workspace_crate_repositories()
 
 ###############################################################################
-# E X T R A   W O R K S P A C E   M E M B E R S
-###############################################################################
-
-crates_repository(
-    name = "crate_index_extra_members",
-    extra_workspace_members = {
-        "texture-synthesis-cli": crate.workspace_member(
-            sha256 = "a7dbdf13f5e6f214750fce1073279b71ce3076157a8d337c9b0f0e14334e2aec",
-            version = "0.8.2",
-        ),
-    },
-    # `generator` is not necessary in official releases.
-    # See load satement for `cargo_bazel_bootstrap`.
-    generator = "@cargo_bazel_bootstrap//:cargo-bazel",
-    lockfile = "//extra_workspace_members:Cargo.Bazel.lock",
-    manifests = ["//extra_workspace_members:Cargo.toml"],
-)
-
-load(
-    "@crate_index_extra_members//:defs.bzl",
-    extra_workspace_members_crate_repositories = "crate_repositories",
-)
-
-extra_workspace_members_crate_repositories()
-
-###############################################################################
 # M U L T I   P A C K A G E
 ###############################################################################
 
diff --git a/examples/crate_universe/extra_workspace_members/.bazelrc b/examples/crate_universe/extra_workspace_members/.bazelrc
deleted file mode 100644
index d63c809..0000000
--- a/examples/crate_universe/extra_workspace_members/.bazelrc
+++ /dev/null
@@ -1,13 +0,0 @@
-# A config file containing Bazel settings
-
-# Enable rustfmt
-build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect
-build:strict --output_groups=+rustfmt_checks
-
-# Enable clippy
-build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect
-build:strict --output_groups=+clippy_checks
-
-# This import should always be last to allow users to override
-# settings for local development.
-try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/extra_workspace_members/BUILD.bazel b/examples/crate_universe/extra_workspace_members/BUILD.bazel
deleted file mode 100644
index 199257f..0000000
--- a/examples/crate_universe/extra_workspace_members/BUILD.bazel
+++ /dev/null
@@ -1,22 +0,0 @@
-load("@crate_index_extra_members//:defs.bzl", "all_crate_deps")
-load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_test")
-
-rust_binary(
-    name = "extra_workspace_member",
-    srcs = ["src/main.rs"],
-    data = ["@crate_index_extra_members//:texture-synthesis-cli__texture-synthesis"],
-    proc_macro_deps = all_crate_deps(proc_macro = True),
-    rustc_env = {
-        "TEXTURE_SYNTHESIS_CLI": "$(rootpath @crate_index_extra_members//:texture-synthesis-cli__texture-synthesis)",
-    },
-    deps = all_crate_deps(),
-)
-
-rust_test(
-    name = "unit_test",
-    crate = ":extra_workspace_member",
-    data = ["@crate_index_extra_members//:texture-synthesis-cli__texture-synthesis"],
-    rustc_env = {
-        "TEXTURE_SYNTHESIS_CLI": "$(rootpath @crate_index_extra_members//:texture-synthesis-cli__texture-synthesis)",
-    },
-)
diff --git a/examples/crate_universe/extra_workspace_members/Cargo.Bazel.lock b/examples/crate_universe/extra_workspace_members/Cargo.Bazel.lock
deleted file mode 100644
index db5185f..0000000
--- a/examples/crate_universe/extra_workspace_members/Cargo.Bazel.lock
+++ /dev/null
@@ -1,3278 +0,0 @@
-{
-  "checksum": "36575ef80dadae9bb45b4e7aa2f7bc7a38e272acf76421f97b2b7b969aa5c52e",
-  "crates": {
-    "adler32 1.2.0": {
-      "name": "adler32",
-      "version": "1.2.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/adler32/1.2.0/download",
-          "sha256": "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "adler32",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "adler32",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "edition": "2018",
-        "version": "1.2.0"
-      },
-      "license": "Zlib"
-    },
-    "ansi_term 0.12.1": {
-      "name": "ansi_term",
-      "version": "0.12.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/ansi_term/0.12.1/download",
-          "sha256": "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "ansi_term",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "ansi_term",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [],
-          "selects": {
-            "cfg(target_os = \"windows\")": [
-              {
-                "id": "winapi 0.3.9",
-                "target": "winapi"
-              }
-            ]
-          }
-        },
-        "edition": "2015",
-        "version": "0.12.1"
-      },
-      "license": "MIT"
-    },
-    "atty 0.2.14": {
-      "name": "atty",
-      "version": "0.2.14",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/atty/0.2.14/download",
-          "sha256": "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "atty",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "atty",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [],
-          "selects": {
-            "cfg(target_os = \"hermit\")": [
-              {
-                "id": "hermit-abi 0.1.19",
-                "target": "hermit_abi"
-              }
-            ],
-            "cfg(unix)": [
-              {
-                "id": "libc 0.2.126",
-                "target": "libc"
-              }
-            ],
-            "cfg(windows)": [
-              {
-                "id": "winapi 0.3.9",
-                "target": "winapi"
-              }
-            ]
-          }
-        },
-        "edition": "2015",
-        "version": "0.2.14"
-      },
-      "license": "MIT"
-    },
-    "autocfg 1.1.0": {
-      "name": "autocfg",
-      "version": "1.1.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/autocfg/1.1.0/download",
-          "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "autocfg",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "autocfg",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "1.1.0"
-      },
-      "license": "Apache-2.0 OR MIT"
-    },
-    "bitflags 1.3.2": {
-      "name": "bitflags",
-      "version": "1.3.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download",
-          "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "bitflags",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "bitflags",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "edition": "2018",
-        "version": "1.3.2"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "bytemuck 1.9.1": {
-      "name": "bytemuck",
-      "version": "1.9.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/bytemuck/1.9.1/download",
-          "sha256": "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "bytemuck",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "bytemuck",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "1.9.1"
-      },
-      "license": "Zlib OR Apache-2.0 OR MIT"
-    },
-    "byteorder 1.4.3": {
-      "name": "byteorder",
-      "version": "1.4.3",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/byteorder/1.4.3/download",
-          "sha256": "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "byteorder",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "byteorder",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "edition": "2018",
-        "version": "1.4.3"
-      },
-      "license": "Unlicense OR MIT"
-    },
-    "cfg-if 1.0.0": {
-      "name": "cfg-if",
-      "version": "1.0.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
-          "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "cfg_if",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "cfg_if",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "1.0.0"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "clap 2.34.0": {
-      "name": "clap",
-      "version": "2.34.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/clap/2.34.0/download",
-          "sha256": "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "clap",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "clap",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "ansi_term",
-          "atty",
-          "color",
-          "default",
-          "strsim",
-          "suggestions",
-          "vec_map"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "atty 0.2.14",
-              "target": "atty"
-            },
-            {
-              "id": "bitflags 1.3.2",
-              "target": "bitflags"
-            },
-            {
-              "id": "strsim 0.8.0",
-              "target": "strsim"
-            },
-            {
-              "id": "textwrap 0.11.0",
-              "target": "textwrap"
-            },
-            {
-              "id": "unicode-width 0.1.9",
-              "target": "unicode_width"
-            },
-            {
-              "id": "vec_map 0.8.2",
-              "target": "vec_map"
-            }
-          ],
-          "selects": {
-            "cfg(not(windows))": [
-              {
-                "id": "ansi_term 0.12.1",
-                "target": "ansi_term"
-              }
-            ]
-          }
-        },
-        "edition": "2018",
-        "version": "2.34.0"
-      },
-      "license": "MIT"
-    },
-    "color_quant 1.1.0": {
-      "name": "color_quant",
-      "version": "1.1.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/color_quant/1.1.0/download",
-          "sha256": "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "color_quant",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "color_quant",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "1.1.0"
-      },
-      "license": "MIT"
-    },
-    "console 0.15.0": {
-      "name": "console",
-      "version": "0.15.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/console/0.15.0/download",
-          "sha256": "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "console",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "console",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "ansi-parsing",
-          "default",
-          "regex",
-          "unicode-width"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "libc 0.2.126",
-              "target": "libc"
-            },
-            {
-              "id": "once_cell 1.12.0",
-              "target": "once_cell"
-            },
-            {
-              "id": "regex 1.5.6",
-              "target": "regex"
-            },
-            {
-              "id": "terminal_size 0.1.17",
-              "target": "terminal_size"
-            },
-            {
-              "id": "unicode-width 0.1.9",
-              "target": "unicode_width"
-            }
-          ],
-          "selects": {
-            "cfg(windows)": [
-              {
-                "id": "encode_unicode 0.3.6",
-                "target": "encode_unicode"
-              },
-              {
-                "id": "winapi 0.3.9",
-                "target": "winapi"
-              }
-            ]
-          }
-        },
-        "edition": "2018",
-        "version": "0.15.0"
-      },
-      "license": "MIT"
-    },
-    "crc32fast 1.3.2": {
-      "name": "crc32fast",
-      "version": "1.3.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/crc32fast/1.3.2/download",
-          "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "crc32fast",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "crc32fast",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "cfg-if 1.0.0",
-              "target": "cfg_if"
-            },
-            {
-              "id": "crc32fast 1.3.2",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "1.3.2"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "crossbeam-utils 0.8.8": {
-      "name": "crossbeam-utils",
-      "version": "0.8.8",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/crossbeam-utils/0.8.8/download",
-          "sha256": "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "crossbeam_utils",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "crossbeam_utils",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "lazy_static",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "cfg-if 1.0.0",
-              "target": "cfg_if"
-            },
-            {
-              "id": "crossbeam-utils 0.8.8",
-              "target": "build_script_build"
-            },
-            {
-              "id": "lazy_static 1.4.0",
-              "target": "lazy_static"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.8.8"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "deflate 0.8.6": {
-      "name": "deflate",
-      "version": "0.8.6",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/deflate/0.8.6/download",
-          "sha256": "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "deflate",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "deflate",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "adler32 1.2.0",
-              "target": "adler32"
-            },
-            {
-              "id": "byteorder 1.4.3",
-              "target": "byteorder"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.8.6"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "encode_unicode 0.3.6": {
-      "name": "encode_unicode",
-      "version": "0.3.6",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/encode_unicode/0.3.6/download",
-          "sha256": "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "encode_unicode",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "encode_unicode",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "edition": "2015",
-        "version": "0.3.6"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "extra_workspace_members 0.1.0": {
-      "name": "extra_workspace_members",
-      "version": "0.1.0",
-      "repository": null,
-      "targets": [
-        {
-          "Binary": {
-            "crate_name": "extra_workspace_members",
-            "crate_root": "src/main.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": null,
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "ferris-says 0.2.1",
-              "target": "ferris_says"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.1.0"
-      },
-      "license": null
-    },
-    "ferris-says 0.2.1": {
-      "name": "ferris-says",
-      "version": "0.2.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/ferris-says/0.2.1/download",
-          "sha256": "9515ec2dd9606ec230f6b2d1f25fd9e808a2f2af600143f7efe7e5865505b7aa"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "ferris_says",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "ferris_says",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "smallvec 0.4.5",
-              "target": "smallvec"
-            },
-            {
-              "id": "textwrap 0.13.4",
-              "target": "textwrap"
-            },
-            {
-              "id": "unicode-width 0.1.9",
-              "target": "unicode_width"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.2.1"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "heck 0.3.3": {
-      "name": "heck",
-      "version": "0.3.3",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/heck/0.3.3/download",
-          "sha256": "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "heck",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "heck",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "unicode-segmentation 1.9.0",
-              "target": "unicode_segmentation"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.3.3"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "hermit-abi 0.1.19": {
-      "name": "hermit-abi",
-      "version": "0.1.19",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download",
-          "sha256": "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "hermit_abi",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "hermit_abi",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "libc 0.2.126",
-              "target": "libc"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.1.19"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "image 0.23.12": {
-      "name": "image",
-      "version": "0.23.12",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/image/0.23.12/download",
-          "sha256": "7ce04077ead78e39ae8610ad26216aed811996b043d47beed5090db674f9e9b5"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "image",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "image",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "bmp",
-          "jpeg",
-          "png"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "bytemuck 1.9.1",
-              "target": "bytemuck"
-            },
-            {
-              "id": "byteorder 1.4.3",
-              "target": "byteorder"
-            },
-            {
-              "id": "color_quant 1.1.0",
-              "target": "color_quant"
-            },
-            {
-              "id": "jpeg-decoder 0.1.22",
-              "target": "jpeg_decoder",
-              "alias": "jpeg"
-            },
-            {
-              "id": "num-iter 0.1.43",
-              "target": "num_iter"
-            },
-            {
-              "id": "num-rational 0.3.2",
-              "target": "num_rational"
-            },
-            {
-              "id": "num-traits 0.2.15",
-              "target": "num_traits"
-            },
-            {
-              "id": "png 0.16.8",
-              "target": "png"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.23.12"
-      },
-      "license": "MIT"
-    },
-    "indicatif 0.15.0": {
-      "name": "indicatif",
-      "version": "0.15.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/indicatif/0.15.0/download",
-          "sha256": "7baab56125e25686df467fe470785512329883aab42696d661247aca2a2896e4"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "indicatif",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "indicatif",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "console 0.15.0",
-              "target": "console"
-            },
-            {
-              "id": "lazy_static 1.4.0",
-              "target": "lazy_static"
-            },
-            {
-              "id": "number_prefix 0.3.0",
-              "target": "number_prefix"
-            },
-            {
-              "id": "regex 1.5.6",
-              "target": "regex"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.15.0"
-      },
-      "license": "MIT"
-    },
-    "jpeg-decoder 0.1.22": {
-      "name": "jpeg-decoder",
-      "version": "0.1.22",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/jpeg-decoder/0.1.22/download",
-          "sha256": "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "jpeg_decoder",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "jpeg_decoder",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "0.1.22"
-      },
-      "license": "MIT / Apache-2.0"
-    },
-    "lazy_static 1.4.0": {
-      "name": "lazy_static",
-      "version": "1.4.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/lazy_static/1.4.0/download",
-          "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "lazy_static",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "lazy_static",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "1.4.0"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "libc 0.2.126": {
-      "name": "libc",
-      "version": "0.2.126",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/libc/0.2.126/download",
-          "sha256": "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "libc",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "libc",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "libc 0.2.126",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.2.126"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "miniz_oxide 0.3.7": {
-      "name": "miniz_oxide",
-      "version": "0.3.7",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/miniz_oxide/0.3.7/download",
-          "sha256": "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "miniz_oxide",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "miniz_oxide",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "adler32 1.2.0",
-              "target": "adler32"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.3.7"
-      },
-      "license": "MIT"
-    },
-    "num-integer 0.1.45": {
-      "name": "num-integer",
-      "version": "0.1.45",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/num-integer/0.1.45/download",
-          "sha256": "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "num_integer",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "num_integer",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "i128",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "num-integer 0.1.45",
-              "target": "build_script_build"
-            },
-            {
-              "id": "num-traits 0.2.15",
-              "target": "num_traits"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.1.45"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "autocfg 1.1.0",
-              "target": "autocfg"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "num-iter 0.1.43": {
-      "name": "num-iter",
-      "version": "0.1.43",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/num-iter/0.1.43/download",
-          "sha256": "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "num_iter",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "num_iter",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "num-integer 0.1.45",
-              "target": "num_integer"
-            },
-            {
-              "id": "num-iter 0.1.43",
-              "target": "build_script_build"
-            },
-            {
-              "id": "num-traits 0.2.15",
-              "target": "num_traits"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.1.43"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "autocfg 1.1.0",
-              "target": "autocfg"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "num-rational 0.3.2": {
-      "name": "num-rational",
-      "version": "0.3.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/num-rational/0.3.2/download",
-          "sha256": "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "num_rational",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "num_rational",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "num-integer 0.1.45",
-              "target": "num_integer"
-            },
-            {
-              "id": "num-rational 0.3.2",
-              "target": "build_script_build"
-            },
-            {
-              "id": "num-traits 0.2.15",
-              "target": "num_traits"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.3.2"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "autocfg 1.1.0",
-              "target": "autocfg"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "num-traits 0.2.15": {
-      "name": "num-traits",
-      "version": "0.2.15",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/num-traits/0.2.15/download",
-          "sha256": "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "num_traits",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "num_traits",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "i128",
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "num-traits 0.2.15",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.2.15"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "autocfg 1.1.0",
-              "target": "autocfg"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "num_cpus 1.13.1": {
-      "name": "num_cpus",
-      "version": "1.13.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/num_cpus/1.13.1/download",
-          "sha256": "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "num_cpus",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "num_cpus",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [],
-          "selects": {
-            "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [
-              {
-                "id": "hermit-abi 0.1.19",
-                "target": "hermit_abi"
-              }
-            ],
-            "cfg(not(windows))": [
-              {
-                "id": "libc 0.2.126",
-                "target": "libc"
-              }
-            ]
-          }
-        },
-        "edition": "2015",
-        "version": "1.13.1"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "number_prefix 0.3.0": {
-      "name": "number_prefix",
-      "version": "0.3.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/number_prefix/0.3.0/download",
-          "sha256": "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "number_prefix",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "number_prefix",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "edition": "2015",
-        "version": "0.3.0"
-      },
-      "license": "MIT"
-    },
-    "once_cell 1.12.0": {
-      "name": "once_cell",
-      "version": "1.12.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/once_cell/1.12.0/download",
-          "sha256": "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "once_cell",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "once_cell",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "alloc",
-          "default",
-          "race",
-          "std"
-        ],
-        "edition": "2018",
-        "version": "1.12.0"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "pdqselect 0.1.1": {
-      "name": "pdqselect",
-      "version": "0.1.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/pdqselect/0.1.1/download",
-          "sha256": "7778906d9321dd56cde1d1ffa69a73e59dcf5fda6d366f62727adf2bd4193aee"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "pdqselect",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "pdqselect",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2021",
-        "version": "0.1.1"
-      },
-      "license": "Apache-2.0/MIT"
-    },
-    "png 0.16.8": {
-      "name": "png",
-      "version": "0.16.8",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/png/0.16.8/download",
-          "sha256": "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "png",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "png",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "deflate",
-          "png-encoding"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "bitflags 1.3.2",
-              "target": "bitflags"
-            },
-            {
-              "id": "crc32fast 1.3.2",
-              "target": "crc32fast"
-            },
-            {
-              "id": "deflate 0.8.6",
-              "target": "deflate"
-            },
-            {
-              "id": "miniz_oxide 0.3.7",
-              "target": "miniz_oxide"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.16.8"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "proc-macro-error 1.0.4": {
-      "name": "proc-macro-error",
-      "version": "1.0.4",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/proc-macro-error/1.0.4/download",
-          "sha256": "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "proc_macro_error",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "proc_macro_error",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "syn",
-          "syn-error"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "proc-macro-error 1.0.4",
-              "target": "build_script_build"
-            },
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "proc_macro2"
-            },
-            {
-              "id": "quote 1.0.18",
-              "target": "quote"
-            },
-            {
-              "id": "syn 1.0.95",
-              "target": "syn"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "proc_macro_deps": {
-          "common": [
-            {
-              "id": "proc-macro-error-attr 1.0.4",
-              "target": "proc_macro_error_attr"
-            }
-          ],
-          "selects": {}
-        },
-        "version": "1.0.4"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "version_check 0.9.4",
-              "target": "version_check"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "proc-macro-error-attr 1.0.4": {
-      "name": "proc-macro-error-attr",
-      "version": "1.0.4",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4/download",
-          "sha256": "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-        }
-      },
-      "targets": [
-        {
-          "ProcMacro": {
-            "crate_name": "proc_macro_error_attr",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "proc_macro_error_attr",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "proc-macro-error-attr 1.0.4",
-              "target": "build_script_build"
-            },
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "proc_macro2"
-            },
-            {
-              "id": "quote 1.0.18",
-              "target": "quote"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "1.0.4"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "version_check 0.9.4",
-              "target": "version_check"
-            }
-          ],
-          "selects": {}
-        }
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "proc-macro2 1.0.39": {
-      "name": "proc-macro2",
-      "version": "1.0.39",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.39/download",
-          "sha256": "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "proc_macro2",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "proc_macro2",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "proc-macro"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "build_script_build"
-            },
-            {
-              "id": "unicode-ident 1.0.0",
-              "target": "unicode_ident"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "1.0.39"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "quote 1.0.18": {
-      "name": "quote",
-      "version": "1.0.18",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/quote/1.0.18/download",
-          "sha256": "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "quote",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "quote",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "proc-macro"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "proc_macro2"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "1.0.18"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "rand 0.8.5": {
-      "name": "rand",
-      "version": "0.8.5",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/rand/0.8.5/download",
-          "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "rand",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "rand",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "rand_core 0.6.3",
-              "target": "rand_core"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.8.5"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "rand_core 0.6.3": {
-      "name": "rand_core",
-      "version": "0.6.3",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/rand_core/0.6.3/download",
-          "sha256": "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "rand_core",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "rand_core",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "0.6.3"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "rand_pcg 0.3.1": {
-      "name": "rand_pcg",
-      "version": "0.3.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/rand_pcg/0.3.1/download",
-          "sha256": "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "rand_pcg",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "rand_pcg",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "rand_core 0.6.3",
-              "target": "rand_core"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.3.1"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "regex 1.5.6": {
-      "name": "regex",
-      "version": "1.5.6",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/regex/1.5.6/download",
-          "sha256": "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "regex",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "regex",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "std"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "regex-syntax 0.6.26",
-              "target": "regex_syntax"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "1.5.6"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "regex-syntax 0.6.26": {
-      "name": "regex-syntax",
-      "version": "0.6.26",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/regex-syntax/0.6.26/download",
-          "sha256": "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "regex_syntax",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "regex_syntax",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "0.6.26"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "rstar 0.7.1": {
-      "name": "rstar",
-      "version": "0.7.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/rstar/0.7.1/download",
-          "sha256": "0650eaaa56cbd1726fd671150fce8ac6ed9d9a25d1624430d7ee9d196052f6b6"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "rstar",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "rstar",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "num-traits 0.2.15",
-              "target": "num_traits"
-            },
-            {
-              "id": "pdqselect 0.1.1",
-              "target": "pdqselect"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.7.1"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "smallvec 0.4.5": {
-      "name": "smallvec",
-      "version": "0.4.5",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/smallvec/0.4.5/download",
-          "sha256": "f90c5e5fe535e48807ab94fc611d323935f39d4660c52b26b96446a7b33aef10"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "smallvec",
-            "crate_root": "lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "smallvec",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "std"
-        ],
-        "edition": "2015",
-        "version": "0.4.5"
-      },
-      "license": "MPL-2.0"
-    },
-    "smawk 0.3.1": {
-      "name": "smawk",
-      "version": "0.3.1",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/smawk/0.3.1/download",
-          "sha256": "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "smawk",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "smawk",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "0.3.1"
-      },
-      "license": "MIT"
-    },
-    "strsim 0.8.0": {
-      "name": "strsim",
-      "version": "0.8.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/strsim/0.8.0/download",
-          "sha256": "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "strsim",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "strsim",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "0.8.0"
-      },
-      "license": "MIT"
-    },
-    "structopt 0.3.26": {
-      "name": "structopt",
-      "version": "0.3.26",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/structopt/0.3.26/download",
-          "sha256": "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "structopt",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "structopt",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "clap 2.34.0",
-              "target": "clap"
-            },
-            {
-              "id": "lazy_static 1.4.0",
-              "target": "lazy_static"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "proc_macro_deps": {
-          "common": [
-            {
-              "id": "structopt-derive 0.4.18",
-              "target": "structopt_derive"
-            }
-          ],
-          "selects": {}
-        },
-        "version": "0.3.26"
-      },
-      "license": "Apache-2.0 OR MIT"
-    },
-    "structopt-derive 0.4.18": {
-      "name": "structopt-derive",
-      "version": "0.4.18",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/structopt-derive/0.4.18/download",
-          "sha256": "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
-        }
-      },
-      "targets": [
-        {
-          "ProcMacro": {
-            "crate_name": "structopt_derive",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "structopt_derive",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "heck 0.3.3",
-              "target": "heck"
-            },
-            {
-              "id": "proc-macro-error 1.0.4",
-              "target": "proc_macro_error"
-            },
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "proc_macro2"
-            },
-            {
-              "id": "quote 1.0.18",
-              "target": "quote"
-            },
-            {
-              "id": "syn 1.0.95",
-              "target": "syn"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.4.18"
-      },
-      "license": "Apache-2.0/MIT"
-    },
-    "syn 1.0.95": {
-      "name": "syn",
-      "version": "1.0.95",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/syn/1.0.95/download",
-          "sha256": "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "syn",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "syn",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "clone-impls",
-          "default",
-          "derive",
-          "full",
-          "parsing",
-          "printing",
-          "proc-macro",
-          "quote"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "proc-macro2 1.0.39",
-              "target": "proc_macro2"
-            },
-            {
-              "id": "quote 1.0.18",
-              "target": "quote"
-            },
-            {
-              "id": "syn 1.0.95",
-              "target": "build_script_build"
-            },
-            {
-              "id": "unicode-ident 1.0.0",
-              "target": "unicode_ident"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "1.0.95"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "terminal_size 0.1.17": {
-      "name": "terminal_size",
-      "version": "0.1.17",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/terminal_size/0.1.17/download",
-          "sha256": "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "terminal_size",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "terminal_size",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [],
-          "selects": {
-            "cfg(not(windows))": [
-              {
-                "id": "libc 0.2.126",
-                "target": "libc"
-              }
-            ],
-            "cfg(windows)": [
-              {
-                "id": "winapi 0.3.9",
-                "target": "winapi"
-              }
-            ]
-          }
-        },
-        "edition": "2018",
-        "version": "0.1.17"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "texture-synthesis 0.8.2": {
-      "name": "texture-synthesis",
-      "version": "0.8.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/texture-synthesis/0.8.2/download",
-          "sha256": "62ff62ae485126fec4f3685ced13a1700afb6f6ea12a1a0dec410ebc5dc9378b"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "texture_synthesis",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "texture_synthesis",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "image 0.23.12",
-              "target": "image"
-            },
-            {
-              "id": "num_cpus 1.13.1",
-              "target": "num_cpus"
-            },
-            {
-              "id": "rand 0.8.5",
-              "target": "rand"
-            },
-            {
-              "id": "rand_pcg 0.3.1",
-              "target": "rand_pcg"
-            },
-            {
-              "id": "rstar 0.7.1",
-              "target": "rstar"
-            }
-          ],
-          "selects": {
-            "cfg(not(target_arch = \"wasm32\"))": [
-              {
-                "id": "crossbeam-utils 0.8.8",
-                "target": "crossbeam_utils"
-              }
-            ]
-          }
-        },
-        "edition": "2018",
-        "version": "0.8.2"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "texture-synthesis-cli 0.8.2": {
-      "name": "texture-synthesis-cli",
-      "version": "0.8.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/texture-synthesis-cli/0.8.2/download",
-          "sha256": "a7dbdf13f5e6f214750fce1073279b71ce3076157a8d337c9b0f0e14334e2aec"
-        }
-      },
-      "targets": [
-        {
-          "Binary": {
-            "crate_name": "texture-synthesis",
-            "crate_root": "src/main.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": null,
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "structopt 0.3.26",
-              "target": "structopt"
-            },
-            {
-              "id": "texture-synthesis 0.8.2",
-              "target": "texture_synthesis"
-            }
-          ],
-          "selects": {
-            "cfg(not(target_arch = \"wasm32\"))": [
-              {
-                "id": "atty 0.2.14",
-                "target": "atty"
-              },
-              {
-                "id": "indicatif 0.15.0",
-                "target": "indicatif"
-              }
-            ]
-          }
-        },
-        "edition": "2018",
-        "version": "0.8.2"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "textwrap 0.11.0": {
-      "name": "textwrap",
-      "version": "0.11.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/textwrap/0.11.0/download",
-          "sha256": "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "textwrap",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "textwrap",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "unicode-width 0.1.9",
-              "target": "unicode_width"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.11.0"
-      },
-      "license": "MIT"
-    },
-    "textwrap 0.13.4": {
-      "name": "textwrap",
-      "version": "0.13.4",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/textwrap/0.13.4/download",
-          "sha256": "cd05616119e612a8041ef58f2b578906cc2531a6069047ae092cfb86a325d835"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "textwrap",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "textwrap",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default",
-          "smawk",
-          "unicode-width"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "smawk 0.3.1",
-              "target": "smawk"
-            },
-            {
-              "id": "unicode-width 0.1.9",
-              "target": "unicode_width"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2018",
-        "version": "0.13.4"
-      },
-      "license": "MIT"
-    },
-    "unicode-ident 1.0.0": {
-      "name": "unicode-ident",
-      "version": "1.0.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/unicode-ident/1.0.0/download",
-          "sha256": "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "unicode_ident",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "unicode_ident",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "1.0.0"
-      },
-      "license": "MIT OR Apache-2.0"
-    },
-    "unicode-segmentation 1.9.0": {
-      "name": "unicode-segmentation",
-      "version": "1.9.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/unicode-segmentation/1.9.0/download",
-          "sha256": "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "unicode_segmentation",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "unicode_segmentation",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2018",
-        "version": "1.9.0"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "unicode-width 0.1.9": {
-      "name": "unicode-width",
-      "version": "0.1.9",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/unicode-width/0.1.9/download",
-          "sha256": "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "unicode_width",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "unicode_width",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "default"
-        ],
-        "edition": "2015",
-        "version": "0.1.9"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "vec_map 0.8.2": {
-      "name": "vec_map",
-      "version": "0.8.2",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/vec_map/0.8.2/download",
-          "sha256": "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "vec_map",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "vec_map",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "0.8.2"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "version_check 0.9.4": {
-      "name": "version_check",
-      "version": "0.9.4",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/version_check/0.9.4/download",
-          "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "version_check",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "version_check",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "edition": "2015",
-        "version": "0.9.4"
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "winapi 0.3.9": {
-      "name": "winapi",
-      "version": "0.3.9",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/winapi/0.3.9/download",
-          "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "winapi",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "winapi",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "crate_features": [
-          "consoleapi",
-          "errhandlingapi",
-          "fileapi",
-          "handleapi",
-          "minwinbase",
-          "minwindef",
-          "processenv",
-          "winbase",
-          "wincon",
-          "winnt",
-          "winuser"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "winapi 0.3.9",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {
-            "i686-pc-windows-gnu": [
-              {
-                "id": "winapi-i686-pc-windows-gnu 0.4.0",
-                "target": "winapi_i686_pc_windows_gnu"
-              }
-            ],
-            "x86_64-pc-windows-gnu": [
-              {
-                "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
-                "target": "winapi_x86_64_pc_windows_gnu"
-              }
-            ]
-          }
-        },
-        "edition": "2015",
-        "version": "0.3.9"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "winapi-i686-pc-windows-gnu 0.4.0": {
-      "name": "winapi-i686-pc-windows-gnu",
-      "version": "0.4.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download",
-          "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "winapi_i686_pc_windows_gnu",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "winapi_i686_pc_windows_gnu",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "winapi-i686-pc-windows-gnu 0.4.0",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.4.0"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT/Apache-2.0"
-    },
-    "winapi-x86_64-pc-windows-gnu 0.4.0": {
-      "name": "winapi-x86_64-pc-windows-gnu",
-      "version": "0.4.0",
-      "repository": {
-        "Http": {
-          "url": "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download",
-          "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-        }
-      },
-      "targets": [
-        {
-          "Library": {
-            "crate_name": "winapi_x86_64_pc_windows_gnu",
-            "crate_root": "src/lib.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        },
-        {
-          "BuildScript": {
-            "crate_name": "build_script_build",
-            "crate_root": "build.rs",
-            "srcs": {
-              "include": [
-                "**/*.rs"
-              ],
-              "exclude": []
-            }
-          }
-        }
-      ],
-      "library_target_name": "winapi_x86_64_pc_windows_gnu",
-      "common_attrs": {
-        "compile_data_glob": [
-          "**"
-        ],
-        "deps": {
-          "common": [
-            {
-              "id": "winapi-x86_64-pc-windows-gnu 0.4.0",
-              "target": "build_script_build"
-            }
-          ],
-          "selects": {}
-        },
-        "edition": "2015",
-        "version": "0.4.0"
-      },
-      "build_script_attrs": {
-        "data_glob": [
-          "**"
-        ]
-      },
-      "license": "MIT/Apache-2.0"
-    }
-  },
-  "binary_crates": [
-    "texture-synthesis-cli 0.8.2"
-  ],
-  "workspace_members": {
-    "extra_workspace_members 0.1.0": "extra_workspace_members"
-  },
-  "conditions": {
-    "cfg(all(any(target_arch = \"x86_64\", target_arch = \"aarch64\"), target_os = \"hermit\"))": [],
-    "cfg(not(target_arch = \"wasm32\"))": [
-      "aarch64-apple-darwin",
-      "aarch64-apple-ios",
-      "aarch64-apple-ios-sim",
-      "aarch64-linux-android",
-      "aarch64-unknown-linux-gnu",
-      "arm-unknown-linux-gnueabi",
-      "armv7-linux-androideabi",
-      "armv7-unknown-linux-gnueabi",
-      "i686-apple-darwin",
-      "i686-linux-android",
-      "i686-pc-windows-msvc",
-      "i686-unknown-freebsd",
-      "i686-unknown-linux-gnu",
-      "powerpc-unknown-linux-gnu",
-      "riscv32imc-unknown-none-elf",
-      "s390x-unknown-linux-gnu",
-      "x86_64-apple-darwin",
-      "x86_64-apple-ios",
-      "x86_64-linux-android",
-      "x86_64-pc-windows-msvc",
-      "x86_64-unknown-freebsd",
-      "x86_64-unknown-linux-gnu"
-    ],
-    "cfg(not(windows))": [
-      "aarch64-apple-darwin",
-      "aarch64-apple-ios",
-      "aarch64-apple-ios-sim",
-      "aarch64-linux-android",
-      "aarch64-unknown-linux-gnu",
-      "arm-unknown-linux-gnueabi",
-      "armv7-linux-androideabi",
-      "armv7-unknown-linux-gnueabi",
-      "i686-apple-darwin",
-      "i686-linux-android",
-      "i686-unknown-freebsd",
-      "i686-unknown-linux-gnu",
-      "powerpc-unknown-linux-gnu",
-      "riscv32imc-unknown-none-elf",
-      "s390x-unknown-linux-gnu",
-      "wasm32-unknown-unknown",
-      "wasm32-wasi",
-      "x86_64-apple-darwin",
-      "x86_64-apple-ios",
-      "x86_64-linux-android",
-      "x86_64-unknown-freebsd",
-      "x86_64-unknown-linux-gnu"
-    ],
-    "cfg(target_os = \"hermit\")": [],
-    "cfg(target_os = \"windows\")": [
-      "i686-pc-windows-msvc",
-      "x86_64-pc-windows-msvc"
-    ],
-    "cfg(unix)": [
-      "aarch64-apple-darwin",
-      "aarch64-apple-ios",
-      "aarch64-apple-ios-sim",
-      "aarch64-linux-android",
-      "aarch64-unknown-linux-gnu",
-      "arm-unknown-linux-gnueabi",
-      "armv7-linux-androideabi",
-      "armv7-unknown-linux-gnueabi",
-      "i686-apple-darwin",
-      "i686-linux-android",
-      "i686-unknown-freebsd",
-      "i686-unknown-linux-gnu",
-      "powerpc-unknown-linux-gnu",
-      "s390x-unknown-linux-gnu",
-      "x86_64-apple-darwin",
-      "x86_64-apple-ios",
-      "x86_64-linux-android",
-      "x86_64-unknown-freebsd",
-      "x86_64-unknown-linux-gnu"
-    ],
-    "cfg(windows)": [
-      "i686-pc-windows-msvc",
-      "x86_64-pc-windows-msvc"
-    ],
-    "i686-pc-windows-gnu": [],
-    "x86_64-pc-windows-gnu": []
-  }
-}
diff --git a/examples/crate_universe/extra_workspace_members/Cargo.toml b/examples/crate_universe/extra_workspace_members/Cargo.toml
deleted file mode 100644
index 2577506..0000000
--- a/examples/crate_universe/extra_workspace_members/Cargo.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name = "extra_workspace_members"
-version = "0.1.0"
-authors = ["UebelAndre <github@uebelandre.com>"]
-
-[[bin]]
-name = "extra_workspace_members"
-path = "src/main.rs"
-
-[dependencies]
-ferris-says = "0.2.1"
diff --git a/examples/crate_universe/extra_workspace_members/src/main.rs b/examples/crate_universe/extra_workspace_members/src/main.rs
deleted file mode 100644
index 0f2fffe..0000000
--- a/examples/crate_universe/extra_workspace_members/src/main.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use std::io::{stdout, BufWriter};
-use std::path::Path;
-use std::process::Command;
-
-fn execute_texture_synthesis() -> Vec<u8> {
-    let texture_synthesis_path = Path::new(env!("TEXTURE_SYNTHESIS_CLI"));
-
-    let output = Command::new(texture_synthesis_path)
-        .arg("--help")
-        .output()
-        .unwrap();
-
-    if !output.status.success() {
-        panic!("Execution of texter-synthesis-cli failed")
-    }
-
-    output.stdout
-}
-
-fn main() {
-    // Run the command
-    let output = execute_texture_synthesis();
-
-    // Print the results
-    let mut writer = BufWriter::new(stdout());
-    ferris_says::say(&output, 120, &mut writer).unwrap();
-}
-
-#[cfg(test)]
-mod test {
-    use super::*;
-
-    #[test]
-    fn test_output() {
-        let stdout = execute_texture_synthesis();
-        let text = String::from_utf8(stdout).unwrap();
-        assert!(text.contains("Synthesizes images based on example images"));
-    }
-}