diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 09f6e30c..0fcc2490 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -26,7 +26,7 @@ If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - - Kinode version [e.g. v1.0.0] + - Hyperdrive version [e.g. v1.0.0] - kit version [e.g. v1.0.0] **Additional context** diff --git a/pull_request_template.md b/.github/pull_request_template.md similarity index 70% rename from pull_request_template.md rename to .github/pull_request_template.md index fff18e8b..36bc3e0e 100644 --- a/pull_request_template.md +++ b/.github/pull_request_template.md @@ -8,7 +8,7 @@ ## Docs Update -[Corresponding docs PR](https://github.com/kinode-dao/kinode-book/pull/my-pr-number) +[Corresponding docs PR](https://github.com/hyperware-ai/hyperdrive-book/pull/my-pr-number) ## Notes diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c0ab518f..6fe82d7d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -33,70 +33,57 @@ jobs: rustup target add wasm32-wasip1 rustup target add wasm32-wasip1 --toolchain nightly cargo install cargo-wasi - #- name: Get latest release from foundry-rs/foundry - # id: get-latest-foundry-release - # uses: actions/github-script@v6 - # with: - # script: | - # const repo = { - # owner: 'foundry-rs', - # repo: 'foundry', - # per_page: 1, - # page: 1, - # }; - # const releases = await github.rest.repos.listReleases(repo); - # const preReleases = releases.data.filter(release => release.prerelease); + - name: Get latest release from foundry-rs/foundry + id: get-latest-foundry-release + uses: actions/github-script@v6 + with: + script: | + const repo = { + owner: 'foundry-rs', + repo: 'foundry', + per_page: 1, + page: 1, + }; + const releases = await github.rest.repos.listReleases(repo); + const preReleases = releases.data.filter(release => release.prerelease); - # // Sort pre-releases by created_at date in descending order - # preReleases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at)); + // Sort pre-releases by created_at date in descending order + preReleases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at)); - # if (preReleases.length === 0) { - # throw new Error('No pre-releases found'); - # } + if (preReleases.length === 0) { + throw new Error('No pre-releases found'); + } - # const latestPreRelease = preReleases[0]; - # const asset = latestPreRelease.assets.find(asset => asset.name.match(/foundry_nightly_linux_amd64\.tar\.gz/)); + const latestPreRelease = preReleases[0]; + const asset = latestPreRelease.assets.find(asset => asset.name.match(/foundry_nightly_linux_amd64\.tar\.gz/)); - # if (!asset) { - # throw new Error('Asset not found'); - # } - # return asset.browser_download_url; - # result-encoding: string - - name: Download Foundry - run: wget -q https://github.com/foundry-rs/foundry/releases/download/nightly-c3069a50ba18cccfc4e7d5de9b9b388811d9cc7b/foundry_nightly_linux_amd64.tar.gz -O foundry.tar.gz - #run: wget -q ${DOWNLOAD_URL} -O foundry.tar.gz - #env: - # DOWNLOAD_URL: ${{ steps.get-latest-foundry-release.outputs.result }} - - name: Untar Foundry - run: tar zxf foundry.tar.gz - - name: Add Foundry to path - run: echo "$PWD" >> $GITHUB_PATH - - name: Build the release - run: ./scripts/build-release.py - - name: Unzip the build output - run: unzip /tmp/kit-release/kit-x86_64-unknown-linux-gnu.zip - #- name: Get latest release from kinode-dao/kinode - # id: get-latest-kinode-release + if (!asset) { + throw new Error('Asset not found'); + } + return asset.browser_download_url; + result-encoding: string + #- name: Get latest release from hyperware-ai/hyperdrive + # id: get-latest-hyperdrive-release # uses: actions/github-script@v6 # with: # script: | # const repo = { - # owner: 'kinode-dao', - # repo: 'kinode', + # owner: 'hyperware-ai', + # repo: 'hyperdrive', # }; # const release = await github.rest.repos.getLatestRelease(repo); - # const asset = release.data.assets.find(asset => asset.name.match(/kinode-x86_64-unknown-linux-gnu\.zip/)); + # const asset = release.data.assets.find(asset => asset.name.match(/hyperdrive-x86_64-unknown-linux-gnu\.zip/)); # if (!asset) { # throw new Error('Asset not found'); # } # return asset.browser_download_url; # result-encoding: string - #- name: Download the Kinode release - # run: wget -q ${DOWNLOAD_URL} -O kinode.zip + #- name: Download the Hyperdrive release + # run: wget -q ${DOWNLOAD_URL} -O hyperdrive.zip # env: - # DOWNLOAD_URL: ${{ steps.get-latest-kinode-release.outputs.result }} - #- name: Unzip the Kinode release - # run: unzip kinode.zip + # DOWNLOAD_URL: ${{ steps.get-latest-hyperdrive-release.outputs.result }} + #- name: Unzip the Hyperdrive release + # run: unzip hyperdrive.zip - name: Run tests run: | { ./kit t src/new/templates/tests.toml; } 2>&1 diff --git a/Cargo.lock b/Cargo.lock index bd210e72..3a261278 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2084,6 +2084,30 @@ dependencies = [ "tracing", ] +[[package]] +name = "hyperware_process_lib" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b605a36ca638d3c8501e19ab33237abf6a7cf0e1547cfc6db2520dd58ef02" +dependencies = [ + "alloy", + "alloy-primitives", + "alloy-sol-macro", + "alloy-sol-types", + "anyhow", + "bincode", + "http", + "mime_guess", + "rand", + "regex", + "rmp-serde", + "serde", + "serde_json", + "thiserror 1.0.63", + "url", + "wit-bindgen", +] + [[package]] name = "iana-time-zone" version = "0.1.61" @@ -2255,32 +2279,9 @@ dependencies = [ "sha3-asm", ] -[[package]] -name = "kinode_process_lib" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46830129ca3814865519615f1d4e4c1e9894c9df50be38a6c8069572e9cc1530" -dependencies = [ - "alloy", - "alloy-primitives", - "alloy-sol-macro", - "alloy-sol-types", - "anyhow", - "bincode", - "http", - "mime_guess", - "rand", - "rmp-serde", - "serde", - "serde_json", - "thiserror 1.0.63", - "url", - "wit-bindgen", -] - [[package]] name = "kit" -version = "0.9.1" +version = "1.0.0" dependencies = [ "alloy", "alloy-sol-macro", @@ -2295,7 +2296,7 @@ dependencies = [ "fs-err", "git2", "hex", - "kinode_process_lib", + "hyperware_process_lib", "nix 0.27.1", "proc-macro2", "regex", @@ -2955,7 +2956,7 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -3064,14 +3065,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -3085,13 +3086,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -3102,9 +3103,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" diff --git a/Cargo.toml b/Cargo.toml index 53f0b9a9..31028f53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "kit" authors = ["Sybil Technologies AG"] -version = "0.9.1" +version = "1.0.0" edition = "2021" -description = "Development toolkit for Kinode" -homepage = "https://kinode.org" -repository = "https://github.com/kinode-dao/kit" +description = "Development toolkit for Hyperware" +homepage = "https://hyperware.ai" +repository = "https://github.com/hyperware-ai/kit" license = "Apache-2.0" [build-dependencies] @@ -42,7 +42,7 @@ color-eyre = { version = "0.6", features = ["capture-spantrace"] } dirs = "5.0" fs-err = "2.11" hex = "0.4" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" nix = { version = "0.27", features = ["process", "signal", "term"] } proc-macro2 = "1.0" regex = "1" diff --git a/README.md b/README.md index cfa9446f..9ad217d8 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # kit -Tool**kit** for developing on [Kinode OS](https://github.com/kinode-dao/kinode). +Tool**kit** for developing on [Hyperware](https://hyperware.ai). -Documentation in the [Kinode Book](https://book.kinode.org/kit/kit-dev-toolkit.html); example usage [here](https://book.kinode.org/my_first_app/chapter_1.html). +Documentation in the [Hyperware Book](https://book.hyperware.ai/kit/kit-dev-toolkit.html); example usage [here](https://book.hyperware.ai/my_first_app/chapter_1.html). ## Installing Install with cargo: ```bash -cargo install --git https://github.com/kinode-dao/kit --locked +cargo install --git https://github.com/hyperware-ai/kit --locked ``` ### Updating @@ -17,7 +17,7 @@ cargo install --git https://github.com/kinode-dao/kit --locked To update, re-run ```bash -cargo install --git https://github.com/kinode-dao/kit --locked +cargo install --git https://github.com/hyperware-ai/kit --locked ``` or use @@ -63,18 +63,18 @@ kit start-package kit --help ``` -`kit boot-fake-node` can also accept a `--runtime-path` argument that compiles the fake node binary from a local Kinode core repository. -Use like (substituting path to Kinode core repo): +`kit boot-fake-node` can also accept a `--runtime-path` argument that compiles the fake node binary from a local [Hyperdrive](https://github.com/hyperware-ai/hyperdrive) repository. +Use like (substituting path to Hyperdrive repo): ```bash -kit boot-fake-node --runtime-path ~/git/kinode +kit boot-fake-node --runtime-path ~/git/hyperdrive ``` `kit` also contains tools for running tests. For details and examples, please see -1. [Kinode Book's example code](https://github.com/kinode-dao/kinode-book/tree/main/code). -2. `kit`s templates, available through `kit new` or [here](https://github.com/kinode-dao/kit/tree/master/src/new/templates/rust). -3. [https://github.com/kinode-dao/core_tests](https://github.com/kinode-dao/core_tests). +1. [Hyperdrive Book's example code](https://github.com/hyperware-ai/hyperware-book/tree/main/code). +2. `kit`s templates, available through `kit new` or [here](https://github.com/hyperware-ai/kit/tree/master/src/new/templates/rust). +3. [https://github.com/hyperware-ai/core_tests](https://github.com/hyperware-ai/core_tests). ## UI Development diff --git a/build.rs b/build.rs index 8bfdc6e8..5c3ae138 100644 --- a/build.rs +++ b/build.rs @@ -3,10 +3,8 @@ use std::io::{self, Write}; use std::path::Path; const TEMPLATES_DIR: &str = "src/new/templates"; -const CHAIN_KINOSTATE_DIR: &str = "src/chain/kinostate"; const TARGET_DIR: &str = "target"; const NEW_INCLUDES: &str = "new_includes.rs"; -const CHAIN_INCLUDES: &str = "chain_includes.rs"; /// create target/new_includes.rs to build templates into binary fn make_new_includes() -> anyhow::Result<()> { @@ -85,49 +83,6 @@ fn visit_dirs(dir: &Path, output_buffer: &mut Vec) -> io::Result<()> { Ok(()) } -fn make_chain_includes() -> anyhow::Result<()> { - let mut output_buffer = Vec::new(); - writeln!( - &mut output_buffer, - "const FOUNDRY_COMMIT_TO_CONTENT: &[(&str, &str)] = &[" - )?; - - for entry in fs::read_dir(CHAIN_KINOSTATE_DIR)? { - let entry = entry?; - let path = entry.path(); - let commit = path - .file_stem() - .and_then(|c| c.to_str()) - .ok_or_else(|| anyhow::anyhow!("couldn't get commit from {path:?}"))?; - writeln!( - output_buffer, - " (\"{}\", include_str!(\"{}\")),", - commit, - Path::new("..").join(&path).display(), - )?; - println!("cargo::rerun-if-changed={}", path.display()); - } - - writeln!(&mut output_buffer, "];")?; - - let target_dir = Path::new(TARGET_DIR); - let chain_output_path = target_dir.join(CHAIN_INCLUDES); - // create *_includes.rs if it does not exist - if !target_dir.exists() { - fs::create_dir_all(target_dir)?; - } - if !chain_output_path.exists() { - fs::write(&chain_output_path, &output_buffer)?; - } else { - let existing_file = fs::read(&chain_output_path)?; - if output_buffer != existing_file { - fs::write(&chain_output_path, &output_buffer)?; - } - } - - Ok(()) -} - fn add_commit_hash(repo: &git2::Repository) -> anyhow::Result<()> { let sha = repo .head()? @@ -152,7 +107,6 @@ fn add_branch_name(repo: &git2::Repository) -> anyhow::Result<()> { fn main() -> anyhow::Result<()> { make_new_includes()?; - make_chain_includes()?; // write version info into binary let repo = git2::Repository::open(".")?; diff --git a/src/boot_fake_node/mod.rs b/src/boot_fake_node/mod.rs index 1ecb7bfa..a915f959 100644 --- a/src/boot_fake_node/mod.rs +++ b/src/boot_fake_node/mod.rs @@ -25,10 +25,11 @@ use crate::run_tests::cleanup::{cleanup, cleanup_on_signal}; use crate::run_tests::types::*; use crate::KIT_CACHE; -const KINODE_RELEASE_BASE_URL: &str = "https://github.com/kinode-dao/kinode/releases/download"; -pub const KINODE_OWNER: &str = "kinode-dao"; -const KINODE_REPO: &str = "kinode"; -const LOCAL_PREFIX: &str = "kinode-"; +const HYPERDRIVE_RELEASE_BASE_URL: &str = + "https://github.com/hyperware-ai/hyperdrive/releases/download"; +pub const HYPERWARE_OWNER: &str = "hyperware-ai"; +const HYPERDRIVE_REPO: &str = "hyperdrive"; +const LOCAL_PREFIX: &str = "hyperdrive-"; pub const CACHE_EXPIRY_SECONDS: u64 = 300; #[derive(Deserialize, Debug)] @@ -77,7 +78,7 @@ pub fn extract_zip(archive_path: &Path) -> Result<()> { #[instrument(level = "trace", skip_all)] pub fn compile_runtime(path: &Path, release: bool, is_simulation_mode: bool) -> Result<()> { - info!("Compiling Kinode runtime..."); + info!("Compiling Hyperdrive..."); // build the packages let mut args = vec!["run", "-p", "build-packages"]; @@ -87,7 +88,7 @@ pub fn compile_runtime(path: &Path, release: bool, is_simulation_mode: bool) -> build::run_command(Command::new("cargo").args(&args).current_dir(path), false)?; // build the runtime - let mut args = vec!["build", "-p", "kinode", "--color=always"]; + let mut args = vec!["build", "-p", "hyperdrive", "--color=always"]; if release { args.push("--release"); } @@ -105,7 +106,7 @@ pub fn compile_runtime(path: &Path, release: bool, is_simulation_mode: bool) -> } build::run_command(&mut command, false)?; - info!("Done compiling Kinode runtime."); + info!("Done compiling Hyperdrive."); Ok(()) } @@ -115,10 +116,10 @@ async fn get_runtime_binary_inner( zip_name: &str, runtime_dir: &PathBuf, ) -> Result<()> { - let url = format!("{KINODE_RELEASE_BASE_URL}/{version}/{zip_name}"); + let url = format!("{HYPERDRIVE_RELEASE_BASE_URL}/{version}/{zip_name}"); let runtime_zip_path = runtime_dir.join(zip_name); - let runtime_path = runtime_dir.join("kinode"); + let runtime_path = runtime_dir.join("hyperdrive"); build::download_file(&url, &runtime_zip_path).await?; extract_zip(&runtime_zip_path)?; @@ -157,12 +158,12 @@ pub fn get_platform_runtime_name(is_simulation_mode: bool) -> Result { "OS/Architecture {}/{} not amongst pre-built [Linux/x86_64, Linux/aarch64, Apple/arm64, Apple/x86_64].", os_name, architecture_name, - ).with_suggestion(|| "Use the `--runtime-path` flag to build a local copy of the https://github.com/kinode-dao/kinode repo") + ).with_suggestion(|| "Use the `--runtime-path` flag to build a local copy of the https://github.com/hyperware-ai/hyperdrive repo") ); } }; Ok(format!( - "kinode-{}{}.zip", + "hyperdrive-{}{}.zip", zip_name_midfix, if is_simulation_mode { "-simulation-mode" @@ -183,11 +184,12 @@ pub async fn get_runtime_binary( version.to_string() } else { find_releases_with_asset_if_online( - Some(KINODE_OWNER), - Some(KINODE_REPO), + Some(HYPERWARE_OWNER), + Some(HYPERDRIVE_REPO), &get_platform_runtime_name(is_simulation_mode)?, ) - .await? + .await + .unwrap_or_default() .first() .ok_or_else(|| eyre!("No releases found"))? .clone() @@ -203,7 +205,7 @@ pub async fn get_runtime_binary( "" }, )); - let runtime_path = runtime_dir.join("kinode"); + let runtime_path = runtime_dir.join("hyperdrive"); if !runtime_dir.exists() { fs::create_dir_all(&runtime_dir)?; @@ -292,9 +294,12 @@ pub async fn find_releases_with_asset( repo: Option<&str>, asset_name: &str, ) -> Result> { - let owner = owner.unwrap_or(KINODE_OWNER); - let repo = repo.unwrap_or(KINODE_REPO); - let releases = fetch_releases(owner, repo).await?; + let owner = owner.unwrap_or(HYPERWARE_OWNER); + let repo = repo.unwrap_or(HYPERDRIVE_REPO); + let Ok(releases) = fetch_releases(owner, repo).await else { + warn!("Failed to fetch releases from {owner}/{repo}. Using empty"); + return Ok(vec![]); + }; let filtered_releases: Vec = releases .into_iter() .filter(|release| release.assets.iter().any(|asset| asset.name == asset_name)) @@ -420,11 +425,13 @@ pub async fn execute( verbosity: u8, mut args: Vec, ) -> Result<()> { + println!("a"); let detached = false; // TODO: to argument? // TODO: factor out with run_tests? let (runtime_path, version) = match runtime_path { None => get_runtime_binary(&version, true).await?, Some(runtime_path) => { + println!("b"); if !runtime_path.exists() { return Err(eyre!("--runtime-path {:?} does not exist.", runtime_path)); } @@ -434,7 +441,7 @@ pub async fn execute( runtime_path .join("target") .join(if release { "release" } else { "debug" }) - .join("kinode") + .join("hyperdrive") } else { runtime_path }; @@ -443,7 +450,7 @@ pub async fn execute( false, )? else { - return Err(eyre!("couldn't get Kinode version")); + return Err(eyre!("couldn't get Hyperdrive version")); }; let version = output .split('\n') diff --git a/src/boot_real_node/mod.rs b/src/boot_real_node/mod.rs index 97343b3f..789237f9 100644 --- a/src/boot_real_node/mod.rs +++ b/src/boot_real_node/mod.rs @@ -38,7 +38,7 @@ pub async fn execute( runtime_path .join("target") .join(if release { "release" } else { "debug" }) - .join("kinode") + .join("hyperdrive") } else { runtime_path } diff --git a/src/build/Dockerfile.buildpackage b/src/build/Dockerfile.buildpackage index e8289e54..0d85d203 100644 --- a/src/build/Dockerfile.buildpackage +++ b/src/build/Dockerfile.buildpackage @@ -6,7 +6,7 @@ ENV NVM_DIR=/root/.nvm \ RUN . ~/.bashrc \ && . ~/.cargo/env \ && . $NVM_DIR/nvm.sh \ - && cargo install --git https://github.com/kinode-dao/kit --locked --tag v0.8.0 + && cargo install --git https://github.com/hyperware-ai/kit --locked --tag v0.8.0 WORKDIR /input diff --git a/src/build/mod.rs b/src/build/mod.rs index 2a8facb6..b9095977 100644 --- a/src/build/mod.rs +++ b/src/build/mod.rs @@ -18,7 +18,7 @@ use tracing::{debug, info, instrument, warn}; use walkdir::WalkDir; use zip::write::FileOptions; -use kinode_process_lib::{kernel_types::Erc721Metadata, PackageId}; +use hyperware_process_lib::{kernel_types::Erc721Metadata, PackageId}; use crate::publish::make_local_file_link_path; use crate::run_tests::types::BroadcastRecvBool; @@ -38,16 +38,11 @@ const PYTHON_SRC_PATH: &str = "src/lib.py"; const RUST_SRC_PATH: &str = "src/lib.rs"; const PACKAGE_JSON_NAME: &str = "package.json"; const COMPONENTIZE_MJS_NAME: &str = "componentize.mjs"; -const KINODE_WIT_0_7_0_URL: &str = - "https://raw.githubusercontent.com/kinode-dao/kinode-wit/aa2c8b11c9171b949d1991c32f58591c0e881f85/kinode.wit"; -const KINODE_WIT_0_8_0_URL: &str = - "https://raw.githubusercontent.com/kinode-dao/kinode-wit/v0.8/kinode.wit"; -const KINODE_WIT_1_0_0_URL: &str = - "https://raw.githubusercontent.com/kinode-dao/kinode-wit/v1.0.0/kinode.wit"; +const HYPERWARE_WIT_1_0_0_URL: &str = + "https://raw.githubusercontent.com/hyperware-ai/hyperware-wit/v1.0.0/hyperware.wit"; const WASI_VERSION: &str = "27.0.0"; // TODO: un-hardcode -const DEFAULT_WORLD_0_7_0: &str = "process"; -const DEFAULT_WORLD_0_8_0: &str = "process-v0"; -const KINODE_PROCESS_LIB_CRATE_NAME: &str = "kinode_process_lib"; +const DEFAULT_WORLD_1_0_0: &str = "process-v1"; +const KINODE_PROCESS_LIB_CRATE_NAME: &str = "hyperware_process_lib"; #[derive(Debug, Clone, Serialize, Deserialize)] struct CargoFile { @@ -276,7 +271,7 @@ pub async fn download_file(url: &str, path: &Path) -> Result<()> { pub fn read_metadata(package_dir: &Path) -> Result { let metadata: Erc721Metadata = serde_json::from_reader(fs::File::open(package_dir.join("metadata.json")) - .wrap_err_with(|| "Missing required metadata.json file. See discussion at https://book.kinode.org/my_first_app/chapter_1.html?highlight=metadata.json#metadatajson")? + .wrap_err_with(|| "Missing required metadata.json file. See discussion at https://book.hyperware.ai/my_first_app/chapter_1.html?highlight=metadata.json#metadatajson")? )?; Ok(metadata) } @@ -361,7 +356,7 @@ fn extract_worlds_from_files(directory: &Path) -> Vec { for entry in entries.filter_map(Result::ok) { let path = entry.path(); if !path.is_file() - || Some("kinode.wit") == path.file_name().and_then(|s| s.to_str()) + || Some("hyperware.wit") == path.file_name().and_then(|s| s.to_str()) || Some("wit") != path.extension().and_then(|s| s.to_str()) { continue; @@ -813,7 +808,7 @@ async fn compile_javascript_wasm_process( verbose: bool, ) -> Result<()> { info!( - "Compiling Javascript Kinode process in {:?}...", + "Compiling Javascript Hyperware process in {:?}...", process_dir ); @@ -852,7 +847,7 @@ async fn compile_javascript_wasm_process( )?; info!( - "Done compiling Javascript Kinode process in {:?}.", + "Done compiling Javascript Hyperware process in {:?}.", process_dir ); Ok(()) @@ -865,7 +860,7 @@ async fn compile_python_wasm_process( world: &str, verbose: bool, ) -> Result<()> { - info!("Compiling Python Kinode process in {:?}...", process_dir); + info!("Compiling Python Hyperware process in {:?}...", process_dir); let wasm_file_name = process_dir.file_name().and_then(|s| s.to_str()).unwrap(); let world_name = get_world_or_default(&process_dir.join("target").join("wit"), world); @@ -890,7 +885,10 @@ async fn compile_python_wasm_process( verbose, )?; - info!("Done compiling Python Kinode process in {:?}.", process_dir); + info!( + "Done compiling Python Hyperware process in {:?}.", + process_dir + ); Ok(()) } @@ -900,7 +898,7 @@ async fn compile_rust_wasm_process( features: &str, verbose: bool, ) -> Result<()> { - info!("Compiling Rust Kinode process in {:?}...", process_dir); + info!("Compiling Rust Hyperware process in {:?}...", process_dir); // Paths let wit_dir = process_dir.join("target").join("wit"); @@ -932,7 +930,6 @@ async fn compile_rust_wasm_process( // Build the module using Cargo let mut args = vec![ - "+nightly", "build", "--release", "--no-default-features", @@ -1012,7 +1009,10 @@ async fn compile_rust_wasm_process( verbose, )?; - info!("Done compiling Rust Kinode process in {:?}.", process_dir); + info!( + "Done compiling Rust Hyperware process in {:?}.", + process_dir + ); Ok(()) } @@ -1075,11 +1075,9 @@ async fn build_wit_dir( fs::remove_dir_all(&wit_dir)?; } let wit_url = match wit_version { - None => KINODE_WIT_0_7_0_URL, - Some(0) => KINODE_WIT_0_8_0_URL, - Some(1) | _ => KINODE_WIT_1_0_0_URL, + Some(1) | _ => HYPERWARE_WIT_1_0_0_URL, }; - download_file(wit_url, &wit_dir.join("kinode.wit")).await?; + download_file(wit_url, &wit_dir.join("hyperware.wit")).await?; for (file_name, contents) in apis { let destination = wit_dir.join(file_name); fs::write(&destination, contents)?; @@ -1274,7 +1272,7 @@ fn extract_imports_exports_from_wit(input: &str) -> (Vec, Vec) { let imports: Vec = import_re .captures_iter(input) .map(|cap| cap[1].to_string()) - .filter(|s| !(s.contains("wasi") || s.contains("kinode:process/standard"))) + .filter(|s| !(s.contains("wasi") || s.contains("hyperware:process/standard"))) .collect(); let exports: Vec = export_re @@ -1563,8 +1561,7 @@ async fn compile_package( let wit_world = default_world .unwrap_or_else(|| match metadata.properties.wit_version { - None => DEFAULT_WORLD_0_7_0, - Some(0) | _ => DEFAULT_WORLD_0_8_0, + Some(1) | _ => DEFAULT_WORLD_1_0_0, }) .to_string(); diff --git a/src/build/rewrite.rs b/src/build/rewrite.rs index df6dc251..8ec1a392 100644 --- a/src/build/rewrite.rs +++ b/src/build/rewrite.rs @@ -795,7 +795,7 @@ fn rewrite_rust_file( // Create the replacement code let replacement = format!( r#"{{ - use kinode_process_lib::{{spawn, OnExit, Request}}; + use hyperware_process_lib::{{spawn, OnExit, Request}}; {args_type} {args_instance} diff --git a/src/chain/bytecode/deploykinoaccountminter.txt b/src/chain/bytecode/deploykinoaccountminter.txt new file mode 100644 index 00000000..58d1cf18 --- /dev/null +++ b/src/chain/bytecode/deploykinoaccountminter.txt @@ -0,0 +1 @@ +0x000000000000000000000000000000000000000000000000000000000000123460e06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f5ffd5b50604051613ab3380380613ab3833981810160405281019061006491906101cc565b808073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250507fff62b5f493ba6ce7c217bb31befa418a559dcb03d1d0c0eec2771445154d69a86040518060400160405280601181526020017f4549503731324b696e6f4163636f756e74000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525080519060200120463060405160200161014a959493929190610236565b6040516020818303038152906040528051906020012060a081815250505050610287565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61019b82610172565b9050919050565b6101ab81610191565b81146101b5575f5ffd5b50565b5f815190506101c6816101a2565b92915050565b5f602082840312156101e1576101e061016e565b5b5f6101ee848285016101b8565b91505092915050565b5f819050919050565b610209816101f7565b82525050565b5f819050919050565b6102218161020f565b82525050565b61023081610191565b82525050565b5f60a0820190506102495f830188610200565b6102566020830187610200565b6102636040830186610200565b6102706060830185610218565b61027d6080830184610227565b9695505050505050565b60805160a05160c0516137ed6102c65f395f8181610cab015261112d01525f610b7e01525f8181611484015281816114d9015261185501526137ed5ff3fe608060405260043610610142575f3560e01c80635b64a054116100b5578063bc197c811161006e578063bc197c811461048f578063c19d93fb146104cb578063ca3b98bb146104f5578063d087d28814610525578063f23a6e611461054f578063fc0c546a1461058b57610149565b80635b64a054146103835780636d70f7ae146103bf5780637f587930146103fb5780638129fc1c14610425578063ad3cb1cc1461043b578063b0d691fe1461046557610149565b80631626ba7e116101075780631626ba7e1461025957806319822f7c146102955780634f1ef286146102d157806351945447146102ed578063523e32601461031d57806352d1902d1461035957610149565b806223de291461014d57806301ffc9a714610175578063094cefed146101b1578063144fb5a8146101e1578063150b7a021461021d57610149565b3661014957005b5f5ffd5b348015610158575f5ffd5b50610173600480360381019061016e919061231d565b6105b7565b005b348015610180575f5ffd5b5061019b6004803603810190610196919061243c565b6105c1565b6040516101a89190612481565b60405180910390f35b6101cb60048036038101906101c6919061249a565b61063a565b6040516101d8919061254c565b60405180910390f35b3480156101ec575f5ffd5b5061020760048036038101906102029190612587565b610655565b604051610214919061254c565b60405180910390f35b348015610228575f5ffd5b50610243600480360381019061023e919061263f565b6107be565b60405161025091906126d2565b60405180910390f35b348015610264575f5ffd5b5061027f600480360381019061027a9190612856565b610854565b60405161028c91906126d2565b60405180910390f35b3480156102a0575f5ffd5b506102bb60048036038101906102b691906128cf565b6109a7565b6040516102c8919061294a565b60405180910390f35b6102eb60048036038101906102e69190612963565b6109d9565b005b610307600480360381019061030291906129f3565b6109f8565b6040516103149190612ad7565b60405180910390f35b348015610328575f5ffd5b50610343600480360381019061033e9190612af7565b610aa8565b60405161035091906126d2565b60405180910390f35b348015610364575f5ffd5b5061036d610ad1565b60405161037a9190612b63565b60405180910390f35b34801561038e575f5ffd5b506103a960048036038101906103a49190612b7c565b610b02565b6040516103b69190612b63565b60405180910390f35b3480156103ca575f5ffd5b506103e560048036038101906103e09190612c33565b610bb1565b6040516103f29190612481565b60405180910390f35b348015610406575f5ffd5b5061040f610ca8565b60405161041c9190612cb9565b60405180910390f35b348015610430575f5ffd5b50610439610ccf565b005b348015610446575f5ffd5b5061044f610e4e565b60405161045c9190612d24565b60405180910390f35b348015610470575f5ffd5b50610479610e87565b6040516104869190612d64565b60405180910390f35b34801561049a575f5ffd5b506104b560048036038101906104b09190612dd2565b610ea2565b6040516104c291906126d2565b60405180910390f35b3480156104d6575f5ffd5b506104df610eb9565b6040516104ec919061294a565b60405180910390f35b61050f600480360381019061050a9190612ea9565b610f40565b60405161051c9190612ad7565b60405180910390f35b348015610530575f5ffd5b50610539610fff565b604051610546919061294a565b60405180910390f35b34801561055a575f5ffd5b5061057560048036038101906105709190612f3f565b611086565b60405161058291906126d2565b60405180910390f35b348015610596575f5ffd5b5061059f61109b565b6040516105ae93929190612fd5565b60405180910390f35b5050505050505050565b5f6105cb826110b1565b8061063357507fb8167f3d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f61064987878787878761112a565b90509695505050505050565b5f5f6106788989898989898960600160208101906106739190612c33565b610b02565b90505f610684826111da565b90505f6106b7855f01602081019061069c919061300a565b866020013587604001358561120d909392919063ffffffff16565b90508460600160208101906106cc9190612c33565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074f57808560600160208101906107129190612c33565b6040517f42d750dc000000000000000000000000000000000000000000000000000000008152600401610746929190613035565b60405180910390fd5b5f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061079b90613089565b91905055506107ae8b8b8b8b8b8b61112a565b9350505050979650505050505050565b5f5f5f6107c961109b565b92509250508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561080857508086145b1561083f576040517fb79e3f3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63150b7a0260e01b9250505095945050505050565b5f5f5f5f6108618561123b565b8094508195508293505050505f8160ff1603610968575f835f1c90506060602084880101905061089082610bb1565b1580156108c957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156108e25763ffffffff60e01b955050505050506109a1565b8173ffffffffffffffffffffffffffffffffffffffff16631626ba7e89836040518363ffffffff1660e01b815260040161091d9291906130d0565b602060405180830381865afa158015610938573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095c9190613112565b955050505050506109a1565b61097c6109778783868661120d565b610bb1565b1561099357631626ba7e60e01b93505050506109a1565b63ffffffff60e01b93505050505b92915050565b5f6109b061125c565b6109ba84846112d3565b90506109c9846020013561139c565b6109d2826113eb565b9392505050565b6109e1611482565b6109ea82611568565b6109f482826115eb565b5050565b6060610a0333610bb1565b158015610a435750610a13610e87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610a7a576040517f8f0052a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a8987878787875a611709565b809350819250505080610a9e57815160208301fd5b5095945050505050565b5f610ab284610bb1565b610abf575f60e01b610ac8565b63523e326060e01b5b90509392505050565b5f610ada611853565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f5f88305f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548a8a8a8a8a8a604051602001610b61999897969594939291906131d0565b604051602081830303815290604052805190602001209050610ba37f0000000000000000000000000000000000000000000000000000000000000000826118da565b915050979650505050505050565b5f5f5f610bbc61109b565b92509250508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610c11919061294a565b602060405180830381865afa158015610c2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c509190613260565b73ffffffffffffffffffffffffffffffffffffffff16148015610c9f57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b92505050919050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f610cd861191a565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610d205750825b90505f60018367ffffffffffffffff16148015610d5357505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610d61575080155b15610d98576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610de5576001855f0160086101000a81548160ff0219169083151502179055505b610ded611941565b8315610e47575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610e3e91906132d7565b60405180910390a15b5050505050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789905090565b5f63bc197c8160e01b905098975050505050505050565b5f610ec2610e87565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a305f6040518363ffffffff1660e01b8152600401610efc92919061334c565b602060405180830381865afa158015610f17573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3b9190613387565b905090565b6060610f4b33610bb1565b158015610f8b5750610f5b610e87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610fc2576040517f8f0052a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610fdf88888888885f8914610fd85788610fda565b5a5b611709565b809350819250505080610ff457815160208301fd5b509695505050505050565b5f611008610e87565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a305f6040518363ffffffff1660e01b815260040161104292919061334c565b602060405180830381865afa15801561105d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190613387565b905090565b5f63f23a6e6160e01b90509695505050505050565b5f5f5f6110a661194b565b925092509250909192565b5f6110bb82611962565b8061112357507f6faff5f1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663094cefed8888888888886040518763ffffffff1660e01b815260040161118e969594939291906133de565b6020604051808303815f875af11580156111aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ce9190613260565b90509695505050505050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f61121d88888888611bd3565b92509250925061122d8282611cba565b829350505050949350505050565b5f5f5f602084015191506040840151905060608401515f1a92509193909250565b611264610e87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c89061347d565b60405180910390fd5b565b5f5f6112de836111da565b9050631626ba7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916611363828680610100019061131c91906134a7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610854565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611391576001915050611396565b5f9150505b92915050565b67ffffffffffffffff801681106113e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113df90613553565b60405180910390fd5b50565b5f811461147f575f3373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060405161143990613594565b5f60405180830381858888f193505050503d805f8114611474576040519150601f19603f3d011682016040523d82523d5f602084013e611479565b606091505b50509050505b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061152f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611516611e1c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611566576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61157133610bb1565b1580156115b15750611581610e87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156115e8576040517f8f0052a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561165357506040513d601f19601f8201168201806040525081019061165091906135bc565b60015b61169457816040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161168b919061254c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b81146116fa57806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016116f19190612b63565b60405180910390fd5b6117048383611e6f565b505050565b5f60605f8460ff160361178d578773ffffffffffffffffffffffffffffffffffffffff168388888860405161173f9291906135e7565b5f60405180830381858888f193505050503d805f811461177a576040519150601f19603f3d011682016040523d82523d5f602084013e61177f565b606091505b508092508193505050611848565b60018460ff160361180c578773ffffffffffffffffffffffffffffffffffffffff168387876040516117c09291906135e7565b5f604051808303818686f4925050503d805f81146117f9576040519150601f19603f3d011682016040523d82523d5f602084013e6117fe565b606091505b508092508193505050611847565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90613649565b60405180910390fd5b5b965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146118d8576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611949611ee1565b565b5f5f5f61195730611f21565b925092509250909192565b5f7f3ce4a3e9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a2c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a9457507f19822f7c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611afc57507f1626ba7e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611b6457507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611bcc57507f51945447000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611c0f575f600385925092509250611cb0565b5f6001888888886040515f8152602001604052604051611c329493929190613676565b6020604051602081039080840390855afa158015611c52573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ca3575f60015f5f1b93509350935050611cb0565b805f5f5f1b935093509350505b9450945094915050565b5f6003811115611ccd57611ccc6136b9565b5b826003811115611ce057611cdf6136b9565b5b0315611e185760016003811115611cfa57611cf96136b9565b5b826003811115611d0d57611d0c6136b9565b5b03611d44576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611d5857611d576136b9565b5b826003811115611d6b57611d6a6136b9565b5b03611daf57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611da6919061294a565b60405180910390fd5b600380811115611dc257611dc16136b9565b5b826003811115611dd557611dd46136b9565b5b03611e1757806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611e0e9190612b63565b60405180910390fd5b5b5050565b5f611e487f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611fa1565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e7882611faa565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115611ed457611ece8282612073565b50611edd565b611edc6120f3565b5b5050565b611ee961212f565b611f1f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f5f5f606067ffffffffffffffff811115611f4057611f3f612732565b5b6040519080825280601f01601f191660200182016040528015611f725781602001600182028036833780820191505090505b5090506060604d60208301873c80806020019051810190611f939190613721565b935093509350509193909250565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361200557806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401611ffc919061254c565b60405180910390fd5b806120317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611fa1565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff168460405161209c91906137a1565b5f60405180830381855af49150503d805f81146120d4576040519150601f19603f3d011682016040523d82523d5f602084013e6120d9565b606091505b50915091506120e985838361214d565b9250505092915050565b5f34111561212d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f61213861191a565b5f0160089054906101000a900460ff16905090565b6060826121625761215d826121da565b6121d2565b5f825114801561218857505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156121ca57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016121c1919061254c565b60405180910390fd5b8190506121d3565b5b9392505050565b5f815111156121ec5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122588261222f565b9050919050565b6122688161224e565b8114612272575f5ffd5b50565b5f813590506122838161225f565b92915050565b5f819050919050565b61229b81612289565b81146122a5575f5ffd5b50565b5f813590506122b681612292565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126122dd576122dc6122bc565b5b8235905067ffffffffffffffff8111156122fa576122f96122c0565b5b602083019150836001820283011115612316576123156122c4565b5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561233957612338612227565b5b5f6123468b828c01612275565b98505060206123578b828c01612275565b97505060406123688b828c01612275565b96505060606123798b828c016122a8565b955050608089013567ffffffffffffffff81111561239a5761239961222b565b5b6123a68b828c016122c8565b945094505060a089013567ffffffffffffffff8111156123c9576123c861222b565b5b6123d58b828c016122c8565b92509250509295985092959890939650565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61241b816123e7565b8114612425575f5ffd5b50565b5f8135905061243681612412565b92915050565b5f6020828403121561245157612450612227565b5b5f61245e84828501612428565b91505092915050565b5f8115159050919050565b61247b81612467565b82525050565b5f6020820190506124945f830184612472565b92915050565b5f5f5f5f5f5f608087890312156124b4576124b3612227565b5b5f6124c189828a01612275565b965050602087013567ffffffffffffffff8111156124e2576124e161222b565b5b6124ee89828a016122c8565b9550955050604087013567ffffffffffffffff8111156125115761251061222b565b5b61251d89828a016122c8565b9350935050606061253089828a01612275565b9150509295509295509295565b6125468161224e565b82525050565b5f60208201905061255f5f83018461253d565b92915050565b5f5ffd5b5f6080828403121561257e5761257d612565565b5b81905092915050565b5f5f5f5f5f5f5f610100888a0312156125a3576125a2612227565b5b5f6125b08a828b01612275565b975050602088013567ffffffffffffffff8111156125d1576125d061222b565b5b6125dd8a828b016122c8565b9650965050604088013567ffffffffffffffff811115612600576125ff61222b565b5b61260c8a828b016122c8565b9450945050606061261f8a828b01612275565b92505060806126308a828b01612569565b91505092959891949750929550565b5f5f5f5f5f6080868803121561265857612657612227565b5b5f61266588828901612275565b955050602061267688828901612275565b9450506040612687888289016122a8565b935050606086013567ffffffffffffffff8111156126a8576126a761222b565b5b6126b4888289016122c8565b92509250509295509295909350565b6126cc816123e7565b82525050565b5f6020820190506126e55f8301846126c3565b92915050565b5f819050919050565b6126fd816126eb565b8114612707575f5ffd5b50565b5f81359050612718816126f4565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61276882612722565b810181811067ffffffffffffffff8211171561278757612786612732565b5b80604052505050565b5f61279961221e565b90506127a5828261275f565b919050565b5f67ffffffffffffffff8211156127c4576127c3612732565b5b6127cd82612722565b9050602081019050919050565b828183375f83830152505050565b5f6127fa6127f5846127aa565b612790565b9050828152602081018484840111156128165761281561271e565b5b6128218482856127da565b509392505050565b5f82601f83011261283d5761283c6122bc565b5b813561284d8482602086016127e8565b91505092915050565b5f5f6040838503121561286c5761286b612227565b5b5f6128798582860161270a565b925050602083013567ffffffffffffffff81111561289a5761289961222b565b5b6128a685828601612829565b9150509250929050565b5f61012082840312156128c6576128c5612565565b5b81905092915050565b5f5f5f606084860312156128e6576128e5612227565b5b5f84013567ffffffffffffffff8111156129035761290261222b565b5b61290f868287016128b0565b93505060206129208682870161270a565b9250506040612931868287016122a8565b9150509250925092565b61294481612289565b82525050565b5f60208201905061295d5f83018461293b565b92915050565b5f5f6040838503121561297957612978612227565b5b5f61298685828601612275565b925050602083013567ffffffffffffffff8111156129a7576129a661222b565b5b6129b385828601612829565b9150509250929050565b5f60ff82169050919050565b6129d2816129bd565b81146129dc575f5ffd5b50565b5f813590506129ed816129c9565b92915050565b5f5f5f5f5f60808688031215612a0c57612a0b612227565b5b5f612a1988828901612275565b9550506020612a2a888289016122a8565b945050604086013567ffffffffffffffff811115612a4b57612a4a61222b565b5b612a57888289016122c8565b93509350506060612a6a888289016129df565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612aa982612a77565b612ab38185612a81565b9350612ac3818560208601612a91565b612acc81612722565b840191505092915050565b5f6020820190508181035f830152612aef8184612a9f565b905092915050565b5f5f5f60408486031215612b0e57612b0d612227565b5b5f612b1b86828701612275565b935050602084013567ffffffffffffffff811115612b3c57612b3b61222b565b5b612b48868287016122c8565b92509250509250925092565b612b5d816126eb565b82525050565b5f602082019050612b765f830184612b54565b92915050565b5f5f5f5f5f5f5f60a0888a031215612b9757612b96612227565b5b5f612ba48a828b01612275565b975050602088013567ffffffffffffffff811115612bc557612bc461222b565b5b612bd18a828b016122c8565b9650965050604088013567ffffffffffffffff811115612bf457612bf361222b565b5b612c008a828b016122c8565b94509450506060612c138a828b01612275565b9250506080612c248a828b01612275565b91505092959891949750929550565b5f60208284031215612c4857612c47612227565b5b5f612c5584828501612275565b91505092915050565b5f819050919050565b5f612c81612c7c612c778461222f565b612c5e565b61222f565b9050919050565b5f612c9282612c67565b9050919050565b5f612ca382612c88565b9050919050565b612cb381612c99565b82525050565b5f602082019050612ccc5f830184612caa565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f612cf682612cd2565b612d008185612cdc565b9350612d10818560208601612a91565b612d1981612722565b840191505092915050565b5f6020820190508181035f830152612d3c8184612cec565b905092915050565b5f612d4e82612c88565b9050919050565b612d5e81612d44565b82525050565b5f602082019050612d775f830184612d55565b92915050565b5f5f83601f840112612d9257612d916122bc565b5b8235905067ffffffffffffffff811115612daf57612dae6122c0565b5b602083019150836020820283011115612dcb57612dca6122c4565b5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215612dee57612ded612227565b5b5f612dfb8b828c01612275565b9850506020612e0c8b828c01612275565b975050604089013567ffffffffffffffff811115612e2d57612e2c61222b565b5b612e398b828c01612d7d565b9650965050606089013567ffffffffffffffff811115612e5c57612e5b61222b565b5b612e688b828c01612d7d565b9450945050608089013567ffffffffffffffff811115612e8b57612e8a61222b565b5b612e978b828c016122c8565b92509250509295985092959890939650565b5f5f5f5f5f5f60a08789031215612ec357612ec2612227565b5b5f612ed089828a01612275565b9650506020612ee189828a016122a8565b955050604087013567ffffffffffffffff811115612f0257612f0161222b565b5b612f0e89828a016122c8565b94509450506060612f2189828a016129df565b9250506080612f3289828a016122a8565b9150509295509295509295565b5f5f5f5f5f5f60a08789031215612f5957612f58612227565b5b5f612f6689828a01612275565b9650506020612f7789828a01612275565b9550506040612f8889828a016122a8565b9450506060612f9989828a016122a8565b935050608087013567ffffffffffffffff811115612fba57612fb961222b565b5b612fc689828a016122c8565b92509250509295509295509295565b5f606082019050612fe85f83018661293b565b612ff5602083018561253d565b613002604083018461293b565b949350505050565b5f6020828403121561301f5761301e612227565b5b5f61302c848285016129df565b91505092915050565b5f6040820190506130485f83018561253d565b613055602083018461253d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61309382612289565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130c5576130c461305c565b5b600182019050919050565b5f6040820190506130e35f830185612b54565b81810360208301526130f58184612a9f565b90509392505050565b5f8151905061310c81612412565b92915050565b5f6020828403121561312757613126612227565b5b5f613134848285016130fe565b91505092915050565b5f8160601b9050919050565b5f6131538261313d565b9050919050565b5f61316482613149565b9050919050565b61317c6131778261224e565b61315a565b82525050565b5f819050919050565b61319c61319782612289565b613182565b82525050565b5f81905092915050565b5f6131b783856131a2565b93506131c48385846127da565b82840190509392505050565b5f6131db828c61316b565b6014820191506131eb828b61316b565b6014820191506131fb828a61318b565b60208201915061320c82888a6131ac565b91506132198286886131ac565b9150613225828561316b565b601482019150613235828461316b565b6014820191508190509a9950505050505050505050565b5f8151905061325a8161225f565b92915050565b5f6020828403121561327557613274612227565b5b5f6132828482850161324c565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6132c16132bc6132b78461328b565b612c5e565b613294565b9050919050565b6132d1816132a7565b82525050565b5f6020820190506132ea5f8301846132c8565b92915050565b5f819050919050565b5f77ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61333661333161332c846132f0565b612c5e565b6132f9565b9050919050565b6133468161331c565b82525050565b5f60408201905061335f5f83018561253d565b61336c602083018461333d565b9392505050565b5f8151905061338181612292565b92915050565b5f6020828403121561339c5761339b612227565b5b5f6133a984828501613373565b91505092915050565b5f6133bd8385612a81565b93506133ca8385846127da565b6133d383612722565b840190509392505050565b5f6080820190506133f15f83018961253d565b81810360208301526134048187896133b2565b905081810360408301526134198185876133b2565b9050613428606083018461253d565b979650505050505050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000005f82015250565b5f613467601c83612cdc565b915061347282613433565b602082019050919050565b5f6020820190508181035f8301526134948161345b565b9050919050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f833560016020038436030381126134c3576134c261349b565b5b80840192508235915067ffffffffffffffff8211156134e5576134e461349f565b5b602083019250600182023603831315613501576135006134a3565b5b509250929050565b7f496e76616c6964206e6f6e6365000000000000000000000000000000000000005f82015250565b5f61353d600d83612cdc565b915061354882613509565b602082019050919050565b5f6020820190508181035f83015261356a81613531565b9050919050565b50565b5f61357f5f836131a2565b915061358a82613571565b5f82019050919050565b5f61359e82613574565b9150819050919050565b5f815190506135b6816126f4565b92915050565b5f602082840312156135d1576135d0612227565b5b5f6135de848285016135a8565b91505092915050565b5f6135f38284866131ac565b91508190509392505050565b7f496e76616c6964206f7065726174696f6e0000000000000000000000000000005f82015250565b5f613633601183612cdc565b915061363e826135ff565b602082019050919050565b5f6020820190508181035f83015261366081613627565b9050919050565b613670816129bd565b82525050565b5f6080820190506136895f830187612b54565b6136966020830186613667565b6136a36040830185612b54565b6136b06060830184612b54565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6136f08261222f565b9050919050565b613700816136e6565b811461370a575f5ffd5b50565b5f8151905061371b816136f7565b92915050565b5f5f5f6060848603121561373857613737612227565b5b5f61374586828701613373565b93505060206137568682870161370d565b925050604061376786828701613373565b9150509250925092565b5f61377b82612a77565b61378581856131a2565b9350613795818560208601612a91565b80840191505092915050565b5f6137ac8284613771565b91508190509291505056fea2646970667358221220453e7fd118456a40a19c236f2510e0c678fe5c5af89632bd4eeffbe55a55bdd864736f6c634300081b0033000000000000000000000000000000000033e5ccbc52ec7bda87db768f9aa93f \ No newline at end of file diff --git a/src/chain/bytecode/erc1967proxy.txt b/src/chain/bytecode/erc1967proxy.txt new file mode 100644 index 00000000..e99b743f --- /dev/null +++ b/src/chain/bytecode/erc1967proxy.txt @@ -0,0 +1 @@ +0x6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f5f375f5f365f845af43d5f5f3e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea2646970667358221220007164f6221bb880865e4c02f3e712035e61170dee11d10e7bc3f3b8047b844c64736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/erc6551_registry.txt b/src/chain/bytecode/erc6551_registry.txt new file mode 100644 index 00000000..895e75dc --- /dev/null +++ b/src/chain/bytecode/erc6551_registry.txt @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033 \ No newline at end of file diff --git a/src/chain/bytecode/kimap.txt b/src/chain/bytecode/kimap.txt new file mode 100644 index 00000000..d3b36ae0 --- /dev/null +++ b/src/chain/bytecode/kimap.txt @@ -0,0 +1 @@ +0x6080604052600436106101ed575f3560e01c80636352211e1161010c578063a22cb4651161009f578063c87b56dd1161006e578063c87b56dd14610757578063d547741f14610793578063e852398b146107bb578063e985e9c5146107f7578063edc1608414610833576101ed565b8063a22cb465146106b5578063ad3cb1cc146106dd578063b88d4fde14610707578063c4d66de81461072f576101ed565b80638eaa6ac0116100db5780638eaa6ac0146105e757806391d148541461062557806395d89b4114610661578063a217fddf1461068b576101ed565b80636352211e1461050b57806370a082311461054757806374e08829146105835780637788b5a8146105ab576101ed565b806323b872dd1161018457806336568abe1161015357806336568abe1461047557806342842e0e1461049d5780634f1ef286146104c557806352d1902d146104e1576101ed565b806323b872dd146103ad578063248a9ca3146103d557806327244d1e146104115780632f2ff15d1461044d576101ed565b8063095ea7b3116101c0578063095ea7b3146102cf5780630ae186a8146102f7578063150b7a02146103355780632124b69214610371576101ed565b806301ffc9a7146101f157806306fdde031461022d578063081812fc14610257578063094cefed14610293575b5f5ffd5b3480156101fc575f5ffd5b5061021760048036038101906102129190613bff565b61085d565b6040516102249190613c44565b60405180910390f35b348015610238575f5ffd5b5061024161086e565b60405161024e9190613ccd565b60405180910390f35b348015610262575f5ffd5b5061027d60048036038101906102789190613d20565b61090b565b60405161028a9190613d8a565b60405180910390f35b34801561029e575f5ffd5b506102b960048036038101906102b49190613e2e565b610926565b6040516102c69190613d8a565b60405180910390f35b3480156102da575f5ffd5b506102f560048036038101906102f09190613ed1565b610ae4565b005b348015610302575f5ffd5b5061031d60048036038101906103189190613f42565b610afa565b60405161032c93929190613fbf565b60405180910390f35b348015610340575f5ffd5b5061035b60048036038101906103569190614123565b610be3565b60405161036891906141b2565b60405180910390f35b34801561037c575f5ffd5b50610397600480360381019061039291906141cb565b610bf6565b6040516103a49190614237565b60405180910390f35b3480156103b8575f5ffd5b506103d360048036038101906103ce9190614250565b610c26565b005b3480156103e0575f5ffd5b506103fb60048036038101906103f69190613f42565b610d25565b6040516104089190614237565b60405180910390f35b34801561041c575f5ffd5b5061043760048036038101906104329190613f42565b610d4f565b6040516104449190613d8a565b60405180910390f35b348015610458575f5ffd5b50610473600480360381019061046e91906142a0565b610d89565b005b348015610480575f5ffd5b5061049b600480360381019061049691906142a0565b610dab565b005b3480156104a8575f5ffd5b506104c360048036038101906104be9190614250565b610e26565b005b6104df60048036038101906104da91906142de565b610e45565b005b3480156104ec575f5ffd5b506104f5610e64565b6040516105029190614237565b60405180910390f35b348015610516575f5ffd5b50610531600480360381019061052c9190613d20565b610e95565b60405161053e9190613d8a565b60405180910390f35b348015610552575f5ffd5b5061056d60048036038101906105689190614338565b610ea6565b60405161057a9190614372565b60405180910390f35b34801561058e575f5ffd5b506105a960048036038101906105a49190614338565b610f6a565b005b3480156105b6575f5ffd5b506105d160048036038101906105cc919061438b565b6110a5565b6040516105de9190614237565b60405180910390f35b3480156105f2575f5ffd5b5061060d60048036038101906106089190613f42565b61120d565b60405161061c93929190613fbf565b60405180910390f35b348015610630575f5ffd5b5061064b600480360381019061064691906142a0565b6113d4565b6040516106589190613c44565b60405180910390f35b34801561066c575f5ffd5b50610675611445565b6040516106829190613ccd565b60405180910390f35b348015610696575f5ffd5b5061069f6114e3565b6040516106ac9190614237565b60405180910390f35b3480156106c0575f5ffd5b506106db60048036038101906106d69190614433565b6114e9565b005b3480156106e8575f5ffd5b506106f16114ff565b6040516106fe9190613ccd565b60405180910390f35b348015610712575f5ffd5b5061072d60048036038101906107289190614123565b611538565b005b34801561073a575f5ffd5b5061075560048036038101906107509190614338565b61155d565b005b348015610762575f5ffd5b5061077d60048036038101906107789190613d20565b6117f9565b60405161078a9190613ccd565b60405180910390f35b34801561079e575f5ffd5b506107b960048036038101906107b491906142a0565b61185f565b005b3480156107c6575f5ffd5b506107e160048036038101906107dc919061438b565b611881565b6040516107ee9190614237565b60405180910390f35b348015610802575f5ffd5b5061081d60048036038101906108189190614471565b611a7d565b60405161082a9190613c44565b60405180910390f35b34801561083e575f5ffd5b50610847611b19565b604051610854919061450a565b60405180910390f35b5f61086782611b2d565b9050919050565b60605f610879611c0e565b9050805f01805461088990614550565b80601f01602080910402602001604051908101604052809291908181526020018280546108b590614550565b80156109005780601f106108d757610100808354040283529160200191610900565b820191905f5260205f20905b8154815290600101906020018083116108e357829003601f168201915b505050505091505090565b5f61091582611c35565b5061091f82611cbb565b9050919050565b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610975815f611d02565b5f61097e611ee1565b90505f61098c828a8a610bf6565b90505f5f90505f73ffffffffffffffffffffffffffffffffffffffff165f5f8581526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31575f5f8481526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600190505b8989604051610a419291906145ae565b604051809103902082847fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18d8d604051610a7c9291906145f2565b60405180910390a4610ad48b8388848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050611f94565b9450505050509695505050505050565b610af68282610af1612342565b612349565b5050565b5f602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002018054610b6290614550565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8e90614550565b8015610bd95780601f10610bb057610100808354040283529160200191610bd9565b820191905f5260205f20905b815481529060010190602001808311610bbc57829003601f168201915b5050505050905083565b5f63150b7a0260e01b9050949350505050565b5f604051602083018101604052828482378281206040518681528160208201526040812093505050509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c96575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610c8d9190613d8a565b60405180910390fd5b5f610ca98383610ca4612342565b61235b565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1f578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610d1693929190614614565b60405180910390fd5b50505050565b5f5f610d2f612578565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f5f5f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610d9282610d25565b610d9b8161259f565b610da583836125b3565b50505050565b610db3612342565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e2182826126ab565b505050565b610e4083838360405180602001604052805f815250611538565b505050565b610e4d6127a3565b610e5682612889565b610e608282612899565b5050565b5f610e6d6129b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f610e9f82611c35565b9050919050565b5f5f610eb0611c0e565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f22575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610f199190613d8a565b60405180910390fd5b806003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b5f610f73611ee1565b90505f73ffffffffffffffffffffffffffffffffffffffff165f5f8381526020019081526020015f206001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100c576040517ff3dda33300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f8381526020019081526020015f206001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16817fde0ec2494e561683ac09b109d8c4c4a08b4ddbd4fcd23b609fe107e63176ef5a60405160405180910390a35050565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050607e60f81b815f8151811061110257611101614649565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611166576040517fa3b9ac9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611171816001611d02565b5f61117a611ee1565b9050611187818888610bf6565b925084845f5f8681526020019081526020015f2060020191826111ab929190614817565b5086866040516111bc9291906145ae565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a6040516111fb94939291906148e4565b60405180910390a45050949350505050565b5f5f60605f5f5f8681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546112e690614550565b80601f016020809104026020016040519081016040528092919081815260200182805461131290614550565b801561135d5780601f106113345761010080835404028352916020019161135d565b820191905f5260205f20905b81548152906001019060200180831161134057829003601f168201915b50505050508152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036113b1575f5f8260400151935093509350506113cd565b805f01516113c0865f1c610e95565b8260400151935093509350505b9193909250565b5f5f6113de612578565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b60605f611450611c0e565b905080600101805461146190614550565b80601f016020809104026020016040519081016040528092919081815260200182805461148d90614550565b80156114d85780601f106114af576101008083540402835291602001916114d8565b820191905f5260205f20905b8154815290600101906020018083116114bb57829003601f168201915b505050505091505090565b5f5f1b81565b6114fb6114f4612342565b8383612a3e565b5050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b611543848484610c26565b61155761154e612342565b85858585612bb5565b50505050565b5f611566612d61565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156115ae5750825b90505f60018367ffffffffffffffff161480156115e157505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115ef575080155b15611626576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315611673576001855f0160086101000a81548160ff0219169083151502179055505b6116e76040518060400160405280600581526020017f4b696d61700000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4b494d4150000000000000000000000000000000000000000000000000000000815250612d88565b6116ef612d9e565b5f6040516116fc90613b7f565b604051809103905ff080158015611715573d5f5f3e3d5ffd5b5090505f611736885f5f1b845f60405180602001604052805f815250611f94565b90506117445f5f1b336126ab565b506117515f5f1b896125b3565b508073ffffffffffffffffffffffffffffffffffffffff167fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c060405160405180910390a2505083156117f1575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516117e89190614969565b60405180910390a15b505050505050565b606061180482611c35565b505f61180e612da8565b90505f81511161182c5760405180602001604052805f815250611857565b8061183684612dbe565b6040516020016118479291906149bc565b6040516020818303038152906040525b915050919050565b61186882610d25565b6118718161259f565b61187b83836126ab565b50505050565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050602160f81b815f815181106118de576118dd614649565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611942576040517f6ae27d4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61194d816001611d02565b5f611956611ee1565b9050611963818888610bf6565b92505f5f5f8581526020019081526020015f20600201805461198490614550565b9050146119bd576040517fa542ed9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85859050036119f9576040517f01b3720500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84845f5f8681526020019081526020015f206002019182611a1b929190614817565b508686604051611a2c9291906145ae565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051611a6b94939291906148e4565b60405180910390a45050949350505050565b5f5f611a87611c0e565b9050806005015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b6f6551c19487814612e58fe0681377575881565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bf757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c075750611c0682612e88565b5b9050919050565b5f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b5f5f611c4083612f01565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb257826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611ca99190614372565b60405180910390fd5b80915050919050565b5f5f611cc5611c0e565b9050806004015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f82519050818103611d40576040517f280dacb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408110611d7a576040517f7d45f78600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8290505b81811015611edb575f848281518110611d9b57611d9a614649565b5b602001015160f81c60f81b9050603060f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610158015611e045750603960f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b80611e675750606160f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191610158015611e665750607a60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b5b80611e975750602d60f81b817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611ecd576040517fe87f7f4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508080600101915050611d7f565b50505050565b5f5f611eec33612f48565b925050505f815f1b90503373ffffffffffffffffffffffffffffffffffffffff165f5f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f8c576040517f3813fcca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809250505090565b5f5f73ffffffffffffffffffffffffffffffffffffffff165f5f8781526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202b576040517fd202940c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6f6551c19487814612e58fe0681377575873ffffffffffffffffffffffffffffffffffffffff16638a54c52f863060405161206590613b8c565b61206f9190613d8a565b8190604051809103905ff590508015801561208c573d5f5f3e3d5ffd5b508746308a5f1c6040518663ffffffff1660e01b81526004016120b39594939291906149df565b6020604051808303815f875af11580156120cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f39190614a44565b905060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff16815260200184612127575f612129565b855b73ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052805f8152508152505f5f8781526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816122059190614a6f565b5090505061221530865f1c612fc8565b5f8173ffffffffffffffffffffffffffffffffffffffff1663d1f5789460e01b8685604051602401612248929190614b3e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516122b29190614b9c565b5f604051808303815f865af19150503d805f81146122eb576040519150601f19603f3d011682016040523d82523d5f602084013e6122f0565b606091505b505090508061232b576040517f5a714b1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123383088885f1c6130bb565b5095945050505050565b5f33905090565b61235683838360016130da565b505050565b5f5f612365611c0e565b90505f61237185612f01565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146123b2576123b18185876132a7565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461243f576123f15f865f5f6130da565b6001826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146124c0576001826003015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b85826002015f8781526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6125b0816125ab612342565b61336a565b50565b5f5f6125bd612578565b90506125c984846113d4565b6126a0576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061263c612342565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506126a5565b5f9150505b92915050565b5f5f6126b5612578565b90506126c184846113d4565b15612798575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550612734612342565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600191505061279d565b5f9150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061285057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166128376133bb565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612887576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f1b6128958161259f565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561290157506040513d601f19601f820116820180604052508101906128fe9190614bc6565b60015b61294257816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016129399190613d8a565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b81146129a857806040517faa1d49a400000000000000000000000000000000000000000000000000000000815260040161299f9190614237565b60405180910390fd5b6129b2838361340e565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614612a3c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f612a47611c0e565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ab957826040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401612ab09190613d8a565b60405180910390fd5b81816005015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051612ba79190613c44565b60405180910390a350505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115612d5a578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612c139493929190614bf1565b6020604051808303815f875af1925050508015612c4e57506040513d601f19601f82011682018060405250810190612c4b9190614c4f565b60015b612ccf573d805f8114612c7c576040519150601f19603f3d011682016040523d82523d5f602084013e612c81565b606091505b505f815103612cc757836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612cbe9190613d8a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612d5857836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612d4f9190613d8a565b60405180910390fd5b505b5050505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b612d90613480565b612d9a82826134c0565b5050565b612da6613480565b565b606060405180602001604052805f815250905090565b60605f6001612dcc846134fb565b0190505f8167ffffffffffffffff811115612dea57612de9613fff565b5b6040519080825280601f01601f191660200182016040528015612e1c5781602001600182028036833780820191505090505b5090505f82602001820190505b600115612e7d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612e7257612e71614c7a565b5b0494505f8503612e29575b819350505050919050565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612efa5750612ef98261364c565b5b9050919050565b5f5f612f0b611c0e565b9050806002015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f5f5f5f606067ffffffffffffffff811115612f6757612f66613fff565b5b6040519080825280601f01601f191660200182016040528015612f995781602001600182028036833780820191505090505b5090506060604d60208301873c80806020019051810190612fba9190614cf6565b935093509350509193909250565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613038575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161302f9190613d8a565b60405180910390fd5b5f61304483835f61235b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146130b6575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016130ad9190613d8a565b60405180910390fd5b505050565b6130d583838360405180602001604052805f8152506136b5565b505050565b5f6130e3611c0e565b9050818061311d57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561324f575f61312c85611c35565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561319657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156131a957506131a78185611a7d565b155b156131eb57836040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016131e29190613d8a565b60405180910390fd5b821561324d57848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b84816004015f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6132b28383836136da565b613365575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361332657806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161331d9190614372565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161335c929190614d46565b60405180910390fd5b505050565b61337482826113d4565b6133b75780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016133ae929190614d6d565b60405180910390fd5b5050565b5f6133e77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61379a565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b613417826137a3565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156134735761346d828261386c565b5061347c565b61347b6138ec565b5b5050565b613488613928565b6134be576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6134c8613480565b5f6134d1611c0e565b905082815f0190816134e39190614dec565b50818160010190816134f59190614dec565b50505050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613557577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161354d5761354c614c7a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613594576d04ee2d6d415b85acef8100000000838161358a57613589614c7a565b5b0492506020810190505b662386f26fc1000083106135c357662386f26fc1000083816135b9576135b8614c7a565b5b0492506010810190505b6305f5e10083106135ec576305f5e10083816135e2576135e1614c7a565b5b0492506008810190505b612710831061361157612710838161360757613606614c7a565b5b0492506004810190505b60648310613634576064838161362a57613629614c7a565b5b0492506002810190505b600a8310613643576001810190505b80915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6136c0848484613946565b6136d46136cb612342565b85858585612bb5565b50505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561379157508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061375257506137518484611a7d565b5b8061379057508273ffffffffffffffffffffffffffffffffffffffff1661377883611cbb565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036137fe57806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016137f59190613d8a565b60405180910390fd5b8061382a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61379a565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff16846040516138959190614b9c565b5f60405180830381855af49150503d805f81146138cd576040519150601f19603f3d011682016040523d82523d5f602084013e6138d2565b606091505b50915091506138e2858383613aae565b9250505092915050565b5f341115613926576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f613931612d61565b5f0160089054906101000a900460ff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139b6575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016139ad9190613d8a565b60405180910390fd5b5f6139c283835f61235b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3457816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613a2b9190614372565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613aa8578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401613a9f93929190614614565b60405180910390fd5b50505050565b606082613ac357613abe82613b3b565b613b33565b5f8251148015613ae957505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15613b2b57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613b229190613d8a565b60405180910390fd5b819050613b34565b5b9392505050565b5f81511115613b4d5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61237d80614ebc83390190565b6108f38061723983390190565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613bde81613baa565b8114613be8575f5ffd5b50565b5f81359050613bf981613bd5565b92915050565b5f60208284031215613c1457613c13613ba2565b5b5f613c2184828501613beb565b91505092915050565b5f8115159050919050565b613c3e81613c2a565b82525050565b5f602082019050613c575f830184613c35565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613c9f82613c5d565b613ca98185613c67565b9350613cb9818560208601613c77565b613cc281613c85565b840191505092915050565b5f6020820190508181035f830152613ce58184613c95565b905092915050565b5f819050919050565b613cff81613ced565b8114613d09575f5ffd5b50565b5f81359050613d1a81613cf6565b92915050565b5f60208284031215613d3557613d34613ba2565b5b5f613d4284828501613d0c565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d7482613d4b565b9050919050565b613d8481613d6a565b82525050565b5f602082019050613d9d5f830184613d7b565b92915050565b613dac81613d6a565b8114613db6575f5ffd5b50565b5f81359050613dc781613da3565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112613dee57613ded613dcd565b5b8235905067ffffffffffffffff811115613e0b57613e0a613dd1565b5b602083019150836001820283011115613e2757613e26613dd5565b5b9250929050565b5f5f5f5f5f5f60808789031215613e4857613e47613ba2565b5b5f613e5589828a01613db9565b965050602087013567ffffffffffffffff811115613e7657613e75613ba6565b5b613e8289828a01613dd9565b9550955050604087013567ffffffffffffffff811115613ea557613ea4613ba6565b5b613eb189828a01613dd9565b93509350506060613ec489828a01613db9565b9150509295509295509295565b5f5f60408385031215613ee757613ee6613ba2565b5b5f613ef485828601613db9565b9250506020613f0585828601613d0c565b9150509250929050565b5f819050919050565b613f2181613f0f565b8114613f2b575f5ffd5b50565b5f81359050613f3c81613f18565b92915050565b5f60208284031215613f5757613f56613ba2565b5b5f613f6484828501613f2e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f613f9182613f6d565b613f9b8185613f77565b9350613fab818560208601613c77565b613fb481613c85565b840191505092915050565b5f606082019050613fd25f830186613d7b565b613fdf6020830185613d7b565b8181036040830152613ff18184613f87565b9050949350505050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61403582613c85565b810181811067ffffffffffffffff8211171561405457614053613fff565b5b80604052505050565b5f614066613b99565b9050614072828261402c565b919050565b5f67ffffffffffffffff82111561409157614090613fff565b5b61409a82613c85565b9050602081019050919050565b828183375f83830152505050565b5f6140c76140c284614077565b61405d565b9050828152602081018484840111156140e3576140e2613ffb565b5b6140ee8482856140a7565b509392505050565b5f82601f83011261410a57614109613dcd565b5b813561411a8482602086016140b5565b91505092915050565b5f5f5f5f6080858703121561413b5761413a613ba2565b5b5f61414887828801613db9565b945050602061415987828801613db9565b935050604061416a87828801613d0c565b925050606085013567ffffffffffffffff81111561418b5761418a613ba6565b5b614197878288016140f6565b91505092959194509250565b6141ac81613baa565b82525050565b5f6020820190506141c55f8301846141a3565b92915050565b5f5f5f604084860312156141e2576141e1613ba2565b5b5f6141ef86828701613f2e565b935050602084013567ffffffffffffffff8111156142105761420f613ba6565b5b61421c86828701613dd9565b92509250509250925092565b61423181613f0f565b82525050565b5f60208201905061424a5f830184614228565b92915050565b5f5f5f6060848603121561426757614266613ba2565b5b5f61427486828701613db9565b935050602061428586828701613db9565b925050604061429686828701613d0c565b9150509250925092565b5f5f604083850312156142b6576142b5613ba2565b5b5f6142c385828601613f2e565b92505060206142d485828601613db9565b9150509250929050565b5f5f604083850312156142f4576142f3613ba2565b5b5f61430185828601613db9565b925050602083013567ffffffffffffffff81111561432257614321613ba6565b5b61432e858286016140f6565b9150509250929050565b5f6020828403121561434d5761434c613ba2565b5b5f61435a84828501613db9565b91505092915050565b61436c81613ced565b82525050565b5f6020820190506143855f830184614363565b92915050565b5f5f5f5f604085870312156143a3576143a2613ba2565b5b5f85013567ffffffffffffffff8111156143c0576143bf613ba6565b5b6143cc87828801613dd9565b9450945050602085013567ffffffffffffffff8111156143ef576143ee613ba6565b5b6143fb87828801613dd9565b925092505092959194509250565b61441281613c2a565b811461441c575f5ffd5b50565b5f8135905061442d81614409565b92915050565b5f5f6040838503121561444957614448613ba2565b5b5f61445685828601613db9565b92505060206144678582860161441f565b9150509250929050565b5f5f6040838503121561448757614486613ba2565b5b5f61449485828601613db9565b92505060206144a585828601613db9565b9150509250929050565b5f819050919050565b5f6144d26144cd6144c884613d4b565b6144af565b613d4b565b9050919050565b5f6144e3826144b8565b9050919050565b5f6144f4826144d9565b9050919050565b614504816144ea565b82525050565b5f60208201905061451d5f8301846144fb565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061456757607f821691505b60208210810361457a57614579614523565b5b50919050565b5f81905092915050565b5f6145958385614580565b93506145a28385846140a7565b82840190509392505050565b5f6145ba82848661458a565b91508190509392505050565b5f6145d18385613f77565b93506145de8385846140a7565b6145e783613c85565b840190509392505050565b5f6020820190508181035f83015261460b8184866145c6565b90509392505050565b5f6060820190506146275f830186613d7b565b6146346020830185614363565b6146416040830184613d7b565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026146dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826146a1565b6146e686836146a1565b95508019841693508086168417925050509392505050565b5f61471861471361470e84613ced565b6144af565b613ced565b9050919050565b5f819050919050565b614731836146fe565b61474561473d8261471f565b8484546146ad565b825550505050565b5f5f905090565b61475c61474d565b614767818484614728565b505050565b5b8181101561478a5761477f5f82614754565b60018101905061476d565b5050565b601f8211156147cf576147a081614680565b6147a984614692565b810160208510156147b8578190505b6147cc6147c485614692565b83018261476c565b50505b505050565b5f82821c905092915050565b5f6147ef5f19846008026147d4565b1980831691505092915050565b5f61480783836147e0565b9150826002028217905092915050565b6148218383614676565b67ffffffffffffffff81111561483a57614839613fff565b5b6148448254614550565b61484f82828561478e565b5f601f83116001811461487c575f841561486a578287013590505b61487485826147fc565b8655506148db565b601f19841661488a86614680565b5f5b828110156148b15784890135825560018201915060208501945060208101905061488c565b868310156148ce57848901356148ca601f8916826147e0565b8355505b6001600288020188555050505b50505050505050565b5f6040820190508181035f8301526148fd8186886145c6565b905081810360208301526149128184866145c6565b905095945050505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f61495361494e6149498461491d565b6144af565b614926565b9050919050565b61496381614939565b82525050565b5f60208201905061497c5f83018461495a565b92915050565b5f81905092915050565b5f61499682613c5d565b6149a08185614982565b93506149b0818560208601613c77565b80840191505092915050565b5f6149c7828561498c565b91506149d3828461498c565b91508190509392505050565b5f60a0820190506149f25f830188613d7b565b6149ff6020830187614228565b614a0c6040830186614363565b614a196060830185613d7b565b614a266080830184614363565b9695505050505050565b5f81519050614a3e81613da3565b92915050565b5f60208284031215614a5957614a58613ba2565b5b5f614a6684828501614a30565b91505092915050565b614a7882613f6d565b67ffffffffffffffff811115614a9157614a90613fff565b5b614a9b8254614550565b614aa682828561478e565b5f60209050601f831160018114614ad7575f8415614ac5578287015190505b614acf85826147fc565b865550614b36565b601f198416614ae586614680565b5f5b82811015614b0c57848901518255600182019150602085019450602081019050614ae7565b86831015614b295784890151614b25601f8916826147e0565b8355505b6001600288020188555050505b505050505050565b5f604082019050614b515f830185613d7b565b8181036020830152614b638184613f87565b90509392505050565b5f614b7682613f6d565b614b808185614580565b9350614b90818560208601613c77565b80840191505092915050565b5f614ba78284614b6c565b915081905092915050565b5f81519050614bc081613f18565b92915050565b5f60208284031215614bdb57614bda613ba2565b5b5f614be884828501614bb2565b91505092915050565b5f608082019050614c045f830187613d7b565b614c116020830186613d7b565b614c1e6040830185614363565b8181036060830152614c308184613f87565b905095945050505050565b5f81519050614c4981613bd5565b92915050565b5f60208284031215614c6457614c63613ba2565b5b5f614c7184828501614c3b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f81519050614cb581613cf6565b92915050565b5f614cc582613d4b565b9050919050565b614cd581614cbb565b8114614cdf575f5ffd5b50565b5f81519050614cf081614ccc565b92915050565b5f5f5f60608486031215614d0d57614d0c613ba2565b5b5f614d1a86828701614ca7565b9350506020614d2b86828701614ce2565b9250506040614d3c86828701614ca7565b9150509250925092565b5f604082019050614d595f830185613d7b565b614d666020830184614363565b9392505050565b5f604082019050614d805f830185613d7b565b614d8d6020830184614228565b9392505050565b5f819050815f5260205f209050919050565b601f821115614de757614db881614d94565b614dc184614692565b81016020851015614dd0578190505b614de4614ddc85614692565b83018261476c565b50505b505050565b614df582613c5d565b67ffffffffffffffff811115614e0e57614e0d613fff565b5b614e188254614550565b614e23828285614da6565b5f60209050601f831160018114614e54575f8415614e42578287015190505b614e4c85826147fc565b865550614eb3565b601f198416614e6286614d94565b5f5b82811015614e8957848901518255600182019150602085019450602081019050614e64565b86831015614ea65784890151614ea2601f8916826147e0565b8355505b6001600288020188555050505b50505050505056fe6080604052348015600e575f5ffd5b506123618061001c5f395ff3fe6080604052600436106100ea575f3560e01c80636d70f7ae11610089578063ca3b98bb11610058578063ca3b98bb14610345578063d087d28814610375578063f23a6e611461039f578063fc0c546a146103db576100f1565b80636d70f7ae14610279578063b0d691fe146102b5578063bc197c81146102df578063c19d93fb1461031b576100f1565b80631626ba7e116100c55780631626ba7e1461019557806319822f7c146101d1578063519454471461020d578063523e32601461023d576100f1565b806223de29146100f557806301ffc9a71461011d578063150b7a0214610159576100f1565b366100f157005b5f5ffd5b348015610100575f5ffd5b5061011b600480360381019061011691906114e1565b610407565b005b348015610128575f5ffd5b50610143600480360381019061013e9190611600565b610411565b6040516101509190611645565b60405180910390f35b348015610164575f5ffd5b5061017f600480360381019061017a919061165e565b61048a565b60405161018c91906116f1565b60405180910390f35b3480156101a0575f5ffd5b506101bb60048036038101906101b69190611875565b610520565b6040516101c891906116f1565b60405180910390f35b3480156101dc575f5ffd5b506101f760048036038101906101f291906118f2565b610673565b604051610204919061196d565b60405180910390f35b610227600480360381019061022291906119bc565b6106a5565b6040516102349190611aa0565b60405180910390f35b348015610248575f5ffd5b50610263600480360381019061025e9190611ac0565b610755565b60405161027091906116f1565b60405180910390f35b348015610284575f5ffd5b5061029f600480360381019061029a9190611b1d565b61077e565b6040516102ac9190611645565b60405180910390f35b3480156102c0575f5ffd5b506102c9610875565b6040516102d69190611ba3565b60405180910390f35b3480156102ea575f5ffd5b5061030560048036038101906103009190611c11565b610890565b60405161031291906116f1565b60405180910390f35b348015610326575f5ffd5b5061032f6108a7565b60405161033c919061196d565b60405180910390f35b61035f600480360381019061035a9190611ce8565b61092e565b60405161036c9190611aa0565b60405180910390f35b348015610380575f5ffd5b506103896109ed565b604051610396919061196d565b60405180910390f35b3480156103aa575f5ffd5b506103c560048036038101906103c09190611d7e565b610a74565b6040516103d291906116f1565b60405180910390f35b3480156103e6575f5ffd5b506103ef610a89565b6040516103fe93929190611e23565b60405180910390f35b5050505050505050565b5f61041b82610a9f565b8061048357507f6faff5f1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f5f5f610495610a89565b92509250508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156104d457508086145b1561050b576040517fb79e3f3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63150b7a0260e01b9250505095945050505050565b5f5f5f5f61052d85610d10565b8094508195508293505050505f8160ff1603610634575f835f1c90506060602084880101905061055c8261077e565b15801561059557503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156105ae5763ffffffff60e01b9550505050505061066d565b8173ffffffffffffffffffffffffffffffffffffffff16631626ba7e89836040518363ffffffff1660e01b81526004016105e9929190611e67565b602060405180830381865afa158015610604573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106289190611ea9565b9550505050505061066d565b61064861064387838686610d31565b61077e565b1561065f57631626ba7e60e01b935050505061066d565b63ffffffff60e01b93505050505b92915050565b5f61067c610d5f565b6106868484610dd6565b90506106958460200135610e9f565b61069e82610eee565b9392505050565b60606106b03361077e565b1580156106f057506106c0610875565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610727576040517f8f0052a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61073687878787875a610f85565b80935081925050508061074b57815160208301fd5b5095945050505050565b5f61075f8461077e565b61076c575f60e01b610775565b63523e326060e01b5b90509392505050565b5f5f5f610789610a89565b92509250508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016107de919061196d565b602060405180830381865afa1580156107f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081d9190611ee8565b73ffffffffffffffffffffffffffffffffffffffff1614801561086c57505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b92505050919050565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789905090565b5f63bc197c8160e01b905098975050505050505050565b5f6108b0610875565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a305f6040518363ffffffff1660e01b81526004016108ea929190611f6f565b602060405180830381865afa158015610905573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109299190611faa565b905090565b60606109393361077e565b1580156109795750610949610875565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156109b0576040517f8f0052a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109cd88888888885f89146109c657886109c8565b5a5b610f85565b8093508192505050806109e257815160208301fd5b509695505050505050565b5f6109f6610875565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a305f6040518363ffffffff1660e01b8152600401610a30929190611f6f565b602060405180830381865afa158015610a4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6f9190611faa565b905090565b5f63f23a6e6160e01b90509695505050505050565b5f5f5f610a946110cf565b925092509250909192565b5f7f3ce4a3e9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b6957507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bd157507f19822f7c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c3957507f1626ba7e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ca157507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610d0957507f51945447000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f5f5f602084015191506040840151905060608401515f1a92509193909250565b5f5f5f5f610d41888888886110e6565b925092509250610d5182826111cd565b829350505050949350505050565b610d67610875565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb9061202f565b60405180910390fd5b565b5f5f610de18361132f565b9050631626ba7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610e668286806101000190610e1f9190612059565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050610520565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e94576001915050610e99565b5f9150505b92915050565b67ffffffffffffffff80168110610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee290612105565b60405180910390fd5b50565b5f8114610f82575f3373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90604051610f3c90612150565b5f60405180830381858888f193505050503d805f8114610f77576040519150601f19603f3d011682016040523d82523d5f602084013e610f7c565b606091505b50509050505b50565b5f60605f8460ff1603611009578773ffffffffffffffffffffffffffffffffffffffff1683888888604051610fbb929190612188565b5f60405180830381858888f193505050503d805f8114610ff6576040519150601f19603f3d011682016040523d82523d5f602084013e610ffb565b606091505b5080925081935050506110c4565b60018460ff1603611088578773ffffffffffffffffffffffffffffffffffffffff1683878760405161103c929190612188565b5f604051808303818686f4925050503d805f8114611075576040519150601f19603f3d011682016040523d82523d5f602084013e61107a565b606091505b5080925081935050506110c3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba906121ea565b60405180910390fd5b5b965096945050505050565b5f5f5f6110db30611362565b925092509250909192565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611122575f6003859250925092506111c3565b5f6001888888886040515f81526020016040526040516111459493929190612217565b6020604051602081039080840390855afa158015611165573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111b6575f60015f5f1b935093509350506111c3565b805f5f5f1b935093509350505b9450945094915050565b5f60038111156111e0576111df61225a565b5b8260038111156111f3576111f261225a565b5b031561132b576001600381111561120d5761120c61225a565b5b8260038111156112205761121f61225a565b5b03611257576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561126b5761126a61225a565b5b82600381111561127e5761127d61225a565b5b036112c257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112b9919061196d565b60405180910390fd5b6003808111156112d5576112d461225a565b5b8260038111156112e8576112e761225a565b5b0361132a57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016113219190612287565b60405180910390fd5b5b5050565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f606067ffffffffffffffff81111561138157611380611751565b5b6040519080825280601f01601f1916602001820160405280156113b35781602001600182028036833780820191505090505b5090506060604d60208301873c808060200190518101906113d491906122db565b935093509350509193909250565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61141c826113f3565b9050919050565b61142c81611412565b8114611436575f5ffd5b50565b5f8135905061144781611423565b92915050565b5f819050919050565b61145f8161144d565b8114611469575f5ffd5b50565b5f8135905061147a81611456565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126114a1576114a0611480565b5b8235905067ffffffffffffffff8111156114be576114bd611484565b5b6020830191508360018202830111156114da576114d9611488565b5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156114fd576114fc6113eb565b5b5f61150a8b828c01611439565b985050602061151b8b828c01611439565b975050604061152c8b828c01611439565b965050606061153d8b828c0161146c565b955050608089013567ffffffffffffffff81111561155e5761155d6113ef565b5b61156a8b828c0161148c565b945094505060a089013567ffffffffffffffff81111561158d5761158c6113ef565b5b6115998b828c0161148c565b92509250509295985092959890939650565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6115df816115ab565b81146115e9575f5ffd5b50565b5f813590506115fa816115d6565b92915050565b5f60208284031215611615576116146113eb565b5b5f611622848285016115ec565b91505092915050565b5f8115159050919050565b61163f8161162b565b82525050565b5f6020820190506116585f830184611636565b92915050565b5f5f5f5f5f60808688031215611677576116766113eb565b5b5f61168488828901611439565b955050602061169588828901611439565b94505060406116a68882890161146c565b935050606086013567ffffffffffffffff8111156116c7576116c66113ef565b5b6116d38882890161148c565b92509250509295509295909350565b6116eb816115ab565b82525050565b5f6020820190506117045f8301846116e2565b92915050565b5f819050919050565b61171c8161170a565b8114611726575f5ffd5b50565b5f8135905061173781611713565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61178782611741565b810181811067ffffffffffffffff821117156117a6576117a5611751565b5b80604052505050565b5f6117b86113e2565b90506117c4828261177e565b919050565b5f67ffffffffffffffff8211156117e3576117e2611751565b5b6117ec82611741565b9050602081019050919050565b828183375f83830152505050565b5f611819611814846117c9565b6117af565b9050828152602081018484840111156118355761183461173d565b5b6118408482856117f9565b509392505050565b5f82601f83011261185c5761185b611480565b5b813561186c848260208601611807565b91505092915050565b5f5f6040838503121561188b5761188a6113eb565b5b5f61189885828601611729565b925050602083013567ffffffffffffffff8111156118b9576118b86113ef565b5b6118c585828601611848565b9150509250929050565b5f5ffd5b5f61012082840312156118e9576118e86118cf565b5b81905092915050565b5f5f5f60608486031215611909576119086113eb565b5b5f84013567ffffffffffffffff811115611926576119256113ef565b5b611932868287016118d3565b935050602061194386828701611729565b92505060406119548682870161146c565b9150509250925092565b6119678161144d565b82525050565b5f6020820190506119805f83018461195e565b92915050565b5f60ff82169050919050565b61199b81611986565b81146119a5575f5ffd5b50565b5f813590506119b681611992565b92915050565b5f5f5f5f5f608086880312156119d5576119d46113eb565b5b5f6119e288828901611439565b95505060206119f38882890161146c565b945050604086013567ffffffffffffffff811115611a1457611a136113ef565b5b611a208882890161148c565b93509350506060611a33888289016119a8565b9150509295509295909350565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611a7282611a40565b611a7c8185611a4a565b9350611a8c818560208601611a5a565b611a9581611741565b840191505092915050565b5f6020820190508181035f830152611ab88184611a68565b905092915050565b5f5f5f60408486031215611ad757611ad66113eb565b5b5f611ae486828701611439565b935050602084013567ffffffffffffffff811115611b0557611b046113ef565b5b611b118682870161148c565b92509250509250925092565b5f60208284031215611b3257611b316113eb565b5b5f611b3f84828501611439565b91505092915050565b5f819050919050565b5f611b6b611b66611b61846113f3565b611b48565b6113f3565b9050919050565b5f611b7c82611b51565b9050919050565b5f611b8d82611b72565b9050919050565b611b9d81611b83565b82525050565b5f602082019050611bb65f830184611b94565b92915050565b5f5f83601f840112611bd157611bd0611480565b5b8235905067ffffffffffffffff811115611bee57611bed611484565b5b602083019150836020820283011115611c0a57611c09611488565b5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215611c2d57611c2c6113eb565b5b5f611c3a8b828c01611439565b9850506020611c4b8b828c01611439565b975050604089013567ffffffffffffffff811115611c6c57611c6b6113ef565b5b611c788b828c01611bbc565b9650965050606089013567ffffffffffffffff811115611c9b57611c9a6113ef565b5b611ca78b828c01611bbc565b9450945050608089013567ffffffffffffffff811115611cca57611cc96113ef565b5b611cd68b828c0161148c565b92509250509295985092959890939650565b5f5f5f5f5f5f60a08789031215611d0257611d016113eb565b5b5f611d0f89828a01611439565b9650506020611d2089828a0161146c565b955050604087013567ffffffffffffffff811115611d4157611d406113ef565b5b611d4d89828a0161148c565b94509450506060611d6089828a016119a8565b9250506080611d7189828a0161146c565b9150509295509295509295565b5f5f5f5f5f5f60a08789031215611d9857611d976113eb565b5b5f611da589828a01611439565b9650506020611db689828a01611439565b9550506040611dc789828a0161146c565b9450506060611dd889828a0161146c565b935050608087013567ffffffffffffffff811115611df957611df86113ef565b5b611e0589828a0161148c565b92509250509295509295509295565b611e1d81611412565b82525050565b5f606082019050611e365f83018661195e565b611e436020830185611e14565b611e50604083018461195e565b949350505050565b611e618161170a565b82525050565b5f604082019050611e7a5f830185611e58565b8181036020830152611e8c8184611a68565b90509392505050565b5f81519050611ea3816115d6565b92915050565b5f60208284031215611ebe57611ebd6113eb565b5b5f611ecb84828501611e95565b91505092915050565b5f81519050611ee281611423565b92915050565b5f60208284031215611efd57611efc6113eb565b5b5f611f0a84828501611ed4565b91505092915050565b5f819050919050565b5f77ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f59611f54611f4f84611f13565b611b48565b611f1c565b9050919050565b611f6981611f3f565b82525050565b5f604082019050611f825f830185611e14565b611f8f6020830184611f60565b9392505050565b5f81519050611fa481611456565b92915050565b5f60208284031215611fbf57611fbe6113eb565b5b5f611fcc84828501611f96565b91505092915050565b5f82825260208201905092915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000005f82015250565b5f612019601c83611fd5565b915061202482611fe5565b602082019050919050565b5f6020820190508181035f8301526120468161200d565b9050919050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f833560016020038436030381126120755761207461204d565b5b80840192508235915067ffffffffffffffff82111561209757612096612051565b5b6020830192506001820236038313156120b3576120b2612055565b5b509250929050565b7f496e76616c6964206e6f6e6365000000000000000000000000000000000000005f82015250565b5f6120ef600d83611fd5565b91506120fa826120bb565b602082019050919050565b5f6020820190508181035f83015261211c816120e3565b9050919050565b5f81905092915050565b50565b5f61213b5f83612123565b91506121468261212d565b5f82019050919050565b5f61215a82612130565b9150819050919050565b5f61216f8385612123565b935061217c8385846117f9565b82840190509392505050565b5f612194828486612164565b91508190509392505050565b7f496e76616c6964206f7065726174696f6e0000000000000000000000000000005f82015250565b5f6121d4601183611fd5565b91506121df826121a0565b602082019050919050565b5f6020820190508181035f830152612201816121c8565b9050919050565b61221181611986565b82525050565b5f60808201905061222a5f830187611e58565b6122376020830186612208565b6122446040830185611e58565b6122516060830184611e58565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60208201905061229a5f830184611e58565b92915050565b5f6122aa826113f3565b9050919050565b6122ba816122a0565b81146122c4575f5ffd5b50565b5f815190506122d5816122b1565b92915050565b5f5f5f606084860312156122f2576122f16113eb565b5b5f6122ff86828701611f96565b9350506020612310868287016122c7565b925050604061232186828701611f96565b915050925092509256fea2646970667358221220c04c05de9bedcad6da8650fa55a877481e93162d6e552cc764943a3a2ca940d364736f6c634300081b003360a060405234801561000f575f5ffd5b506040516108f33803806108f3833981810160405281019061003191906100e1565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f5f5f6101000a81548160ff0219169083151502179055505061010c565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100b082610087565b9050919050565b6100c0816100a6565b81146100ca575f5ffd5b50565b5f815190506100db816100b7565b92915050565b5f602082840312156100f6576100f5610083565b5b5f610103848285016100cd565b91505092915050565b6080516107d06101235f395f606201526107d05ff3fe608060405260043610610021575f3560e01c8063d1f578941461003257610028565b3661002857005b61003061004e565b005b61004c600480360381019061004791906106b0565b610060565b005b61005e6100596101b8565b6101c6565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610111575f5f9054906101000a900460ff16156100d3576100ce61004e565b610110565b336040517f76d17eff0000000000000000000000000000000000000000000000000000000081526004016101079190610719565b60405180910390fd5b5b5f5f9054906101000a900460ff1615610156576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff166101756101b8565b73ffffffffffffffffffffffffffffffffffffffff16036101b45760015f5f6101000a81548160ff0219169083151502179055506101b382826101e5565b5b5050565b5f6101c1610257565b905090565b365f5f375f5f365f845af43d5f5f3e805f81146101e1573d5ff35b3d5ffd5b6101ee826102aa565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f8151111561024a576102448282610373565b50610253565b6102526103f3565b5b5050565b5f6102837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61042f565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361030557806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016102fc9190610719565b60405180910390fd5b806103317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61042f565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff168460405161039c9190610784565b5f60405180830381855af49150503d805f81146103d4576040519150601f19603f3d011682016040523d82523d5f602084013e6103d9565b606091505b50915091506103e9858383610438565b9250505092915050565b5f34111561042d576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f819050919050565b60608261044d57610448826104c5565b6104bd565b5f825114801561047357505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156104b557836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016104ac9190610719565b60405180910390fd5b8190506104be565b5b9392505050565b5f815111156104d75780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105438261051a565b9050919050565b61055381610539565b811461055d575f5ffd5b50565b5f8135905061056e8161054a565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105c28261057c565b810181811067ffffffffffffffff821117156105e1576105e061058c565b5b80604052505050565b5f6105f3610509565b90506105ff82826105b9565b919050565b5f67ffffffffffffffff82111561061e5761061d61058c565b5b6106278261057c565b9050602081019050919050565b828183375f83830152505050565b5f61065461064f84610604565b6105ea565b9050828152602081018484840111156106705761066f610578565b5b61067b848285610634565b509392505050565b5f82601f83011261069757610696610574565b5b81356106a7848260208601610642565b91505092915050565b5f5f604083850312156106c6576106c5610512565b5b5f6106d385828601610560565b925050602083013567ffffffffffffffff8111156106f4576106f3610516565b5b61070085828601610683565b9150509250929050565b61071381610539565b82525050565b5f60208201905061072c5f83018461070a565b92915050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61075e82610732565b610768818561073c565b9350610778818560208601610746565b80840191505092915050565b5f61078f8284610754565b91508190509291505056fea26469706673582212203742684bc6ee36df2efeb754359dc28a63684db1551eb939e678435820ea577764736f6c634300081b0033a26469706673582212209815f18cdec5f2507ad20a897ac88ee9a17fd5a9bb966a5c6cfe79d8fd198c3164736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/kinoaccount.txt b/src/chain/bytecode/kinoaccount.txt new file mode 100644 index 00000000..8913f502 --- /dev/null +++ b/src/chain/bytecode/kinoaccount.txt @@ -0,0 +1 @@ +0x6080604052600436106100e6575f3560e01c80636d70f7ae11610087578063ca3b98bb11610057578063ca3b98bb1461029d578063d087d28814610289578063f23a6e61146102b0578063fc0c546a146102dc575f5ffd5b80636d70f7ae1461020e578063b0d691fe1461022d578063bc197c811461025b578063c19d93fb14610289575f5ffd5b80631626ba7e116100c25780631626ba7e1461018357806319822f7c146101a257806351945447146101cf578063523e3260146101ef575f5ffd5b806223de29146100f157806301ffc9a714610117578063150b7a021461014b575f5ffd5b366100ed57005b5f5ffd5b3480156100fc575f5ffd5b5061011561010b366004610d14565b5050505050505050565b005b348015610122575f5ffd5b50610136610131366004610dd6565b610313565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061016a610165366004610df1565b61033e565b6040516001600160e01b03199091168152602001610142565b34801561018e575f5ffd5b5061016a61019d366004610e72565b610398565b3480156101ad575f5ffd5b506101c16101bc366004610f2c565b6104bd565b604051908152602001610142565b6101e26101dd366004610f8f565b6104ef565b6040516101429190611028565b3480156101fa575f5ffd5b5061016a61020936600461103a565b610563565b348015610219575f5ffd5b5061013661022836600461108a565b610588565b348015610238575f5ffd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d27898152602001610142565b348015610266575f5ffd5b5061016a6102753660046110e5565b63bc197c8160e01b98975050505050505050565b348015610294575f5ffd5b506101c1610626565b6101e26102ab366004611185565b6106af565b3480156102bb575f5ffd5b5061016a6102ca3660046111fa565b63f23a6e6160e01b9695505050505050565b3480156102e7575f5ffd5b506102f0610730565b604080519384526001600160a01b03909216602084015290820152606001610142565b5f61031d82610746565b8061033857506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f610349610730565b909350915050336001600160a01b03831614801561036657508086145b156103845760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6103b885602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361048357828583016020016103d982610588565b1580156103ef57506001600160a01b0382163014155b1561040a57506001600160e01b031994506103389350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610438908b908590600401611270565b602060405180830381865afa158015610453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104779190611288565b95505050505050610338565b610492610228878386866107e7565b156104aa5750630b135d3f60e11b9250610338915050565b506001600160e01b031995945050505050565b5f6104c6610813565b6104d0848461087d565b90506104df8460200135610920565b6104e882610969565b9392505050565b60606104fa33610588565b15801561051b575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b1561053957604051634780295360e11b815260040160405180910390fd5b5f61054887878787875a6109be565b925090508061055957815160208301fd5b5095945050505050565b5f61056d84610588565b610577575f610580565b630291f19360e51b5b949350505050565b5f5f5f610593610730565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156105e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060491906112a3565b6001600160a01b031614801561058057505050506001600160a01b0316151590565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610686573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106aa91906112be565b905090565b60606106ba33610588565b1580156106db575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156106f957604051634780295360e11b815260040160405180910390fd5b5f6107148888888888881561070e57886109be565b5a6109be565b925090508061072557815160208301fd5b509695505050505050565b5f5f5f61073b610ad8565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b148061077657506001600160e01b031982166301ffc9a760e01b145b8061079157506001600160e01b031982166306608bdf60e21b145b806107ac57506001600160e01b03198216630b135d3f60e11b145b806107c757506001600160e01b03198216630271189760e51b145b8061033857506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f6107f788888888610ae4565b9250925092506108078282610bac565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d27891461087b5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064015b60405180910390fd5b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b6108fe826108c56101008801886112d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061039892505050565b6001600160e01b03191614610917576001915050610338565b505f9392505050565b6001600160401b0381106109665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610872565b50565b8015610966576040515f9033905f1990849084818181858888f193505050503d805f81146109b2576040519150601f19603f3d011682016040523d82523d5f602084013e6109b7565b606091505b5050505050565b5f60608360ff165f03610a3257876001600160a01b0316838888886040516109e7929190611317565b5f60405180830381858888f193505050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b606091505b509092509050610acd565b8360ff16600103610a9157876001600160a01b0316838787604051610a58929190611317565b5f604051808303818686f4925050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610872565b965096945050505050565b5f5f5f61073b30610c68565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b1d57505f91506003905082610ba2565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610b6e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610b9957505f925060019150829050610ba2565b92505f91508190505b9450945094915050565b5f826003811115610bbf57610bbf611326565b03610bc8575050565b6001826003811115610bdc57610bdc611326565b03610bfa5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c0e57610c0e611326565b03610c2f5760405163fce698f760e01b815260048101829052602401610872565b6003826003811115610c4357610c43611326565b03610c64576040516335e2f38360e21b815260048101829052602401610872565b5050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cae919061133a565b935093509350509193909250565b6001600160a01b0381168114610966575f5ffd5b5f5f83601f840112610ce0575f5ffd5b5081356001600160401b03811115610cf6575f5ffd5b602083019150836020828501011115610d0d575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215610d2b575f5ffd5b8835610d3681610cbc565b97506020890135610d4681610cbc565b96506040890135610d5681610cbc565b95506060890135945060808901356001600160401b03811115610d77575f5ffd5b610d838b828c01610cd0565b90955093505060a08901356001600160401b03811115610da1575f5ffd5b610dad8b828c01610cd0565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610966575f5ffd5b5f60208284031215610de6575f5ffd5b81356104e881610dc1565b5f5f5f5f5f60808688031215610e05575f5ffd5b8535610e1081610cbc565b94506020860135610e2081610cbc565b93506040860135925060608601356001600160401b03811115610e41575f5ffd5b610e4d88828901610cd0565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610e83575f5ffd5b8235915060208301356001600160401b03811115610e9f575f5ffd5b8301601f81018513610eaf575f5ffd5b80356001600160401b03811115610ec857610ec8610e5e565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610ef657610ef6610e5e565b604052818152828201602001871015610f0d575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f3e575f5ffd5b83356001600160401b03811115610f53575f5ffd5b84016101208187031215610f65575f5ffd5b95602085013595506040909401359392505050565b803560ff81168114610f8a575f5ffd5b919050565b5f5f5f5f5f60808688031215610fa3575f5ffd5b8535610fae81610cbc565b94506020860135935060408601356001600160401b03811115610fcf575f5ffd5b610fdb88828901610cd0565b9094509250610fee905060608701610f7a565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104e86020830184610ffa565b5f5f5f6040848603121561104c575f5ffd5b833561105781610cbc565b925060208401356001600160401b03811115611071575f5ffd5b61107d86828701610cd0565b9497909650939450505050565b5f6020828403121561109a575f5ffd5b81356104e881610cbc565b5f5f83601f8401126110b5575f5ffd5b5081356001600160401b038111156110cb575f5ffd5b6020830191508360208260051b8501011115610d0d575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156110fc575f5ffd5b883561110781610cbc565b9750602089013561111781610cbc565b965060408901356001600160401b03811115611131575f5ffd5b61113d8b828c016110a5565b90975095505060608901356001600160401b0381111561115b575f5ffd5b6111678b828c016110a5565b90955093505060808901356001600160401b03811115610da1575f5ffd5b5f5f5f5f5f5f60a0878903121561119a575f5ffd5b86356111a581610cbc565b95506020870135945060408701356001600160401b038111156111c6575f5ffd5b6111d289828a01610cd0565b90955093506111e5905060608801610f7a565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561120f575f5ffd5b863561121a81610cbc565b9550602087013561122a81610cbc565b9450604087013593506060870135925060808701356001600160401b03811115611252575f5ffd5b61125e89828a01610cd0565b979a9699509497509295939492505050565b828152604060208201525f6105806040830184610ffa565b5f60208284031215611298575f5ffd5b81516104e881610dc1565b5f602082840312156112b3575f5ffd5b81516104e881610cbc565b5f602082840312156112ce575f5ffd5b5051919050565b5f5f8335601e198436030181126112ea575f5ffd5b8301803591506001600160401b03821115611303575f5ffd5b602001915036819003821315610d0d575f5ffd5b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f6060848603121561134c575f5ffd5b8351602085015190935061135f81610cbc565b604094909401519295939450919291505056fea264697066735822122002390aa2047f18c7e70d9db3c183206222fedbd9e850724681683c6be808325964736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/multicall.txt b/src/chain/bytecode/multicall.txt new file mode 100644 index 00000000..879bc493 --- /dev/null +++ b/src/chain/bytecode/multicall.txt @@ -0,0 +1 @@ +0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033 \ No newline at end of file diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 03e05553..3347609a 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -1,12 +1,9 @@ -use std::collections::HashMap; -use std::path::PathBuf; use std::process::{Child, Command, Stdio}; use color_eyre::{ eyre::{eyre, Result}, Section, }; -use fs_err as fs; use reqwest::Client; use tokio::time::{sleep, Duration}; use tracing::{info, instrument}; @@ -16,75 +13,222 @@ use crate::run_tests::types::BroadcastRecvBool; use crate::setup::{check_foundry_deps, get_deps}; use crate::KIT_CACHE; -include!("../../target/chain_includes.rs"); +const OWNER_ADDRESS: &str = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; // first account on anvil +const DOT_OS_TBA: &str = "0xbE46837617f8304Aa5E6d0aE62B74340251f48Bf"; // dot OS TBA const DEFAULT_MAX_ATTEMPTS: u16 = 16; -pub const FAKENODE_TO_FOUNDRY: &[(&str, &str)] = &[("<0.9.8", "008922d51"), (">=0.9.8", "c3069a5")]; -pub const FOUNDRY_COMMIT_TO_DATE: &[(&str, &str)] = &[ - ("008922d51", "2024-04-23T00:23:10.634984900Z"), - ("c3069a5", "2024-11-05T00:22:10.561306811Z"), +const PREDEPLOY_CONTRACTS: &[(&str, &str)] = &[ + ( + "0x000000006551c19487814612e58FE06813775758", // ERC6551Registry + include_str!("./bytecode/erc6551_registry.txt"), + ), + ( + "0xcA11bde05977b3631167028862bE2a173976CA11", // Multicall3 + include_str!("./bytecode/multicall.txt"), + ), + ( + "0x000000000012d439e33aAD99149d52A5c6f980Dc", // KinoAccount + include_str!("./bytecode/kinoaccount.txt"), + ), + // public minter should be at: 0xa470f15b504f025ce24ed3dbb417b367d3def72f + ( + "0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F", // Kimap proxy + include_str!("./bytecode/erc1967proxy.txt"), + ), + ( + "0x969cAbCE3625224BA3d340ea4dC2f929301188Ad", // Kimap impl + include_str!("./bytecode/kimap.txt"), + ), +]; + +const STORAGE_SLOTS: &[(&str, &str, &str)] = &[ + // Implementation slot + ( + "0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F", // Kimap proxy + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", // implementation slot + "0x000000000000000000000000969cAbCE3625224BA3d340ea4dC2f929301188Ad", // implementation address + ), + // KIMAP immutable (set to proxy's own address) + ( + "0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F", // Kimap proxy + "0x0000000000000000000000000000000000000000000000000000000000000000", // storage slot + "0x000000000000000000000000000000000033e5ccbc52ec7bda87db768f9aa93f", // kimap proxy address + ), +]; + +const TRANSACTIONS: &[(&str, &str)] = &[ + // initialize Kimap + // cast calldata "initialize(address)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 + ( + "0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F", + "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + ), + // CREATE2 deploy KinoAccountMinter (deployed at 0xa470f15b504f025ce24ed3dbb417b367d3def72f) + ( + "0x4e59b44847b379578588920cA78FbF26c0B4956C", + include_str!("./bytecode/deploykinoaccountminter.txt"), + ), + // mint .os + // cast calldata "execute(address,uint256,bytes,uint8)" 0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F 0 $(cast calldata "mint(address,bytes,bytes,address)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 $(cast --from-ascii "os") $(cast calldata "initialize()") 0xa470f15b504f025ce24ed3dbb417b367d3def72f) 0 + ( + "0x4bb0778bb92564bf8e82d0b3271b7512443fb060", // zeroth TBA + "0x51945447000000000000000000000000000000000033e5ccbc52ec7bda87db768f9aa93f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104094cefed000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000a470f15b504f025ce24ed3dbb417b367d3def72f00000000000000000000000000000000000000000000000000000000000000026f7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048129fc1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + ), + // mint .dev + // cast calldata "execute(address,uint256,bytes,uint8)" 0x000000000033e5CCbC52Ec7BDa87dB768f9aA93F 0 $(cast calldata "mint(address,bytes,bytes,address)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 $(cast --from-ascii "dev") $(cast calldata "initialize()") 0xa470f15b504f025ce24ed3dbb417b367d3def72f) 0 + ( + "0x4bb0778bb92564bf8e82d0b3271b7512443fb060", // zeroth TBA + "0x51945447000000000000000000000000000000000033e5ccbc52ec7bda87db768f9aa93f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104094cefed000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000a470f15b504f025ce24ed3dbb417b367d3def72f0000000000000000000000000000000000000000000000000000000000000003646576000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048129fc1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + ), ]; -pub const FOUNDRY_NEWEST_COMMIT: &str = "c3069a5"; + +#[instrument(level = "trace", skip_all)] +async fn initialize_contracts(port: u16) -> Result<()> { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + // impersonate owner account + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_impersonateAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + // set storage slots + for (address, slot, value) in STORAGE_SLOTS { + let request_body: serde_json::Value = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_setStorageAt", + "params": [address, slot, value], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + } + + // get current nonce + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_getTransactionCount", + "params": [OWNER_ADDRESS, "latest"], + "id": 1 + }); + let response: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + let nonce_hex = response["result"] + .as_str() + .ok_or_else(|| eyre!("Invalid nonce response"))? + .trim_start_matches("0x"); + + let mut nonce = u64::from_str_radix(nonce_hex, 16)?; + + // execute all transactions + for (to, data) in TRANSACTIONS { + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_sendTransaction", + "params": [{ + "from": OWNER_ADDRESS, + "to": to, + "data": data, + "nonce": format!("0x{:x}", nonce), + "gas": "0x500000", + }], + "id": 1 + }); + + let res: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + if let Some(error) = res.get("error") { + info!("Transaction failed: {:?}", error); + } + nonce += 1; + } + + // stop impersonating + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_stopImpersonatingAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + Ok(()) +} + +#[instrument(level = "trace", skip_all)] +async fn check_dot_os_tba(port: u16) -> Result { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_getCode", + "params": [DOT_OS_TBA, "latest"], + "id": 1 + }); + + let response = client.post(&url).json(&request_body).send().await?; + let result: serde_json::Value = response.json().await?; + let code = result["result"].as_str().unwrap_or("0x"); + Ok(code != "0x") +} #[instrument(level = "trace", skip_all)] pub async fn start_chain( port: u16, mut recv_kill: BroadcastRecvBool, - fakenode_version: Option, + _fakenode_version: Option, verbose: bool, ) -> Result> { - let fakenode_to_foundry: HashMap = FAKENODE_TO_FOUNDRY - .iter() - .map(|ss| (ss.0.parse().unwrap(), ss.1.to_string())) - .collect(); - let foundry_commit_to_date: HashMap> = - FOUNDRY_COMMIT_TO_DATE - .iter() - .map(|ss| (ss.0.to_string(), ss.1.parse().unwrap())) - .collect(); - let foundry_commit_to_content: HashMap = FOUNDRY_COMMIT_TO_CONTENT - .iter() - .map(|ss| (ss.0.to_string(), ss.1.to_string())) - .collect(); - - let (newer_than, required_commit) = match fakenode_version { - None => (None, None), - Some(v) => { - let Some((_, commit)) = fakenode_to_foundry.iter().find(|(vr, _)| vr.matches(&v)) - else { - return Err(eyre!("")); - }; - ( - foundry_commit_to_date.get(commit).map(|d| d.clone()), - Some(commit.to_string()), - ) - } - }; - - let deps = check_foundry_deps(newer_than, required_commit.clone())?; + let deps = check_foundry_deps(None, None)?; get_deps(deps, &mut recv_kill, verbose).await?; - let required_commit = required_commit.unwrap_or_else(|| FOUNDRY_NEWEST_COMMIT.to_string()); - - let kinostate_path = PathBuf::from(KIT_CACHE).join(format!("kinostate-{required_commit}.json")); - let kinostate_content = foundry_commit_to_content - .get(&required_commit) - .expect(&format!( - "couldn't find kinostate content for foundry commit {required_commit}" - )); - fs::write(&kinostate_path, kinostate_content)?; - info!("Checking for Anvil on port {}...", port); if wait_for_anvil(port, 1, None).await.is_ok() { + if !check_dot_os_tba(port).await? { + predeploy_contracts(port).await?; + initialize_contracts(port).await?; + } return Ok(None); } let mut child = Command::new("anvil") .arg("--port") .arg(port.to_string()) - .arg("--load-state") - .arg(&kinostate_path) .current_dir(KIT_CACHE) .stdout(if verbose { Stdio::inherit() @@ -99,6 +243,18 @@ pub async fn start_chain( return Err(e); } + if !check_dot_os_tba(port).await? { + if let Err(e) = predeploy_contracts(port).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to pre-deploy contracts")); + } + + if let Err(e) = initialize_contracts(port).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to initialize contracts")); + } + } + Ok(Some(child)) } @@ -154,6 +310,43 @@ async fn wait_for_anvil( .with_suggestion(|| "Is port already occupied?")) } +#[instrument(level = "trace", skip_all)] +async fn predeploy_contracts(port: u16) -> Result<()> { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + for (address, bytecode) in PREDEPLOY_CONTRACTS { + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_getCode", + "params": [address, "latest"], + "id": 1 + }); + + let response = client.post(&url).json(&request_body).send().await?; + let result: serde_json::Value = response.json().await?; + let code = result["result"].as_str().unwrap_or("0x"); + + if code == "0x" { + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_setCode", + "params": [address, bytecode.trim()], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + } + } + + Ok(()) +} + /// kit chain, alias to anvil #[instrument(level = "trace", skip_all)] pub async fn execute(port: u16, version: &str, verbose: bool) -> Result<()> { diff --git a/src/lib.rs b/src/lib.rs index dac74098..0dc17a8c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,8 +16,8 @@ pub mod start_package; pub mod update; pub mod view_api; -pub const KIT_CACHE: &str = "/tmp/kinode-kit-cache"; -pub const KIT_LOG_PATH_DEFAULT: &str = "/tmp/kinode-kit-cache/logs/log.log"; +pub const KIT_CACHE: &str = "/tmp/hyperware-kit-cache"; +pub const KIT_LOG_PATH_DEFAULT: &str = "/tmp/hyperware-kit-cache/logs/log.log"; wit_bindgen::generate!({ path: "src/run_tests/wit", diff --git a/src/main.rs b/src/main.rs index be189931..f55a3fa6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,7 +10,7 @@ use color_eyre::{ }; use fs_err as fs; use serde::Deserialize; -use tracing::{error, warn, Level}; +use tracing::{error, instrument, warn, Level}; use tracing_error::ErrorLayer; use tracing_subscriber::{ filter, fmt, layer::SubscriberExt, prelude::*, util::SubscriberInitExt, EnvFilter, @@ -37,6 +37,15 @@ struct Commit { sha: String, } +#[instrument(level = "trace", skip_all)] +fn parse_u64_with_underscores(s: &str) -> Result { + let clean_string = s.replace('_', ""); + clean_string + .parse::() + .map_err(|_| "Invalid number format") +} + +#[instrument(level = "trace", skip_all)] fn parse_u128_with_underscores(s: &str) -> Result { let clean_string = s.replace('_', ""); clean_string @@ -44,6 +53,7 @@ fn parse_u128_with_underscores(s: &str) -> Result { .map_err(|_| "Invalid number format") } +#[instrument(level = "trace", skip_all)] async fn get_latest_commit_sha_from_branch( owner: &str, repo: &str, @@ -121,10 +131,12 @@ fn init_tracing(log_path: PathBuf) -> tracing_appender::non_blocking::WorkerGuar guard } +#[instrument(level = "trace", skip_all)] async fn execute( usage: clap::builder::StyledStr, matches: Option<(&str, &clap::ArgMatches)>, ) -> Result<()> { + println!("execute"); match matches { Some(("boot-fake-node", matches)) => { let runtime_path = matches @@ -143,6 +155,7 @@ async fn execute( let release = matches.get_one::("RELEASE").unwrap(); let verbosity = matches.get_one::("VERBOSITY").unwrap(); + println!("boot_fake_node: {runtime_path:?}"); boot_fake_node::execute( runtime_path, version.clone(), @@ -389,6 +402,7 @@ async fn execute( let max_fee_per_gas = matches .get_one::("MAX_FEE_PER_GAS") .and_then(|mfpg| Some(mfpg.clone())); + let mock = matches.get_one::("MOCK").unwrap(); publish::execute( &package_dir, @@ -402,6 +416,7 @@ async fn execute( *gas_limit, max_priority_fee, max_fee_per_gas, + mock, ) .await } @@ -482,11 +497,12 @@ async fn execute( } } +#[instrument(level = "trace", skip_all)] async fn make_app(current_dir: &std::ffi::OsString) -> Result { Ok(command!() .name("kit") .version(env!("CARGO_PKG_VERSION")) - .about("Development tool\x1b[1mkit\x1b[0m for Kinode") + .about("Development tool\x1b[1mkit\x1b[0m for Hyperware") .subcommand_required(true) .arg_required_else_help(true) .disable_version_flag(true) @@ -503,13 +519,13 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('r') .long("runtime-path") - .help("Path to Kinode core repo (overrides --version)") + .help("Path to Hyperdrive repo (overrides --version)") ) .arg(Arg::new("VERSION") .action(ArgAction::Set) .short('v') .long("version") - .help("Version of Kinode binary to use (overridden by --runtime-path)") + .help("Version of Hyperdrive binary to use (overridden by --runtime-path)") .default_value("latest") .value_parser(PossibleValuesParser::new({ let mut possible_values = vec!["latest".to_string()]; @@ -517,11 +533,11 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { None, None, &boot_fake_node::get_platform_runtime_name(true)? - ).await?; + ).await.unwrap_or_default(); remote_values.truncate(MAX_REMOTE_VALUES); - if remote_values.len() == 0 { - possible_values = vec![]; - } + //if remote_values.len() == 0 { + // possible_values = vec![]; + //} possible_values.append(&mut remote_values); possible_values })) @@ -539,7 +555,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .short('o') .long("home") .help("Path to home directory for fake node") - .default_value("/tmp/kinode-fake-node") + .default_value("/tmp/hyperdrive-fake-node") ) .arg(Arg::new("NODE_NAME") .action(ArgAction::Set) @@ -595,13 +611,13 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('r') .long("runtime-path") - .help("Path to Kinode core repo (overrides --version)") + .help("Path to Hyperdrive repo (overrides --version)") ) .arg(Arg::new("VERSION") .action(ArgAction::Set) .short('v') .long("version") - .help("Version of Kinode binary to use (overridden by --runtime-path)") + .help("Version of Hyperdrive to use (overridden by --runtime-path)") .default_value("latest") .value_parser(PossibleValuesParser::new({ let mut possible_values = vec!["latest".to_string()]; @@ -611,9 +627,9 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { &boot_fake_node::get_platform_runtime_name(false)? ).await?; remote_values.truncate(MAX_REMOTE_VALUES); - if remote_values.len() == 0 { - possible_values = vec![]; - } + //if remote_values.len() == 0 { + // possible_values = vec![]; + //} possible_values.append(&mut remote_values); possible_values })) @@ -660,7 +676,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) ) .subcommand(Command::new("build") - .about("Build a Kinode package") + .about("Build a Hyperware package") .visible_alias("b") .arg(Arg::new("DIR") .action(ArgAction::Set) @@ -708,7 +724,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -766,7 +782,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) ) .subcommand(Command::new("build-start-package") - .about("Build and start a Kinode package") + .about("Build and start a Hyperware package") .visible_alias("bs") .arg(Arg::new("DIR") .action(ArgAction::Set) @@ -777,7 +793,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -887,7 +903,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('v') .long("version") - .help("Version of Kinode binary to run chain for (foundry version must match Kinode version)") + .help("Version of Hyperdrive binary to run chain for") .default_value("latest") .value_parser(PossibleValuesParser::new({ let mut possible_values = vec!["latest".to_string()]; @@ -895,11 +911,11 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { None, None, &boot_fake_node::get_platform_runtime_name(false)? - ).await?; + ).await.unwrap_or_default(); remote_values.truncate(MAX_REMOTE_VALUES); - if remote_values.len() == 0 { - possible_values = vec![]; - } + //if remote_values.len() == 0 { + // possible_values = vec![]; + //} possible_values.append(&mut remote_values); possible_values })) @@ -931,14 +947,14 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('o') .long("host") - .help("Host URL/IP Kinode is running on (not required for disconnect)") + .help("Host URL/IP node is running on (not required for disconnect)") .required(false) ) .arg(Arg::new("HOST_PORT") .action(ArgAction::Set) .short('p') .long("port") - .help("Remote (host) port Kinode is running on") + .help("Remote (host) port node is running on") .value_parser(value_parser!(u16)) .required(false) ) @@ -955,7 +971,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -973,7 +989,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) ) .subcommand(Command::new("inject-message") - .about("Inject a message to a running Kinode") + .about("Inject a message to a running node") .visible_alias("i") .arg(Arg::new("PROCESS") .action(ArgAction::Set) @@ -989,7 +1005,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -1015,24 +1031,24 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) ) .subcommand(Command::new("new") - .about("Create a Kinode template package") + .about("Create a Hyperware template package") .visible_alias("n") .arg(Arg::new("DIR") .action(ArgAction::Set) - .help("Path to create template directory at (must contain only a-z, A-Z, 0-9, `-`)") + .help("Path to create template directory at (must contain only a-z, 0-9, `-`)") .required(true) ) .arg(Arg::new("PACKAGE") .action(ArgAction::Set) .short('a') .long("package") - .help("Name of the package (must contain only a-z, A-Z, 0-9, `-`) [default: DIR]") + .help("Name of the package (must contain only a-z, 0-9, `-`) [default: DIR]") ) .arg(Arg::new("PUBLISHER") .action(ArgAction::Set) .short('u') .long("publisher") - .help("Name of the publisher (must contain only a-z, A-Z, 0-9, `-`, `.`)") + .help("Name of the publisher (must contain only a-z, 0-9, `-`, `.`)") .default_value("template.os") ) .arg(Arg::new("LANGUAGE") @@ -1120,7 +1136,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .long("gas-limit") .help("The ETH transaction gas limit") .default_value("1_000_000") - .value_parser(clap::builder::ValueParser::new(parse_u128_with_underscores)) + .value_parser(clap::builder::ValueParser::new(parse_u64_with_underscores)) .required(false) ) .arg(Arg::new("MAX_PRIORITY_FEE_PER_GAS") @@ -1139,6 +1155,13 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .value_parser(clap::builder::ValueParser::new(parse_u128_with_underscores)) .required(false) ) + .arg(Arg::new("MOCK") + .action(ArgAction::SetTrue) + .short('m') + .long("mock") + .help("If set, don't actually publish: just dry-run") + .required(false) + ) ) .subcommand(Command::new("remove-package") .about("Remove a running package from a node") @@ -1166,16 +1189,16 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) ) .subcommand(Command::new("reset-cache") - .about("Reset kit cache (Kinode core binaries, logs, etc.)") + .about("Reset kit cache (Hyperdrive binaries, logs, etc.)") ) .subcommand(Command::new("run-tests") - .about("Run Kinode tests") + .about("Run Hyperware tests") .visible_alias("t") .arg(Arg::new("PATH") .action(ArgAction::Set) @@ -1194,7 +1217,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) ) .subcommand(Command::new("start-package") - .about("Start a built Kinode package") + .about("Start a built Hyprware package") .visible_alias("s") .arg(Arg::new("DIR") .action(ArgAction::Set) @@ -1205,7 +1228,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -1236,7 +1259,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('p') .long("port") - .help("localhost node port; for remote see https://book.kinode.org/hosted-nodes.html#using-kit-with-your-hosted-node") + .help("localhost node port; for remote see https://book.hyperware.ai/hosted-nodes.html#using-kit-with-your-hosted-node") .default_value("8080") .value_parser(value_parser!(u16)) ) @@ -1251,8 +1274,10 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { ) } +#[instrument(level = "trace", skip_all)] #[tokio::main] async fn main() -> Result<()> { + println!("main"); let log_path = std::env::var("KIT_LOG_PATH").unwrap_or_else(|_| KIT_LOG_PATH_DEFAULT.to_string()); let log_path = PathBuf::from(log_path); @@ -1265,9 +1290,13 @@ async fn main() -> Result<()> { .into_os_string(); let mut app = make_app(¤t_dir).await?; + println!("main a"); let usage = app.render_usage(); + println!("main b"); let matches = app.get_matches(); + println!("main c"); let matches = matches.subcommand(); + println!("main d"); let result = match execute(usage, matches).await { Ok(()) => Ok(()), @@ -1277,7 +1306,7 @@ async fn main() -> Result<()> { None => {} Some(ee) => { if ee.is_connect() { - e = e.with_suggestion(|| "is Kinode running?"); + e = e.with_suggestion(|| "is Hyperdrive running?"); } } } @@ -1288,7 +1317,7 @@ async fn main() -> Result<()> { if let Some((subcommand, _)) = matches { if subcommand != "update" && GIT_BRANCH_NAME == "master" { if let Some(latest) = get_latest_commit_sha_from_branch( - boot_fake_node::KINODE_OWNER, + boot_fake_node::HYPERWARE_OWNER, KIT_REPO, KIT_MASTER_BRANCH, ) diff --git a/src/new/mod.rs b/src/new/mod.rs index 60226f47..4d6481c6 100644 --- a/src/new/mod.rs +++ b/src/new/mod.rs @@ -237,9 +237,9 @@ fn replace_vars( pub fn is_kimap_safe(input: &str, is_publisher: bool) -> bool { let expression = if is_publisher { - r"^[a-zA-Z0-9\-.]+$" + r"^[a-z0-9\-.]+$" } else { - r"^[a-zA-Z0-9\-]+$" + r"^[a-z0-9\-]+$" }; let re = regex::Regex::new(expression).unwrap(); re.is_match(input) @@ -283,12 +283,12 @@ pub fn execute( if !is_kimap_safe(&package_name, false) { let error = if !is_from_dir { eyre!( - "`package_name` '{}' must be Kimap safe (a-z, A-Z, 0-9, - allowed).", + "`package_name` '{}' must be Kimap safe (a-z, 0-9, - allowed).", package_name ) } else { eyre!( - "`package_name` (derived from given directory {:?}) '{}' must be Kimap safe (a-z, A-Z, 0-9, - allowed).", + "`package_name` (derived from given directory {:?}) '{}' must be Kimap safe (a-z, 0-9, - allowed).", new_dir, package_name, ) @@ -297,7 +297,7 @@ pub fn execute( } if !is_kimap_safe(&publisher, true) { return Err(eyre!( - "`publisher` '{}' must be Kimap safe (a-z, A-Z, 0-9, -, . allowed).", + "`publisher` '{}' must be Kimap safe (a-z, 0-9, -, . allowed).", publisher )); } @@ -359,7 +359,7 @@ pub fn execute( language.to_string(), template.to_string(), if ui { "'yes ui'" } else { "'no ui'" }, - "https://book.kinode.org/kit/new.html#existshas-ui-enabled-vesion", + "https://book.hyperware.ai/kit/new.html#existshas-ui-enabled-vesion", )); } diff --git a/src/new/templates/javascript/no-ui/chat/chat/src/lib.js b/src/new/templates/javascript/no-ui/chat/chat/src/lib.js index 70b9846f..3650d2e2 100644 --- a/src/new/templates/javascript/no-ui/chat/chat/src/lib.js +++ b/src/new/templates/javascript/no-ui/chat/chat/src/lib.js @@ -1,4 +1,4 @@ -import { printToTerminal, receive, sendAndAwaitResponse, sendResponse } from "kinode:process/standard@0.7.0"; +import { printToTerminal, receive, sendAndAwaitResponse, sendResponse } from "hyperware:process/standard@0.7.0"; function parseAddress(addressString) { const [node, rest] = addressString.split('@'); diff --git a/src/new/templates/javascript/no-ui/chat/send/Cargo.toml b/src/new/templates/javascript/no-ui/chat/send/Cargo.toml index 3cb6e1bc..c57f9b7d 100644 --- a/src/new/templates/javascript/no-ui/chat/send/Cargo.toml +++ b/src/new/templates/javascript/no-ui/chat/send/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" wit-bindgen = "0.36.0" @@ -15,4 +15,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/javascript/no-ui/chat/send/src/lib.rs b/src/new/templates/javascript/no-ui/chat/send/src/lib.rs index e819550a..a2f09953 100644 --- a/src/new/templates/javascript/no-ui/chat/send/src/lib.rs +++ b/src/new/templates/javascript/no-ui/chat/send/src/lib.rs @@ -1,5 +1,5 @@ -use crate::kinode::process::chat::{Request as ChatRequest, Response as ChatResponse, SendRequest}; -use kinode_process_lib::{ +use crate::hyperware::process::chat::{Request as ChatRequest, Response as ChatResponse, SendRequest}; +use hyperware_process_lib::{ await_next_message_body, call_init, println, Address, Message, Request, }; diff --git a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/Cargo.toml b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/Cargo.toml index 2e7d4ceb..826283aa 100644 --- a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/Cargo.toml +++ b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] anyhow = "1.0" bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +19,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/lib.rs b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/lib.rs index 40e55a74..c0ebfcfb 100644 --- a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/lib.rs +++ b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs +++ b/src/new/templates/javascript/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/javascript/no-ui/chat/test/tests.toml b/src/new/templates/javascript/no-ui/chat/test/tests.toml index bef9b9c5..93ef43c8 100644 --- a/src/new/templates/javascript/no-ui/chat/test/tests.toml +++ b/src/new/templates/javascript/no-ui/chat/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/javascript/no-ui/echo/echo/src/lib.js b/src/new/templates/javascript/no-ui/echo/echo/src/lib.js index 8a8bef76..25179e5e 100644 --- a/src/new/templates/javascript/no-ui/echo/echo/src/lib.js +++ b/src/new/templates/javascript/no-ui/echo/echo/src/lib.js @@ -1,4 +1,4 @@ -import { printToTerminal, receive, sendResponse } from "kinode:process/standard@0.7.0"; +import { printToTerminal, receive, sendResponse } from "hyperware:process/standard@0.7.0"; function parseAddress(addressString) { const [node, rest] = addressString.split('@'); diff --git a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/Cargo.toml b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/Cargo.toml index 29a72277..13d0f83f 100644 --- a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/Cargo.toml +++ b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/Cargo.toml @@ -6,8 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +18,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/lib.rs b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/lib.rs index e1362078..34d9f9cd 100644 --- a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/lib.rs +++ b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/lib.rs @@ -1,8 +1,8 @@ -use crate::kinode::process::tester::{ +use crate::hyperware::process::tester::{ FailResponse, Request as TesterRequest, Response as TesterResponse, RunRequest, }; -use kinode_process_lib::{ +use hyperware_process_lib::{ await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response, }; diff --git a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs +++ b/src/new/templates/javascript/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/javascript/no-ui/echo/test/tests.toml b/src/new/templates/javascript/no-ui/echo/test/tests.toml index 6dd7eada..65147824 100644 --- a/src/new/templates/javascript/no-ui/echo/test/tests.toml +++ b/src/new/templates/javascript/no-ui/echo/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/javascript/no-ui/fibonacci/fibonacci/src/lib.js b/src/new/templates/javascript/no-ui/fibonacci/fibonacci/src/lib.js index 084d7ab9..3646cfd6 100644 --- a/src/new/templates/javascript/no-ui/fibonacci/fibonacci/src/lib.js +++ b/src/new/templates/javascript/no-ui/fibonacci/fibonacci/src/lib.js @@ -1,6 +1,6 @@ // 240103: Date.now() always returns 0, so this timing does not currently work. -import { printToTerminal, receive, sendResponse } from "kinode:process/standard@0.7.0"; +import { printToTerminal, receive, sendResponse } from "hyperware:process/standard@0.7.0"; function parseAddress(addressString) { const [node, rest] = addressString.split('@'); diff --git a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml index fe6da631..eaf2a377 100644 --- a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml +++ b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs index 60fef67c..c006603a 100644 --- a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs +++ b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::fibonacci::{Request as FibRequest, Response as FibResponse}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::fibonacci::{Request as FibRequest, Response as FibResponse}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs +++ b/src/new/templates/javascript/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/javascript/no-ui/fibonacci/test/tests.toml b/src/new/templates/javascript/no-ui/fibonacci/test/tests.toml index ea77da7e..cd9ae6c7 100644 --- a/src/new/templates/javascript/no-ui/fibonacci/test/tests.toml +++ b/src/new/templates/javascript/no-ui/fibonacci/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/Cargo.toml b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/Cargo.toml index 2e7d4ceb..ec1be364 100644 --- a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/Cargo.toml +++ b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/Cargo.toml @@ -6,8 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +18,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/lib.rs b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/lib.rs index 40e55a74..c0ebfcfb 100644 --- a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/lib.rs +++ b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs +++ b/src/new/templates/python/no-ui/chat/test/chat_test/chat_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/python/no-ui/chat/test/tests.toml b/src/new/templates/python/no-ui/chat/test/tests.toml index bef9b9c5..93ef43c8 100644 --- a/src/new/templates/python/no-ui/chat/test/tests.toml +++ b/src/new/templates/python/no-ui/chat/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/Cargo.toml b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/Cargo.toml index 29a72277..13d0f83f 100644 --- a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/Cargo.toml +++ b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/Cargo.toml @@ -6,8 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +18,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/lib.rs b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/lib.rs index e1362078..34d9f9cd 100644 --- a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/lib.rs +++ b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/lib.rs @@ -1,8 +1,8 @@ -use crate::kinode::process::tester::{ +use crate::hyperware::process::tester::{ FailResponse, Request as TesterRequest, Response as TesterResponse, RunRequest, }; -use kinode_process_lib::{ +use hyperware_process_lib::{ await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response, }; diff --git a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs +++ b/src/new/templates/python/no-ui/echo/test/echo_test/echo_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/python/no-ui/echo/test/tests.toml b/src/new/templates/python/no-ui/echo/test/tests.toml index 6dd7eada..65147824 100644 --- a/src/new/templates/python/no-ui/echo/test/tests.toml +++ b/src/new/templates/python/no-ui/echo/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml index fe6da631..eaf2a377 100644 --- a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml +++ b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs index 60fef67c..c006603a 100644 --- a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs +++ b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::fibonacci::{Request as FibRequest, Response as FibResponse}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::fibonacci::{Request as FibRequest, Response as FibResponse}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs +++ b/src/new/templates/python/no-ui/fibonacci/test/fibonacci_test/fibonacci_test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/python/no-ui/fibonacci/test/tests.toml b/src/new/templates/python/no-ui/fibonacci/test/tests.toml index ea77da7e..cd9ae6c7 100644 --- a/src/new/templates/python/no-ui/fibonacci/test/tests.toml +++ b/src/new/templates/python/no-ui/fibonacci/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/rust/no-ui/blank/blank/Cargo.toml b/src/new/templates/rust/no-ui/blank/blank/Cargo.toml index e5bdf3e5..1d287cc9 100644 --- a/src/new/templates/rust/no-ui/blank/blank/Cargo.toml +++ b/src/new/templates/rust/no-ui/blank/blank/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" publish = false [dependencies] -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" wit-bindgen = "0.36.0" @@ -14,4 +14,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/blank/blank/src/lib.rs b/src/new/templates/rust/no-ui/blank/blank/src/lib.rs index 05a38ccc..d3ef2112 100644 --- a/src/new/templates/rust/no-ui/blank/blank/src/lib.rs +++ b/src/new/templates/rust/no-ui/blank/blank/src/lib.rs @@ -1,4 +1,4 @@ -use kinode_process_lib::{await_message, call_init, println, Address}; +use hyperware_process_lib::{await_message, call_init, println, Address}; wit_bindgen::generate!({ path: "target/wit", diff --git a/src/new/templates/rust/no-ui/chat/chat/Cargo.toml b/src/new/templates/rust/no-ui/chat/chat/Cargo.toml index 17a7c4a0..f6e8cb8a 100644 --- a/src/new/templates/rust/no-ui/chat/chat/Cargo.toml +++ b/src/new/templates/rust/no-ui/chat/chat/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/chat/chat/src/lib.rs b/src/new/templates/rust/no-ui/chat/chat/src/lib.rs index 84c69420..1a4988f4 100644 --- a/src/new/templates/rust/no-ui/chat/chat/src/lib.rs +++ b/src/new/templates/rust/no-ui/chat/chat/src/lib.rs @@ -1,10 +1,10 @@ use std::collections::HashMap; -use crate::kinode::process::chat::{ +use crate::hyperware::process::chat::{ ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest, }; -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{await_message, call_init, println, Address, Message, Request, Response}; +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{await_message, call_init, println, Address, Message, Request, Response}; wit_bindgen::generate!({ path: "target/wit", @@ -76,7 +76,7 @@ fn handle_message( call_init!(init); fn init(our: Address) { - init_logging(&our, Level::DEBUG, Level::INFO, None, None).unwrap(); + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); info!("begin"); let mut message_archive = HashMap::new(); diff --git a/src/new/templates/rust/no-ui/chat/send/Cargo.toml b/src/new/templates/rust/no-ui/chat/send/Cargo.toml index 3cb6e1bc..c57f9b7d 100644 --- a/src/new/templates/rust/no-ui/chat/send/Cargo.toml +++ b/src/new/templates/rust/no-ui/chat/send/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" wit-bindgen = "0.36.0" @@ -15,4 +15,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/chat/send/src/lib.rs b/src/new/templates/rust/no-ui/chat/send/src/lib.rs index 9309ae37..19942550 100644 --- a/src/new/templates/rust/no-ui/chat/send/src/lib.rs +++ b/src/new/templates/rust/no-ui/chat/send/src/lib.rs @@ -1,5 +1,5 @@ -use crate::kinode::process::chat::{Request as ChatRequest, Response as ChatResponse, SendRequest}; -use kinode_process_lib::{await_next_message_body, call_init, println, Address, Message, Request}; +use crate::hyperware::process::chat::{Request as ChatRequest, Response as ChatResponse, SendRequest}; +use hyperware_process_lib::{await_next_message_body, call_init, println, Address, Message, Request}; wit_bindgen::generate!({ path: "target/wit", diff --git a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/Cargo.toml b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/Cargo.toml index 7ce4b3cd..6e5f619b 100644 --- a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/Cargo.toml +++ b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] anyhow = "1.0" bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +19,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/lib.rs b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/lib.rs index 40e55a74..c0ebfcfb 100644 --- a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/lib.rs +++ b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/tester_lib.rs b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/tester_lib.rs +++ b/src/new/templates/rust/no-ui/chat/test/chat-test/chat-test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/rust/no-ui/chat/test/tests.toml b/src/new/templates/rust/no-ui/chat/test/tests.toml index a4b35d48..38435750 100644 --- a/src/new/templates/rust/no-ui/chat/test/tests.toml +++ b/src/new/templates/rust/no-ui/chat/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/rust/no-ui/echo/echo/Cargo.toml b/src/new/templates/rust/no-ui/echo/echo/Cargo.toml index dbd1330b..80c7d5f4 100644 --- a/src/new/templates/rust/no-ui/echo/echo/Cargo.toml +++ b/src/new/templates/rust/no-ui/echo/echo/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/echo/echo/src/lib.rs b/src/new/templates/rust/no-ui/echo/echo/src/lib.rs index 41ddd305..b2d367a6 100644 --- a/src/new/templates/rust/no-ui/echo/echo/src/lib.rs +++ b/src/new/templates/rust/no-ui/echo/echo/src/lib.rs @@ -1,5 +1,5 @@ -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{await_message, call_init, println, Address, Message, Response}; +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{await_message, call_init, println, Address, Message, Response}; wit_bindgen::generate!({ path: "target/wit", @@ -21,8 +21,8 @@ fn handle_message(message: &Message) -> anyhow::Result<()> { } call_init!(init); -fn init(our: Address) { - init_logging(&our, Level::DEBUG, Level::INFO, None, None).unwrap(); +fn init(_our: Address) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); info!("begin"); loop { diff --git a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/Cargo.toml b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/Cargo.toml index 213470e0..33125c8a 100644 --- a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/Cargo.toml +++ b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/Cargo.toml @@ -6,8 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -bincode = "1.3" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } @@ -19,4 +18,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/lib.rs b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/lib.rs index e1362078..34d9f9cd 100644 --- a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/lib.rs +++ b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/lib.rs @@ -1,8 +1,8 @@ -use crate::kinode::process::tester::{ +use crate::hyperware::process::tester::{ FailResponse, Request as TesterRequest, Response as TesterResponse, RunRequest, }; -use kinode_process_lib::{ +use hyperware_process_lib::{ await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response, }; diff --git a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/tester_lib.rs b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/tester_lib.rs +++ b/src/new/templates/rust/no-ui/echo/test/echo-test/echo-test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/rust/no-ui/echo/test/tests.toml b/src/new/templates/rust/no-ui/echo/test/tests.toml index b66ad0e0..25dfc65f 100644 --- a/src/new/templates/rust/no-ui/echo/test/tests.toml +++ b/src/new/templates/rust/no-ui/echo/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/rust/no-ui/fibonacci/fibonacci/Cargo.toml b/src/new/templates/rust/no-ui/fibonacci/fibonacci/Cargo.toml index 052dfce1..04be0913 100644 --- a/src/new/templates/rust/no-ui/fibonacci/fibonacci/Cargo.toml +++ b/src/new/templates/rust/no-ui/fibonacci/fibonacci/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/fibonacci/fibonacci/src/lib.rs b/src/new/templates/rust/no-ui/fibonacci/fibonacci/src/lib.rs index ef247e2f..22d97ee2 100644 --- a/src/new/templates/rust/no-ui/fibonacci/fibonacci/src/lib.rs +++ b/src/new/templates/rust/no-ui/fibonacci/fibonacci/src/lib.rs @@ -1,8 +1,8 @@ -use crate::kinode::process::fibonacci::{ +use crate::hyperware::process::fibonacci::{ Request as FibonacciRequest, Response as FibonacciResponse, }; -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{await_message, call_init, Address, Message, Response}; +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{await_message, call_init, Address, Message, Response}; wit_bindgen::generate!({ path: "target/wit", @@ -83,8 +83,8 @@ fn handle_message(message: &Message) -> anyhow::Result<()> { } call_init!(init); -fn init(our: Address) { - init_logging(&our, Level::DEBUG, Level::INFO, None, None).unwrap(); +fn init(_our: Address) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); info!("begin"); loop { diff --git a/src/new/templates/rust/no-ui/fibonacci/number/Cargo.toml b/src/new/templates/rust/no-ui/fibonacci/number/Cargo.toml index 6e88a53f..1636eef4 100644 --- a/src/new/templates/rust/no-ui/fibonacci/number/Cargo.toml +++ b/src/new/templates/rust/no-ui/fibonacci/number/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" wit-bindgen = "0.36.0" @@ -15,4 +15,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/fibonacci/number/src/lib.rs b/src/new/templates/rust/no-ui/fibonacci/number/src/lib.rs index b5ea141f..c5357da5 100644 --- a/src/new/templates/rust/no-ui/fibonacci/number/src/lib.rs +++ b/src/new/templates/rust/no-ui/fibonacci/number/src/lib.rs @@ -1,5 +1,5 @@ -use crate::kinode::process::fibonacci::{Request as FibonacciRequest, Response as FibonacciResponse}; -use kinode_process_lib::{ +use crate::hyperware::process::fibonacci::{Request as FibonacciRequest, Response as FibonacciResponse}; +use hyperware_process_lib::{ await_next_message_body, call_init, println, Address, Message, Request, }; diff --git a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/Cargo.toml b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/Cargo.toml index 42d52c25..c2d8de2f 100644 --- a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/Cargo.toml +++ b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/lib.rs b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/lib.rs index 60fef67c..c006603a 100644 --- a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/lib.rs +++ b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::fibonacci::{Request as FibRequest, Response as FibResponse}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::fibonacci::{Request as FibRequest, Response as FibResponse}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/tester_lib.rs b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/tester_lib.rs +++ b/src/new/templates/rust/no-ui/fibonacci/test/fibonacci-test/fibonacci-test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/rust/no-ui/fibonacci/test/tests.toml b/src/new/templates/rust/no-ui/fibonacci/test/tests.toml index 95086cbd..4d5dcae0 100644 --- a/src/new/templates/rust/no-ui/fibonacci/test/tests.toml +++ b/src/new/templates/rust/no-ui/fibonacci/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/rust/no-ui/file-transfer/download/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/download/Cargo.toml index d262f26d..1dd73ee1 100644 --- a/src/new/templates/rust/no-ui/file-transfer/download/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/download/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/download/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/download/src/lib.rs index ee135bb1..50cf7d6e 100644 --- a/src/new/templates/rust/no-ui/file-transfer/download/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/download/src/lib.rs @@ -1,6 +1,6 @@ -use crate::kinode::process::file_transfer_worker::{DownloadRequest, Request as WorkerRequest}; -use crate::kinode::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; -use kinode_process_lib::{ +use crate::hyperware::process::file_transfer_worker::{DownloadRequest, Request as WorkerRequest}; +use crate::hyperware::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; +use hyperware_process_lib::{ await_next_message_body, call_init, println, Address, ProcessId, Request, }; diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/Cargo.toml index 040a9cfe..04f3d07a 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/src/lib.rs index 4cf40fbd..1b6fa5b9 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker-api/src/lib.rs @@ -1,8 +1,8 @@ -use crate::exports::kinode::process::file_transfer_worker::{ +use crate::exports::hyperware::process::file_transfer_worker::{ DownloadRequest, Guest, Request as WorkerRequest, Response as WorkerResponse, }; -use crate::kinode::process::standard::Address as WitAddress; -use kinode_process_lib::{our_capabilities, spawn, Address, OnExit, Request, Response}; +use crate::hyperware::process::standard::Address as WitAddress; +use hyperware_process_lib::{our_capabilities, spawn, Address, OnExit, Request, Response}; wit_bindgen::generate!({ path: "target/wit", diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/Cargo.toml index 1c6c759a..92a6753f 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/src/lib.rs index 6dae2856..aca5faef 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer-worker/src/lib.rs @@ -1,10 +1,10 @@ -use crate::kinode::process::file_transfer_worker::{ +use crate::hyperware::process::file_transfer_worker::{ ChunkRequest, DownloadRequest, InternalRequest, ProgressRequest, Request as WorkerRequest, Response as WorkerResponse, }; -use crate::kinode::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{ +use crate::hyperware::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{ await_message, call_init, get_blob, vfs::{open_dir, open_file, Directory, File, SeekFrom}, Address, Message, ProcessId, Request, Response, @@ -213,7 +213,7 @@ fn handle_message( call_init!(init); fn init(our: Address) { - init_logging(&our, Level::DEBUG, Level::INFO, None, None).unwrap(); + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); info!("worker: begin"); let start = std::time::Instant::now(); diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/file-transfer/Cargo.toml index ef8a8a5e..fab05515 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer/Cargo.toml @@ -9,7 +9,7 @@ test = [] [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -19,4 +19,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/file-transfer/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/file-transfer/src/lib.rs index 999b6491..3a8a70c4 100644 --- a/src/new/templates/rust/no-ui/file-transfer/file-transfer/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/file-transfer/src/lib.rs @@ -1,13 +1,13 @@ -use crate::kinode::process::file_transfer::{ +use crate::hyperware::process::file_transfer::{ FileInfo, Request as TransferRequest, Response as TransferResponse, }; -use crate::kinode::process::file_transfer_worker::{ +use crate::hyperware::process::file_transfer_worker::{ start_download, DownloadRequest, ProgressRequest, Request as WorkerRequest, Response as WorkerResponse, }; -use crate::kinode::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{ +use crate::hyperware::process::standard::{Address as WitAddress, ProcessId as WitProcessId}; +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{ await_message, call_init, get_capability, println, vfs::{create_drive, metadata, open_dir, open_file, Directory, FileType}, Address, Message, ProcessId, Response, @@ -210,7 +210,7 @@ fn handle_tester_setup(our: &Address, drive_path: &str) -> anyhow::Result<()> { call_init!(init); fn init(our: Address) { - init_logging(&our, Level::DEBUG, Level::INFO, None, None).unwrap(); + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); info!("begin"); let drive_path = create_drive(our.package_id(), "files", None).unwrap(); diff --git a/src/new/templates/rust/no-ui/file-transfer/list-files/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/list-files/Cargo.toml index 6ec051df..ba995454 100644 --- a/src/new/templates/rust/no-ui/file-transfer/list-files/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/list-files/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -16,4 +16,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/list-files/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/list-files/src/lib.rs index 5076fcb5..66076f9f 100644 --- a/src/new/templates/rust/no-ui/file-transfer/list-files/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/list-files/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::file_transfer::{ +use crate::hyperware::process::file_transfer::{ Request as TransferRequest, Response as TransferResponse, }; -use kinode_process_lib::{await_next_message_body, call_init, println, Address, Message, Request}; +use hyperware_process_lib::{await_next_message_body, call_init, println, Address, Message, Request}; wit_bindgen::generate!({ path: "target/wit", diff --git a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/Cargo.toml b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/Cargo.toml index a78bf440..e42d700b 100644 --- a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/Cargo.toml +++ b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/Cargo.toml @@ -6,7 +6,7 @@ publish = false [dependencies] anyhow = "1.0" -kinode_process_lib = "0.10.1" +hyperware_process_lib = "1.0.4" process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -17,4 +17,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/lib.rs b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/lib.rs index b59c5fa2..8a3ec5b3 100644 --- a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/lib.rs @@ -1,15 +1,15 @@ -use crate::kinode::process::file_transfer::{ +use crate::hyperware::process::file_transfer::{ FileInfo, Request as TransferRequest, Response as TransferResponse, }; -use crate::kinode::process::file_transfer_worker::{ +use crate::hyperware::process::file_transfer_worker::{ Address as WitAddress, DownloadRequest, Request as WorkerRequest, }; -use crate::kinode::process::standard::ProcessId as WitProcessId; -use crate::kinode::process::tester::{ +use crate::hyperware::process::standard::ProcessId as WitProcessId; +use crate::hyperware::process::tester::{ FailResponse, Request as TesterRequest, Response as TesterResponse, RunRequest, }; -use kinode_process_lib::{ +use hyperware_process_lib::{ await_message, call_init, our_capabilities, print_to_terminal, println, save_capabilities, vfs::File, Address, ProcessId, Request, Response, }; diff --git a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/tester_lib.rs b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/tester_lib.rs +++ b/src/new/templates/rust/no-ui/file-transfer/test/file-transfer-test/file-transfer-test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/rust/no-ui/file-transfer/test/tests.toml b/src/new/templates/rust/no-ui/file-transfer/test/tests.toml index fec43ea4..bb353f19 100644 --- a/src/new/templates/rust/no-ui/file-transfer/test/tests.toml +++ b/src/new/templates/rust/no-ui/file-transfer/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/rust/ui/chat/chat/Cargo.toml b/src/new/templates/rust/ui/chat/chat/Cargo.toml index b22d3b47..583aad72 100644 --- a/src/new/templates/rust/ui/chat/chat/Cargo.toml +++ b/src/new/templates/rust/ui/chat/chat/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] anyhow = "1.0" -kinode_process_lib = { version = "0.10.1", features = ["logging"] } +hyperware_process_lib = { version = "1.0.4", features = ["logging"] } process_macros = "0.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -15,4 +15,4 @@ wit-bindgen = "0.36.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/chat/chat/src/lib.rs b/src/new/templates/rust/ui/chat/chat/src/lib.rs index 0680cbc4..fc134747 100644 --- a/src/new/templates/rust/ui/chat/chat/src/lib.rs +++ b/src/new/templates/rust/ui/chat/chat/src/lib.rs @@ -1,10 +1,10 @@ use std::collections::HashMap; -use crate::kinode::process::chat::{ +use crate::hyperware::process::chat::{ ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest, }; -use kinode_process_lib::logging::{error, info, init_logging, Level}; -use kinode_process_lib::{ +use hyperware_process_lib::logging::{error, info, init_logging, Level}; +use hyperware_process_lib::{ await_message, call_init, get_blob, http::server::{ send_response, HttpBindingConfig, HttpServer, HttpServerRequest, StatusCode, diff --git a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/Cargo.toml b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/Cargo.toml index 75bd2693..812ad218 100644 --- a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/Cargo.toml +++ b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/Cargo.toml @@ -7,8 +7,8 @@ publish = false [dependencies] anyhow = "1.0" bincode = "1.3" -kinode_process_lib = "0.10.1" -process_macros = { git = "https://github.com/kinode-dao/process_macros", rev = "626e501" } +hyperware_process_lib = "1.0.4" +process_macros = { git = "https://github.com/hyperware-ai/process_macros", rev = "626e501" } rmp-serde = "1.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -19,4 +19,4 @@ wit-bindgen = "0.24.0" crate-type = ["cdylib"] [package.metadata.component] -package = "kinode:process" +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/lib.rs b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/lib.rs index 40e55a74..c0ebfcfb 100644 --- a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/lib.rs +++ b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/lib.rs @@ -1,7 +1,7 @@ -use crate::kinode::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; -use crate::kinode::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; +use crate::hyperware::process::chat::{ChatMessage, Request as ChatRequest, Response as ChatResponse, SendRequest}; +use crate::hyperware::process::tester::{Request as TesterRequest, Response as TesterResponse, RunRequest, FailResponse}; -use kinode_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; +use hyperware_process_lib::{await_message, call_init, print_to_terminal, println, Address, ProcessId, Request, Response}; mod tester_lib; diff --git a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/tester_lib.rs b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/tester_lib.rs index 8fb7ae19..3fdaef81 100644 --- a/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/tester_lib.rs +++ b/src/new/templates/rust/ui/chat/test/chat-test/chat-test/src/tester_lib.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; #[macro_export] macro_rules! fail { diff --git a/src/new/templates/rust/ui/chat/test/tests.toml b/src/new/templates/rust/ui/chat/test/tests.toml index a4b35d48..38435750 100644 --- a/src/new/templates/rust/ui/chat/test/tests.toml +++ b/src/new/templates/rust/ui/chat/test/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "~/git/kinode" } +# runtime = { RepoPath = "~/git/hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/tests.toml b/src/new/templates/tests.toml index b2a183d1..d155155d 100644 --- a/src/new/templates/tests.toml +++ b/src/new/templates/tests.toml @@ -1,5 +1,5 @@ runtime = { FetchVersion = "latest" } -# runtime = { RepoPath = "../../../kinode" } +# runtime = { RepoPath = "../../../../hyperdrive" } persist_home = false runtime_build_release = false always_print_node_output = false diff --git a/src/new/templates/ui/chat/ui/README.md b/src/new/templates/ui/chat/ui/README.md index 96aaac5f..b0e896f4 100644 --- a/src/new/templates/ui/chat/ui/README.md +++ b/src/new/templates/ui/chat/ui/README.md @@ -1,4 +1,4 @@ -# Kinode UI Template +# Hyperware UI Template Based on the Vite React Typescript template. diff --git a/src/new/templates/ui/chat/ui/package-lock.json b/src/new/templates/ui/chat/ui/package-lock.json index 3e01d41b..8f26017c 100644 --- a/src/new/templates/ui/chat/ui/package-lock.json +++ b/src/new/templates/ui/chat/ui/package-lock.json @@ -8,7 +8,7 @@ "name": "ui-template", "version": "0.0.0", "dependencies": { - "@kinode/client-api": "^0.1.0", + "@hyperware-ai/client-api": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "zustand": "^4.4.7" @@ -915,9 +915,9 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@kinode/client-api": { + "node_modules/@hyperware-ai/client-api": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@kinode/client-api/-/client-api-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/@hyperware-ai/client-api/-/client-api-0.1.0.tgz", "integrity": "sha512-qDj7xew+Z1qSQtiq8oc2ntZuiVdM1rtwIAQnyLxpL0j+f3cCfUnaDE6/604wJIrYmh8xjrtxUpWqu+ZmZoy6yg==", "dependencies": { "buffer": "^6.0.3", @@ -925,7 +925,7 @@ "typescript": "^4.9.5" } }, - "node_modules/@kinode/client-api/node_modules/typescript": { + "node_modules/@hyperware-ai/client-api/node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", diff --git a/src/new/templates/ui/chat/ui/package.json b/src/new/templates/ui/chat/ui/package.json index 026f4b50..ec9ddd50 100644 --- a/src/new/templates/ui/chat/ui/package.json +++ b/src/new/templates/ui/chat/ui/package.json @@ -13,7 +13,7 @@ "preview": "vite preview" }, "dependencies": { - "@kinode/client-api": "^0.1.0", + "@hyperware-ai/client-api": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "zustand": "^4.4.7" diff --git a/src/new/templates/ui/chat/ui/src/App.tsx b/src/new/templates/ui/chat/ui/src/App.tsx index b504acf8..864f44fd 100644 --- a/src/new/templates/ui/chat/ui/src/App.tsx +++ b/src/new/templates/ui/chat/ui/src/App.tsx @@ -1,7 +1,7 @@ import { useState, useEffect, useCallback } from "react"; import reactLogo from "./assets/react.svg"; import viteLogo from "./assets/vite.svg"; -import KinodeClientApi from "@kinode/client-api"; +import HyperwareClientApi from "@hyperware-ai/client-api"; import "./App.css"; import { SendChatMessage } from "./types/Chat"; import useChatStore from "./store/chat"; @@ -23,7 +23,7 @@ function App() { const [target, setTarget] = useState(""); const [message, setMessage] = useState(""); const [nodeConnected, setNodeConnected] = useState(true); - const [api, setApi] = useState(); + const [api, setApi] = useState(); useEffect(() => { // Get message history using http @@ -34,16 +34,15 @@ function App() { }) .catch((error) => console.error(error)); - // Connect to the Kinode via websocket + // Connect to the Hyperdrive via websocket console.log('WEBSOCKET URL', WEBSOCKET_URL) if (window.our?.node && window.our?.process) { - const api = new KinodeClientApi({ + const api = new HyperwareClientApi({ uri: WEBSOCKET_URL, nodeId: window.our.node, processId: window.our.process, onOpen: (_event, _api) => { - console.log("Connected to Kinode"); - // api.send({ data: "Hello World" }); + console.log("Connected to Hyperware"); }, onMessage: (json, _api) => { console.log('WEBSOCKET MESSAGE', json) @@ -140,7 +139,7 @@ function App() { )} -

Simple Chat on Kinode

+

Simple Chat on Hyperware

Result { let remote_metadata_dir = PathBuf::from(format!( - "/tmp/kinode-kit-cache/{}", + "/tmp/hyperware-kit-cache/{}", metadata.name.as_ref().unwrap(), )); if !remote_metadata_dir.exists() { @@ -162,7 +161,13 @@ async fn check_remote_metadata( let remote_metadata = read_and_update_metadata(&remote_metadata_dir)?; // TODO: add derive(PartialEq) to Erc721 - if serde_json::to_string(&metadata)? != serde_json::to_string(&remote_metadata)? { + let local_metadata_string = serde_json::to_string(&metadata).unwrap_or_default(); + let local_metadata_value: serde_json::Value = + serde_json::from_str(&local_metadata_string).unwrap_or_default(); + let remote_metadata_string = serde_json::to_string(&remote_metadata).unwrap_or_default(); + let remote_metadata_value: serde_json::Value = + serde_json::from_str(&remote_metadata_string).unwrap_or_default(); + if local_metadata_value != remote_metadata_value { return Err(eyre!( "{} and {} metadata do not match", make_local_file_link_path(&package_dir.join("metadata.json"), "Local") @@ -288,7 +293,6 @@ async fn prepare_kimap_put( who: wallet_address, label: name.into(), initialization: multicall.into(), - erc721Data: Bytes::default(), implementation: kino_account_impl, } .abi_encode(); @@ -317,6 +321,7 @@ pub async fn execute( gas_limit: u64, max_priority_fee_per_gas: Option, max_fee_per_gas: Option, + mock: &bool, ) -> Result<()> { if !package_dir.join("pkg").exists() { return Err(eyre!( @@ -416,15 +421,19 @@ pub async fn execute( let tx_envelope = tx.build(&wallet).await?; let tx_encoded = tx_envelope.encoded_2718(); - let tx = provider.send_raw_transaction(&tx_encoded).await?; - let tx_hash = format!("{:?}", tx.tx_hash()); - let link = make_remote_link( - &format!("https://optimistic.etherscan.io/tx/{tx_hash}"), - &tx_hash, - ); - info!( - "{} {name} tx sent: {link}", - if *unpublish { "unpublish" } else { "publish" } - ); + if *mock { + info!( + "{} {name} tx mock successful", + if *unpublish { "unpublish" } else { "publish" } + ); + } else { + let tx = provider.send_raw_transaction(&tx_encoded).await?; + let tx_hash = format!("{:?}", tx.tx_hash()); + let link = make_remote_link(&format!("https://basescan.org/tx/{tx_hash}"), &tx_hash); + info!( + "{} {name} tx sent: {link}", + if *unpublish { "unpublish" } else { "publish" } + ); + } Ok(()) } diff --git a/src/run_tests/mod.rs b/src/run_tests/mod.rs index d5efca56..6117982d 100644 --- a/src/run_tests/mod.rs +++ b/src/run_tests/mod.rs @@ -10,7 +10,7 @@ use tokio::sync::Mutex; use tokio::time::{sleep, Duration}; use tracing::{debug, info, instrument}; -use kinode_process_lib::kernel_types::PackageManifestEntry; +use hyperware_process_lib::kernel_types::PackageManifestEntry; use crate::boot_fake_node; use crate::build; @@ -18,7 +18,7 @@ use crate::chain; use crate::inject_message; use crate::start_package; -use crate::kinode::process::tester::{FailResponse, Response as TesterResponse}; +use crate::hyperware::process::tester::{FailResponse, Response as TesterResponse}; pub mod cleanup; use cleanup::{cleanup, cleanup_on_signal, drain_print_runtime}; @@ -309,7 +309,7 @@ async fn build_packages( info!("Starting node to host dependencies..."); let port = test.nodes[0].port.clone(); - let home = PathBuf::from("/tmp/kinode-fake-node"); + let home = PathBuf::from("/tmp/hyperware-fake-node"); let nodes = vec![Node { port: port.clone(), home, @@ -488,7 +488,7 @@ async fn wait_until_booted( } }; } - Err(eyre!("kit run-tests: could not connect to Kinode")) + Err(eyre!("kit run-tests: could not connect to node")) } #[instrument(level = "trace", skip_all)] @@ -549,9 +549,9 @@ async fn load_caps(test_package_paths: &Vec, port: u16) -> Result<()> { let manifest_path = test_package_path.join("pkg").join("manifest.json"); let manifest = fs::File::open(manifest_path) - .with_suggestion(|| "Missing required manifest.json file. See discussion at https://book.kinode.org/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson")?; + .with_suggestion(|| "Missing required manifest.json file. See discussion at https://book.hyperware.ai/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson")?; let manifest: Vec = serde_json::from_reader(manifest) - .with_suggestion(|| "Failed to parse required manifest.json file. See discussion at https://book.kinode.org/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson")?; + .with_suggestion(|| "Failed to parse required manifest.json file. See discussion at https://book.hyperware.ai/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson")?; if manifest.len() != 1 { return Err(eyre!("")); } @@ -839,7 +839,7 @@ pub async fn execute(config_path: PathBuf) -> Result<()> { } else { "debug" }) - .join("kinode") + .join("hyperdrive") } else { runtime_path }; @@ -848,7 +848,7 @@ pub async fn execute(config_path: PathBuf) -> Result<()> { false, )? else { - return Err(eyre!("couldn't get Kinode version")); + return Err(eyre!("couldn't get Hyperdrive version")); }; let version = output .split('\n') diff --git a/src/run_tests/wit/kinode.wit b/src/run_tests/wit/kinode.wit index d7475411..406297f1 100644 --- a/src/run_tests/wit/kinode.wit +++ b/src/run_tests/wit/kinode.wit @@ -1,4 +1,4 @@ -package kinode:process@0.8.0; +package hyperware:process@0.8.0; interface standard { // diff --git a/src/setup/mod.rs b/src/setup/mod.rs index 39e79b12..8d2608a4 100644 --- a/src/setup/mod.rs +++ b/src/setup/mod.rs @@ -94,11 +94,11 @@ fn check_python_venv(python: &str) -> Result<()> { info!("Checking for python venv..."); let venv_result = run_command( Command::new(python) - .args(&["-m", "venv", "kinode-test-venv"]) + .args(&["-m", "venv", "hyperware-test-venv"]) .current_dir("/tmp"), false, ); - let venv_dir = PathBuf::from("/tmp/kinode-test-venv"); + let venv_dir = PathBuf::from("/tmp/hyperware-test-venv"); if venv_dir.exists() { fs::remove_dir_all(&venv_dir)?; } @@ -373,20 +373,13 @@ pub fn check_js_deps() -> Result> { /// Check for Foundry deps, returning a Vec of Dependency if not found: can be automatically fetched? #[instrument(level = "trace", skip_all)] pub fn check_foundry_deps( - newer_than: Option>, - required_commit: Option, + _newer_than: Option>, + _required_commit: Option, ) -> Result> { if !is_command_installed("anvil")? { - return Ok(vec![Dependency::Foundry(required_commit)]); - } - let Some(newer_than) = newer_than else { - return Ok(vec![]); - }; - let (_, installed_datetime) = get_foundry_version()?; - let installed_datetime = installed_datetime.parse::>()?; - if installed_datetime < newer_than { - return Ok(vec![Dependency::Foundry(required_commit)]); + return Ok(vec![Dependency::Foundry(_required_commit)]); } + // let (_, installed_datetime) = get_foundry_version()?; Ok(vec![]) } diff --git a/src/start_package/mod.rs b/src/start_package/mod.rs index 7718c33b..9aea6e46 100644 --- a/src/start_package/mod.rs +++ b/src/start_package/mod.rs @@ -5,7 +5,7 @@ use fs_err as fs; use serde_json::json; use tracing::{debug, info, instrument}; -use kinode_process_lib::kernel_types::{Erc721Metadata, PackageManifestEntry}; +use hyperware_process_lib::kernel_types::{Erc721Metadata, PackageManifestEntry}; use crate::build::{hash_zip_pkg, make_pkg_publisher, make_zip_filename, read_and_update_metadata}; use crate::new::is_kimap_safe; @@ -84,7 +84,7 @@ fn install( #[instrument(level = "trace", skip_all)] fn check_manifest(pkg_dir: &Path, manifest_file_name: &str) -> Result<()> { let manifest_path = pkg_dir.join(manifest_file_name); - let book_link = make_remote_link("https://book.kinode.org/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson", "Kinode book"); + let book_link = make_remote_link("https://book.hyperware.ai/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson", "Hyperware book"); let manifest = fs::File::open(&manifest_path).with_suggestion(|| { format!("Missing required manifest.json file. See discussion {book_link}") })?; @@ -106,11 +106,13 @@ fn check_manifest(pkg_dir: &Path, manifest_file_name: &str) -> Result<()> { ) })?; if !is_kimap_safe(file_name, false) { - return Err(eyre!("{manifest_json} file name '{file_name}' must be Kimap safe (a-z, A-Z, 0-9, - allowed)")); + return Err(eyre!( + "{manifest_json} file name '{file_name}' must be Kimap safe (a-z, 0-9, - allowed)" + )); } if !is_kimap_safe(file_path, false) { return Err(eyre!( - "{manifest_json} file path {:?} must be Kimap safe (a-z, A-Z, 0-9, - allowed)", + "{manifest_json} file path {:?} must be Kimap safe (a-z, 0-9, - allowed)", entry.process_wasm_path, )); } diff --git a/src/update/mod.rs b/src/update/mod.rs index 6bc39e38..e0b5d12a 100644 --- a/src/update/mod.rs +++ b/src/update/mod.rs @@ -12,7 +12,7 @@ pub fn execute(mut user_args: Vec, branch: &str) -> Result<()> { let mut args: Vec = vec![ "install", "--git", - "https://github.com/kinode-dao/kit", + "https://github.com/hyperware-ai/kit", "--locked", "--branch", branch, @@ -25,7 +25,7 @@ pub fn execute(mut user_args: Vec, branch: &str) -> Result<()> { run_command(Command::new("cargo").args(&args[..]), true)?; - let cache_path = format!("{}/kinode-dao-kit-commits", KIT_CACHE); + let cache_path = format!("{}/hyperware-ai-kit-commits", KIT_CACHE); let cache_path = std::path::Path::new(&cache_path); if cache_path.exists() { fs::remove_dir_all(&cache_path)?; diff --git a/src/view_api/mod.rs b/src/view_api/mod.rs index 1e6c0e35..f93b1ab4 100644 --- a/src/view_api/mod.rs +++ b/src/view_api/mod.rs @@ -133,7 +133,7 @@ async fn parse_response( let e_string = e.to_string(); if e_string.contains("Failed with status code:") { eyre!("{e_string}\ncheck logs (default at {KIT_LOG_PATH_DEFAULT}) for full http response") - .with_suggestion(|| format!("is Kinode running at url {url}?")) + .with_suggestion(|| format!("is Hyperdrive running at url {url}?")) } else { eyre!(e_string) }