From dcf66a805608f91130586037e084a27f6e3af802 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 12 May 2026 18:54:56 +0100 Subject: [PATCH 01/46] update near sdk version --- Cargo.lock | 4914 +++----------------------------------- Cargo.toml | 12 +- model/Cargo.toml | 2 - model/src/lib.rs | 5 - res/sweat.wasm | Bin 221704 -> 231922 bytes rust-toolchain.toml | 2 +- sweat/Cargo.toml | 2 - sweat/src/api.rs | 42 + sweat/src/core.rs | 10 +- sweat/src/defer.rs | 32 +- sweat/src/integration.rs | 2 +- sweat/src/lib.rs | 30 +- 12 files changed, 459 insertions(+), 4594 deletions(-) create mode 100644 sweat/src/api.rs diff --git a/Cargo.lock b/Cargo.lock index 67ea09e..c70face 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -9,4608 +9,663 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] -name = "actix" -version = "0.13.1" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba56612922b907719d4a01cf11c8d5b458e7d3dba946d0435f20f58d6795ed2" -dependencies = [ - "actix-macros", - "actix-rt", - "actix_derive", - "bitflags 2.4.1", - "bytes", - "crossbeam-channel", - "futures-core", - "futures-sink", - "futures-task", - "futures-util", - "log", - "once_cell", - "parking_lot", - "pin-project-lite", - "smallvec", - "tokio", - "tokio-util 0.7.10", -] +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "actix-macros" -version = "0.2.4" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "quote", - "syn 2.0.38", + "libc", ] [[package]] -name = "actix-rt" -version = "2.9.0" +name = "autocfg" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" -dependencies = [ - "futures-core", - "tokio", -] +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "actix_derive" -version = "0.6.1" +name = "base64" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] -name = "adler" -version = "1.0.2" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] -name = "aes" -version = "0.8.3" +name = "borsh" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" dependencies = [ - "cfg-if 1.0.0", - "cipher 0.4.4", - "cpufeatures", + "borsh-derive", + "cfg_aliases", ] [[package]] -name = "ahash" -version = "0.7.7" +name = "borsh-derive" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" dependencies = [ - "getrandom 0.2.10", "once_cell", - "version_check", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "syn_derive", ] [[package]] -name = "ahash" -version = "0.8.6" +name = "bs58" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" dependencies = [ - "cfg-if 1.0.0", - "once_cell", - "version_check", - "zerocopy", + "tinyvec", ] [[package]] -name = "aho-corasick" -version = "1.1.2" +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "cc" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ - "memchr", + "libc", ] [[package]] -name = "android-tzdata" -version = "0.1.1" +name = "cfg-if" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] -name = "anstream" -version = "0.6.4" +name = "chrono" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets", ] [[package]] -name = "anstyle" -version = "1.0.4" +name = "core-foundation-sys" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] -name = "anstyle-parse" -version = "0.2.2" +name = "darling" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "utf8parse", + "darling_core", + "darling_macro", ] [[package]] -name = "anstyle-query" -version = "1.0.0" +name = "darling_core" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ - "windows-sys", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", ] [[package]] -name = "anstyle-wincon" -version = "3.0.1" +name = "darling_macro" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "anstyle", - "windows-sys", + "darling_core", + "quote", + "syn", ] [[package]] -name = "anyhow" -version = "1.0.75" +name = "deranged" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", + "serde", +] [[package]] -name = "arbitrary" -version = "1.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "exploit-stub" +version = "0.1.0" dependencies = [ - "derive_arbitrary", + "near-sdk", ] [[package]] -name = "arrayref" -version = "0.3.7" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "arrayvec" -version = "0.5.2" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] -name = "arrayvec" -version = "0.7.4" +name = "hashbrown" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] -name = "assert_matches" -version = "1.5.0" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "async-stream" -version = "0.3.5" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "async-stream-impl" -version = "0.3.5" +name = "iana-time-zone" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "async-trait" -version = "0.1.74" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "cc", ] [[package]] -name = "atty" -version = "0.2.14" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "autocfg" -version = "1.1.0" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] [[package]] -name = "base64" -version = "0.11.0" +name = "indexmap" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", + "serde", +] [[package]] -name = "base64" -version = "0.13.1" +name = "itoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] -name = "base64" -version = "0.21.5" +name = "js-sys" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] [[package]] -name = "base64ct" -version = "1.6.0" +name = "libc" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] -name = "binary-install" -version = "0.2.0" +name = "log" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" -dependencies = [ - "anyhow", - "dirs-next", - "flate2", - "fs2", - "hex", - "is_executable", - "siphasher", - "tar", - "ureq", - "zip 0.6.6", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] -name = "bitflags" -version = "1.3.2" +name = "memchr" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] -name = "bitflags" -version = "2.4.1" +name = "memory_units" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] -name = "bitvec" -version = "0.20.4" +name = "near-account-id" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" dependencies = [ - "funty 1.1.0", - "radium 0.6.2", - "tap", - "wyz 0.2.0", + "borsh", + "serde", ] [[package]] -name = "bitvec" -version = "1.0.1" +name = "near-contract-standards" +version = "5.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "d55c122f645d1ff85ed64a7b5f7a6440f3240a3c4e1195763d72989973be57ac" dependencies = [ - "funty 2.0.0", - "radium 0.7.0", - "tap", - "wyz 0.5.1", + "near-sdk", ] [[package]] -name = "blake2" -version = "0.9.2" +name = "near-gas" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +checksum = "559c33c9c86e05da946358485fa6e7e881a09726f909fbd8bcf357f998d7d03d" dependencies = [ - "crypto-mac", - "digest 0.9.0", - "opaque-debug", + "borsh", + "serde", ] [[package]] -name = "block-buffer" -version = "0.9.0" +name = "near-sdk" +version = "5.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "68f78c9d9392f3a0c5acba9e1dd3ea89554804a2c1b533170cc5cce00e483a4e" dependencies = [ - "generic-array", + "base64 0.22.1", + "borsh", + "bs58", + "near-account-id", + "near-gas", + "near-sdk-macros", + "near-sys", + "near-token", + "once_cell", + "serde", + "serde_json", + "serde_with", + "wee_alloc", ] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "near-sdk-macros" +version = "5.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "4b0bdc1666723a140e41ec8a14cf0b11b5e3ecf8ab55ed7e66d995c962fbac77" dependencies = [ - "generic-array", + "Inflector", + "darling", + "proc-macro2", + "quote", + "serde", + "serde_json", + "strum", + "strum_macros", + "syn", ] [[package]] -name = "borsh" -version = "0.9.3" +name = "near-sys" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" -dependencies = [ - "borsh-derive 0.9.3", - "hashbrown 0.11.2", -] +checksum = "c7c212278351251aa342eab33a9d64f99294bc5784cda10107867a72dda699bb" [[package]] -name = "borsh" -version = "0.10.3" +name = "near-token" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "2a8000d5859172ce4cd29d51ae1af18a80571939f2975ffcae2c00d241ef4507" dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.13.2", + "borsh", + "serde", ] [[package]] -name = "borsh" -version = "1.3.1" +name = "num-traits" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ - "borsh-derive 1.3.1", - "cfg_aliases", + "autocfg", ] [[package]] -name = "borsh-derive" -version = "0.9.3" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" -dependencies = [ - "borsh-derive-internal 0.9.3", - "borsh-schema-derive-internal 0.9.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] -name = "borsh-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.38", - "syn_derive", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "brownstone" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" -dependencies = [ - "arrayvec 0.7.4", -] - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bs58" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - -[[package]] -name = "bytesize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" -dependencies = [ - "serde", -] - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "c2-chacha" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" -dependencies = [ - "cipher 0.2.5", - "ppv-lite86", -] - -[[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-near" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" -dependencies = [ - "anyhow", - "atty", - "bs58 0.4.0", - "camino", - "cargo_metadata", - "clap 3.2.25", - "colored", - "env_logger", - "libloading", - "log", - "near-abi", - "rustc_version", - "schemars", - "serde_json", - "sha2 0.10.8", - "symbolic-debuginfo", - "zstd", -] - -[[package]] -name = "cargo-platform" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", -] - -[[package]] -name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "jobserver", - "libc", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "chrono" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets", -] - -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive 3.2.25", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "once_cell", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "clap" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" -dependencies = [ - "clap_builder", - "clap_derive 4.4.7", -] - -[[package]] -name = "clap_builder" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" -dependencies = [ - "anstream", - "anstyle", - "clap_lex 0.6.0", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" -dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_derive" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "colored" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" -dependencies = [ - "is-terminal", - "lazy_static", - "windows-sys", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "curve25519-dalek" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "platforms", - "rand_core 0.6.4", - "rustc_version", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "darling" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.38", -] - -[[package]] -name = "darling_macro" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "debugid" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" -dependencies = [ - "uuid", -] - -[[package]] -name = "deranged" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derive_arbitrary" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - -[[package]] -name = "deunicode" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1abaf4d861455be59f64fd2b55606cb151fce304ede7165f410243ce96bde6" - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dmsort" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" - -[[package]] -name = "dotenv" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" - -[[package]] -name = "dyn-clone" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" - -[[package]] -name = "easy-ext" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature 1.6.4", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "signature 2.2.0", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.1", - "ed25519 1.5.3", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-dalek" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" -dependencies = [ - "curve25519-dalek 4.1.1", - "ed25519 2.2.3", - "rand_core 0.6.4", - "sha2 0.10.8", - "subtle", -] - -[[package]] -name = "either" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" - -[[package]] -name = "elementtree" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" -dependencies = [ - "string_cache", - "xml-rs", -] - -[[package]] -name = "encoding_rs" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "enum-map" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53337c2dbf26a3c31eccc73a37b10c1614e8d4ae99b6a50d553e8936423c1f16" -dependencies = [ - "enum-map-derive", -] - -[[package]] -name = "enum-map-derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "exploit-stub" -version = "0.1.0" -dependencies = [ - "near-sdk", -] - -[[package]] -name = "fake" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26221445034074d46b276e13eb97a265ebdb8ed8da705c4dddd3dd20b66b45d2" -dependencies = [ - "deunicode", - "rand 0.8.5", -] - -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "fiat-crypto" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" - -[[package]] -name = "filetime" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.3.5", - "windows-sys", -] - -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "flate2" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" - -[[package]] -name = "futures-executor" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" - -[[package]] -name = "futures-macro" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "futures-sink" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" - -[[package]] -name = "futures-task" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" - -[[package]] -name = "futures-util" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" -dependencies = [ - "fallible-iterator", - "stable_deref_trait", -] - -[[package]] -name = "goblin" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" -dependencies = [ - "log", - "plain", - "scroll 0.11.0", -] - -[[package]] -name = "h2" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio", - "tokio-util 0.7.10", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.7", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.6", -] - -[[package]] -name = "hashbrown" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.14.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "impl-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indent_write" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" -dependencies = [ - "equivalent", - "hashbrown 0.14.2", - "serde", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "integration-tests" -version = "1.0.0" -dependencies = [ - "anyhow", - "async-trait", - "borsh 0.10.3", - "integration-utils", - "maplit", - "near-contract-standards", - "near-sdk", - "near-units", - "near-workspaces", - "pkg-config", - "sweat-model", - "tokio", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "integration-trait" -version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=e54dc392ef42837123dd2c0ad19b6d6b815192d7#e54dc392ef42837123dd2c0ad19b6d6b815192d7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "integration-utils" -version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=e54dc392ef42837123dd2c0ad19b6d6b815192d7#e54dc392ef42837123dd2c0ad19b6d6b815192d7" -dependencies = [ - "anyhow", - "async-trait", - "dotenv", - "fake", - "futures", - "near-sdk", - "near-units", - "near-workspaces", - "tokio", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.3", - "rustix", - "windows-sys", -] - -[[package]] -name = "is_executable" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" -dependencies = [ - "winapi", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "jobserver" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" -dependencies = [ - "libc", -] - -[[package]] -name = "joinery" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" - -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" -dependencies = [ - "serde", - "serde_json", - "thiserror", - "treediff", -] - -[[package]] -name = "json_comments" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ee439ee368ba4a77ac70d04f14015415af8600d6c894dc1f11bd79758c57d5" - -[[package]] -name = "keccak" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -dependencies = [ - "spin 0.5.2", -] - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if 1.0.0", - "winapi", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" - -[[package]] -name = "lock_api" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memmap2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", -] - -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "near-abi" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" -dependencies = [ - "borsh 0.9.3", - "schemars", - "semver", - "serde", -] - -[[package]] -name = "near-account-id" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" -dependencies = [ - "borsh 0.9.3", - "serde", -] - -[[package]] -name = "near-account-id" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" -dependencies = [ - "borsh 1.3.1", - "serde", -] - -[[package]] -name = "near-chain-configs" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e5a8ace81c09d7eb165dffc1742358a021b2fa761f2160943305f83216003" -dependencies = [ - "anyhow", - "bytesize", - "chrono", - "derive_more", - "near-config-utils", - "near-crypto 0.20.1", - "near-parameters", - "near-primitives 0.20.1", - "num-rational", - "once_cell", - "serde", - "serde_json", - "sha2 0.10.8", - "smart-default", - "tracing", -] - -[[package]] -name = "near-config-utils" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae1eaab1d545a9be7a55b6ef09f365c2017f93a03063547591d12c0c6d27e58" -dependencies = [ - "anyhow", - "json_comments", - "thiserror", - "tracing", -] - -[[package]] -name = "near-contract-standards" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" -dependencies = [ - "near-sdk", - "schemars", - "serde", - "serde_json", -] - -[[package]] -name = "near-crypto" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" -dependencies = [ - "arrayref", - "blake2", - "borsh 0.9.3", - "bs58 0.4.0", - "c2-chacha", - "curve25519-dalek 3.2.1", - "derive_more", - "ed25519-dalek 1.0.1", - "near-account-id 0.14.0", - "once_cell", - "parity-secp256k1", - "primitive-types", - "rand 0.7.3", - "rand_core 0.5.1", - "serde", - "serde_json", - "subtle", - "thiserror", -] - -[[package]] -name = "near-crypto" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2991d2912218a80ec0733ac87f84fa803accea105611eea209d4419271957667" -dependencies = [ - "blake2", - "borsh 1.3.1", - "bs58 0.4.0", - "c2-chacha", - "curve25519-dalek 4.1.1", - "derive_more", - "ed25519-dalek 2.1.0", - "hex", - "near-account-id 1.0.0", - "near-config-utils", - "near-stdx", - "once_cell", - "primitive-types", - "rand 0.7.3", - "secp256k1", - "serde", - "serde_json", - "subtle", - "thiserror", -] - -[[package]] -name = "near-fmt" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d998dfc1e04001608899b2498ad5a782c7d036b73769d510de21964db99286" -dependencies = [ - "near-primitives-core 0.20.1", -] - -[[package]] -name = "near-gas" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14e75c875026229902d065e4435804497337b631ec69ba746b102954273e9ad1" -dependencies = [ - "borsh 1.3.1", - "schemars", - "serde", -] - -[[package]] -name = "near-jsonrpc-client" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18ad81e015f7aced8925d5b9ba3f369b36da9575c15812cfd0786bc1213284ca" -dependencies = [ - "borsh 1.3.1", - "lazy_static", - "log", - "near-chain-configs", - "near-crypto 0.20.1", - "near-jsonrpc-primitives", - "near-primitives 0.20.1", - "reqwest", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "near-jsonrpc-primitives" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ce745e954ae776eef05957602e638ee9581106a3675946fb43c2fe7e38ef03" -dependencies = [ - "arbitrary", - "near-chain-configs", - "near-crypto 0.20.1", - "near-primitives 0.20.1", - "near-rpc-error-macro 0.20.1", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "near-o11y" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20762631bc8253030013bbae9b5f0542691edc1aa6722f1e8141cc9b928ae5b" -dependencies = [ - "actix", - "base64 0.21.5", - "clap 4.4.7", - "near-crypto 0.20.1", - "near-fmt", - "near-primitives-core 0.20.1", - "once_cell", - "opentelemetry", - "opentelemetry-otlp", - "opentelemetry-semantic-conventions", - "prometheus", - "serde", - "serde_json", - "strum", - "thiserror", - "tokio", - "tracing", - "tracing-appender", - "tracing-opentelemetry", - "tracing-subscriber", -] - -[[package]] -name = "near-parameters" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f16a59b6c3e69b0585be951af6fe42a0ba86c0e207cb8c63badd19efd16680" -dependencies = [ - "assert_matches", - "borsh 1.3.1", - "enum-map", - "near-account-id 1.0.0", - "near-primitives-core 0.20.1", - "num-rational", - "serde", - "serde_repr", - "serde_yaml", - "strum", - "thiserror", -] - -[[package]] -name = "near-primitives" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "bytesize", - "chrono", - "derive_more", - "easy-ext", - "hex", - "near-crypto 0.14.0", - "near-primitives-core 0.14.0", - "near-rpc-error-macro 0.14.0", - "near-vm-errors", - "num-rational", - "once_cell", - "primitive-types", - "rand 0.7.3", - "reed-solomon-erasure", - "serde", - "serde_json", - "smart-default", - "strum", - "thiserror", -] - -[[package]] -name = "near-primitives" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0462b067732132babcc89d5577db3bfcb0a1bcfbaaed3f2db4c11cd033666314" -dependencies = [ - "arbitrary", - "base64 0.21.5", - "borsh 1.3.1", - "bytesize", - "cfg-if 1.0.0", - "chrono", - "derive_more", - "easy-ext", - "enum-map", - "hex", - "near-crypto 0.20.1", - "near-fmt", - "near-o11y", - "near-parameters", - "near-primitives-core 0.20.1", - "near-rpc-error-macro 0.20.1", - "near-stdx", - "near-vm-runner", - "num-rational", - "once_cell", - "primitive-types", - "rand 0.8.5", - "rand_chacha 0.3.1", - "reed-solomon-erasure", - "serde", - "serde_json", - "serde_with", - "serde_yaml", - "sha3", - "smart-default", - "strum", - "thiserror", - "time", - "tracing", -] - -[[package]] -name = "near-primitives-core" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" -dependencies = [ - "base64 0.11.0", - "borsh 0.9.3", - "bs58 0.4.0", - "derive_more", - "near-account-id 0.14.0", - "num-rational", - "serde", - "sha2 0.10.8", - "strum", -] - -[[package]] -name = "near-primitives-core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8443eb718606f572c438be6321a097a8ebd69f8e48d953885b4f16601af88225" -dependencies = [ - "arbitrary", - "base64 0.21.5", - "borsh 1.3.1", - "bs58 0.4.0", - "derive_more", - "enum-map", - "near-account-id 1.0.0", - "num-rational", - "serde", - "serde_repr", - "serde_with", - "sha2 0.10.8", - "strum", - "thiserror", -] - -[[package]] -name = "near-rpc-error-core" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" -dependencies = [ - "quote", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-rpc-error-core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fca203c51edd9595ec14db1d13359fb9ede32314990bf296b6c5c4502f6ab7" -dependencies = [ - "quote", - "serde", - "syn 2.0.38", -] - -[[package]] -name = "near-rpc-error-macro" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" -dependencies = [ - "near-rpc-error-core 0.14.0", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-rpc-error-macro" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897a445de2102f6732c8a185d922f5e3bf7fd0a41243ce40854df2197237f799" -dependencies = [ - "fs2", - "near-rpc-error-core 0.20.1", - "serde", - "syn 2.0.38", -] - -[[package]] -name = "near-sandbox-utils" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" -dependencies = [ - "anyhow", - "binary-install", - "chrono", - "fs2", - "home", - "tokio", -] - -[[package]] -name = "near-sdk" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros", - "near-sys", - "near-vm-logic", - "once_cell", - "schemars", - "serde", - "serde_json", - "wee_alloc", -] - -[[package]] -name = "near-sdk-macros" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "near-stdx" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "855fd5540e3b4ff6fedf12aba2db1ee4b371b36f465da1363a6d022b27cb43b8" - -[[package]] -name = "near-sys" -version = "0.2.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" - -[[package]] -name = "near-token" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" -dependencies = [ - "serde", -] - -[[package]] -name = "near-units" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" -dependencies = [ - "near-units-core", - "near-units-macro", -] - -[[package]] -name = "near-units-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89aa2a7985de87a08ca35f28abd8d00f0f901e704257e6e029aadef981386bc6" -dependencies = [ - "num-format", - "regex", -] - -[[package]] -name = "near-units-macro" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ab45d066220846f9bd5c21e9ab88c47c892edd36f962ada78bf8308523171a" -dependencies = [ - "near-units-core", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "near-vm-errors" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" -dependencies = [ - "borsh 0.9.3", - "near-account-id 0.14.0", - "near-rpc-error-macro 0.14.0", - "serde", -] - -[[package]] -name = "near-vm-logic" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", - "byteorder", - "near-account-id 0.14.0", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-vm-errors", - "ripemd", - "serde", - "sha2 0.10.8", - "sha3", - "zeropool-bn", -] - -[[package]] -name = "near-vm-runner" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56c80bdb1954808f59bd36a9112377197b38d424991383bf05f52d0fe2e0da5" -dependencies = [ - "base64 0.21.5", - "borsh 1.3.1", - "ed25519-dalek 2.1.0", - "enum-map", - "memoffset", - "near-crypto 0.20.1", - "near-parameters", - "near-primitives-core 0.20.1", - "near-stdx", - "num-rational", - "once_cell", - "prefix-sum-vec", - "ripemd", - "serde", - "serde_repr", - "serde_with", - "sha2 0.10.8", - "sha3", - "strum", - "thiserror", - "tracing", - "zeropool-bn", -] - -[[package]] -name = "near-workspaces" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e597da87d0c1a722e23efb8c24ae42a0ad99a15f37101dad45c15defb051c1" -dependencies = [ - "async-trait", - "base64 0.21.5", - "bs58 0.5.0", - "cargo-near", - "chrono", - "fs2", - "json-patch", - "libc", - "near-account-id 1.0.0", - "near-crypto 0.20.1", - "near-gas", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.20.1", - "near-sandbox-utils", - "near-token", - "rand 0.8.5", - "reqwest", - "serde", - "serde_json", - "sha2 0.10.8", - "tempfile", - "thiserror", - "tokio", - "tokio-retry", - "tracing", - "url", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "nom-supreme" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" -dependencies = [ - "brownstone", - "indent_write", - "joinery", - "memchr", - "nom", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec 0.7.4", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-traits" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.3", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl" -version = "0.10.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" -dependencies = [ - "bitflags 2.4.1", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", - "tokio", - "tokio-stream", -] - -[[package]] -name = "opentelemetry-otlp" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" -dependencies = [ - "async-trait", - "futures", - "futures-util", - "http", - "opentelemetry", - "prost", - "thiserror", - "tokio", - "tonic", - "tonic-build", -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" -dependencies = [ - "opentelemetry", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parity-scale-codec" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" -dependencies = [ - "arrayvec 0.7.4", - "bitvec 0.20.4", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parity-secp256k1" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" -dependencies = [ - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", - "rand 0.7.3", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.4.1", - "smallvec", - "windows-targets", -] - -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2 0.10.8", -] - -[[package]] -name = "pdb" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" -dependencies = [ - "fallible-iterator", - "scroll 0.10.2", - "uuid", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.0.2", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - -[[package]] -name = "platforms" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prefix-sum-vec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" - -[[package]] -name = "primitive-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit 0.21.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "prometheus" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" -dependencies = [ - "cfg-if 1.0.0", - "fnv", - "lazy_static", - "memchr", - "parking_lot", - "protobuf", - "thiserror", -] - -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" -dependencies = [ - "bytes", - "heck 0.3.3", - "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "regex", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "prost-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" -dependencies = [ - "bytes", - "prost", -] - -[[package]] -name = "protobuf" -version = "2.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.10", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "reed-solomon-erasure" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" -dependencies = [ - "smallvec", -] - -[[package]] -name = "regex" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.2", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" - -[[package]] -name = "reqwest" -version = "0.11.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" -dependencies = [ - "base64 0.21.5", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "ring" -version = "0.17.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" -dependencies = [ - "cc", - "getrandom 0.2.10", - "libc", - "spin 0.9.8", - "untrusted", - "windows-sys", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" -dependencies = [ - "bitflags 2.4.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustls" -version = "0.21.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" -dependencies = [ - "log", - "ring", - "rustls-webpki", - "sct", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "schemars" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scroll" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" - -[[package]] -name = "scroll" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "secp256k1" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" -dependencies = [ - "rand 0.8.5", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" -dependencies = [ - "cc", -] - -[[package]] -name = "security-framework" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" -dependencies = [ - "serde", -] - -[[package]] -name = "serde" -version = "1.0.190" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.190" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "serde_derive_internals" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "serde_json" -version = "1.0.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" -dependencies = [ - "base64 0.21.5", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.0.2", - "serde", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "serde_yaml" -version = "0.9.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" -dependencies = [ - "indexmap 2.0.2", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" - -[[package]] -name = "smart-default" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared", - "precomputed-hash", - "serde", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - -[[package]] -name = "sweat" -version = "1.2.1" -dependencies = [ - "near-contract-standards", - "near-sdk", - "static_assertions", - "sweat-model", -] - -[[package]] -name = "sweat-model" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "integration-trait", - "integration-utils", - "near-contract-standards", - "near-sdk", - "near-workspaces", -] - -[[package]] -name = "symbolic-common" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" -dependencies = [ - "debugid", - "memmap2", - "stable_deref_trait", - "uuid", -] - -[[package]] -name = "symbolic-debuginfo" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" -dependencies = [ - "bitvec 1.0.1", - "dmsort", - "elementtree", - "fallible-iterator", - "flate2", - "gimli", - "goblin", - "lazy_static", - "lazycell", - "nom", - "nom-supreme", - "parking_lot", - "pdb", - "regex", - "scroll 0.11.0", - "serde", - "serde_json", - "smallvec", - "symbolic-common", - "thiserror", - "wasmparser", - "zip 0.5.13", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" -dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "redox_syscall 0.4.1", - "rustix", - "windows-sys", -] - -[[package]] -name = "termcolor" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - -[[package]] -name = "thiserror" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" -dependencies = [ - "deranged", - "itoa", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" -dependencies = [ - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.28.2" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" -dependencies = [ - "autocfg", - "bytes", - "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "tokio-io-timeout" -version = "1.2.0" +name = "proc-macro-crate" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "pin-project-lite", - "tokio", + "toml_edit", ] [[package]] -name = "tokio-macros" -version = "2.1.0" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ + "proc-macro-error-attr", "proc-macro2", "quote", - "syn 2.0.38", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-retry" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" -dependencies = [ - "pin-project", - "rand 0.8.5", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.0.2", - "toml_datetime", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" -dependencies = [ - "indexmap 2.0.2", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tonic" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" -dependencies = [ - "async-stream", - "async-trait", - "base64 0.13.1", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util 0.6.10", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", + "version_check", ] [[package]] -name = "tonic-build" -version = "0.6.2" +name = "proc-macro-error-attr" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", - "prost-build", "quote", - "syn 1.0.109", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util 0.7.10", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", + "version_check", ] [[package]] -name = "tracing-appender" -version = "0.2.2" +name = "proc-macro2" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ - "crossbeam-channel", - "time", - "tracing-subscriber", + "unicode-ident", ] [[package]] -name = "tracing-attributes" -version = "0.1.27" +name = "quote" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", - "quote", - "syn 2.0.38", ] [[package]] -name = "tracing-core" -version = "0.1.32" +name = "rustversion" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", - "valuable", -] +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] -name = "tracing-futures" -version = "0.2.5" +name = "ryu" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] -name = "tracing-log" -version = "0.1.4" +name = "serde" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ - "log", - "once_cell", - "tracing-core", + "serde_derive", ] [[package]] -name = "tracing-opentelemetry" -version = "0.17.4" +name = "serde_derive" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-log", - "tracing-subscriber", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "tracing-subscriber" -version = "0.3.17" +name = "serde_json" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", + "indexmap 2.0.2", + "itoa", + "ryu", + "serde", ] [[package]] -name = "treediff" -version = "4.0.2" +name = "serde_with" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ + "base64 0.21.5", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.0.2", + "serde", "serde_json", + "serde_with_macros", + "time", ] [[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "uint" -version = "0.9.5" +name = "serde_with_macros" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", + "darling", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "unicode-bidi" -version = "0.3.13" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "unicode-ident" -version = "1.0.12" +name = "strsim" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "strum" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] -name = "unicode-segmentation" -version = "1.10.1" +name = "strum_macros" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] [[package]] -name = "unsafe-libyaml" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" +name = "sweat" +version = "1.2.1" +dependencies = [ + "near-contract-standards", + "near-sdk", + "static_assertions", +] [[package]] -name = "untrusted" -version = "0.9.0" +name = "syn" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] -name = "ureq" -version = "2.8.0" +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ - "base64 0.21.5", - "flate2", - "log", - "once_cell", - "rustls", - "rustls-webpki", - "url", - "webpki-roots", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "url" -version = "2.4.1" +name = "time" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", + "deranged", + "itoa", + "powerfmt", "serde", + "time-core", + "time-macros", ] [[package]] -name = "utf8parse" -version = "0.2.1" +name = "time-core" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] -name = "uuid" -version = "0.8.2" +name = "time-macros" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", +] [[package]] -name = "valuable" -version = "0.1.0" +name = "tinyvec" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] [[package]] -name = "vcpkg" -version = "0.2.15" +name = "tinyvec_macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] -name = "version_check" -version = "0.9.4" +name = "toml_datetime" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] -name = "want" -version = "0.3.1" +name = "toml_edit" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "try-lock", + "indexmap 2.0.2", + "toml_datetime", + "winnow", ] [[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "version_check" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-bindgen" @@ -4633,22 +688,10 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn", "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" version = "0.2.87" @@ -4667,7 +710,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4678,28 +721,6 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" -[[package]] -name = "wasmparser" -version = "0.83.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - [[package]] name = "wee_alloc" version = "0.4.5" @@ -4712,18 +733,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - [[package]] name = "winapi" version = "0.3.9" @@ -4740,15 +749,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -4764,15 +764,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -4838,158 +829,3 @@ checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if 1.0.0", - "windows-sys", -] - -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "xattr" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" -dependencies = [ - "libc", -] - -[[package]] -name = "xml-rs" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" - -[[package]] -name = "zerocopy" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd66a62464e3ffd4e37bd09950c2b9dd6c4f8767380fabba0d523f9a775bc85a" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255c4596d41e6916ced49cfafea18727b24d67878fa180ddfd69b9df34fd1726" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "zeroize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "zeropool-bn" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "crunchy", - "lazy_static", - "rand 0.8.5", - "rustc-hex", -] - -[[package]] -name = "zip" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" -dependencies = [ - "byteorder", - "crc32fast", - "flate2", - "thiserror", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/Cargo.toml b/Cargo.toml index f7c4544..80c46b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,7 @@ [workspace] members = [ "sweat", - "sweat", - "integration-tests", + # "integration-tests", "exploit-stub" ] @@ -16,10 +15,5 @@ async-trait = "0.1.74" near-units = "0.2.0" near-workspaces = "0.10.0" -near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } - -integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "e54dc392ef42837123dd2c0ad19b6d6b815192d7" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "e54dc392ef42837123dd2c0ad19b6d6b815192d7" } - -sweat-model = { path = "model" } +near-sdk = "5.26.1" # { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } +near-contract-standards = "5.26.1" # { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } diff --git a/model/Cargo.toml b/model/Cargo.toml index 8435611..ff54b52 100644 --- a/model/Cargo.toml +++ b/model/Cargo.toml @@ -10,10 +10,8 @@ integration-test = ["dep:integration-utils", "dep:near-workspaces"] [dependencies] anyhow = { workspace = true } async-trait = { workspace = true } -integration-trait = { workspace = true } near-sdk = { workspace = true } near-contract-standards = { workspace = true } -integration-utils = { workspace = true, optional = true } near-workspaces = { workspace = true, optional = true } diff --git a/model/src/lib.rs b/model/src/lib.rs index 4b6f14b..f9dc3a8 100644 --- a/model/src/lib.rs +++ b/model/src/lib.rs @@ -1,6 +1,5 @@ #![allow(clippy::new_ret_no_self, clippy::wrong_self_convention)] -use integration_trait::make_integration_version; use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds}; use near_sdk::{ json_types::{U128, U64}, @@ -12,7 +11,6 @@ pub struct SweatContract<'a> { pub contract: &'a near_workspaces::Contract, } -#[make_integration_version] pub trait SweatApi { fn new(postfix: Option) -> Self; fn add_oracle(&mut self, account_id: &AccountId); @@ -37,7 +35,6 @@ pub trait SweatDefer { } /// Copy of near_sdk trait to use in integration tests -#[make_integration_version] pub trait FungibleTokenCore { #[deposit_one_yocto] fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option); @@ -53,7 +50,6 @@ pub trait FungibleTokenCore { } /// Copy of near_sdk trait to use in integration tests -#[make_integration_version] pub trait StorageManagement { // if `registration_only=true` MUST refund above the minimum balance if the account didn't exist and // refund full deposit if the account exists. @@ -94,7 +90,6 @@ pub trait StorageManagement { fn storage_balance_of(&self, account_id: AccountId) -> Option; } -#[make_integration_version] pub trait IntegrationTestMethods { fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128); } diff --git a/res/sweat.wasm b/res/sweat.wasm index 5f852d4434d79cafe46a8c9cbe75ddcbead14bdc..35850e21e7d8f9a91c48bc0c1afa7e99f584b612 100755 GIT binary patch literal 231922 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%0AT$ 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

~&X;CEx`e&CG5^J5ZlgJ>{s1Oi3I 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

)}QI76$@@U%jVk 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 -> Self; + fn add_oracle(&mut self, account_id: &AccountId); + fn remove_oracle(&mut self, account_id: &AccountId); + fn get_oracles(&self) -> Vec; + fn tge_mint(&mut self, account_id: &AccountId, amount: U128); + fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); + fn burn(&mut self, amount: U128); + fn get_steps_since_tge(&self) -> U64; + fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); + fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; +} + +pub trait RestrictionApi { + fn is_restricted(&self, account_id: &AccountId) -> bool; + fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool); +} + +pub trait SweatDefer { + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()>; +} + +pub struct Payout { + pub amount_for_user: u128, + pub fee: u128, +} + +impl From for Payout { + fn from(value: u128) -> Self { + let fee = (value * 5).div_ceil(100); + + Self { + fee, + amount_for_user: value - fee, + } + } +} diff --git a/sweat/src/core.rs b/sweat/src/core.rs index d477a88..7dea792 100644 --- a/sweat/src/core.rs +++ b/sweat/src/core.rs @@ -2,11 +2,11 @@ use near_contract_standards::{ fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver}, storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, }; -use near_sdk::{env, json_types::U128, near_bindgen, AccountId, PromiseOrValue}; +use near_sdk::{env, json_types::U128, near, AccountId, NearToken, PromiseOrValue}; use crate::{Contract, ContractExt}; -#[near_bindgen] +#[near] impl FungibleTokenCore for Contract { #[payable] fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) { @@ -37,7 +37,7 @@ impl FungibleTokenCore for Contract { } } -#[near_bindgen] +#[near] impl StorageManagement for Contract { #[payable] fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance { @@ -45,7 +45,7 @@ impl StorageManagement for Contract { } #[payable] - fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { self.token.storage_withdraw(amount) } @@ -63,7 +63,7 @@ impl StorageManagement for Contract { } } -#[near_bindgen] +#[near] impl FungibleTokenResolver for Contract { #[private] fn ft_resolve_transfer(&mut self, sender_id: AccountId, receiver_id: AccountId, amount: U128) -> U128 { diff --git a/sweat/src/defer.rs b/sweat/src/defer.rs index 8b848d4..ed5c494 100644 --- a/sweat/src/defer.rs +++ b/sweat/src/defer.rs @@ -1,16 +1,19 @@ use near_contract_standards::fungible_token::events::FtMint; use near_sdk::{ - env, env::panic_str, ext_contract, is_promise_success, json_types::U128, near_bindgen, require, serde_json::json, - AccountId, Gas, Promise, PromiseOrValue, + env::{self, panic_str}, + ext_contract, is_promise_success, + json_types::U128, + near, require, + serde_json::json, + AccountId, Gas, NearToken, Promise, PromiseOrValue, }; -use sweat_model::SweatDefer; -use crate::{internal_deposit, Contract, ContractExt}; +use crate::{api::SweatDefer, internal_deposit, Contract, ContractExt}; -const GAS_FOR_DEFER_CALLBACK: Gas = Gas(5 * Gas::ONE_TERA.0); -const GAS_FOR_DEFER: Gas = Gas(30 * Gas::ONE_TERA.0); +const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); +const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); -#[near_bindgen] +#[near] impl SweatDefer for Contract { fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { require!( @@ -40,16 +43,15 @@ impl SweatDefer for Contract { "amounts": accounts_tokens, }); - let record_batch_for_hold_gas = Gas(env::prepaid_gas() - .0 - .checked_sub(GAS_FOR_DEFER.0) - .unwrap_or_else(|| panic_str("Prepaid gas overflow"))); + let record_batch_for_hold_gas = env::prepaid_gas() + .checked_sub(GAS_FOR_DEFER) + .unwrap_or_else(|| panic_str("Prepaid gas overflow")); Promise::new(holding_account_id.clone()) .function_call( "record_batch_for_hold".to_string(), hold_arguments.to_string().into_bytes(), - 0, + NearToken::ZERO, record_batch_for_hold_gas, ) .then( @@ -71,7 +73,7 @@ pub trait FungibleTokenTransferCallback { fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128); } -#[near_bindgen] +#[near] impl FungibleTokenTransferCallback for Contract { #[private] fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128) { @@ -84,14 +86,14 @@ impl FungibleTokenTransferCallback for Contract { internal_deposit(&mut self.token, &fee_account_id, fee.0); events.push(FtMint { owner_id: &fee_account_id, - amount: &fee, + amount: fee, memo: None, }); internal_deposit(&mut self.token, &receiver_id, amount.0); events.push(FtMint { owner_id: &receiver_id, - amount: &amount, + amount, memo: None, }); diff --git a/sweat/src/integration.rs b/sweat/src/integration.rs index 81a2082..d3d4f18 100644 --- a/sweat/src/integration.rs +++ b/sweat/src/integration.rs @@ -8,7 +8,7 @@ use sweat_model::{IntegrationTestMethods, Payout, SweatApi}; use crate::{Contract, ContractExt}; -#[near_bindgen] +#[near] impl IntegrationTestMethods for Contract { fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128) { let mut total_fee = 0; diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index 4068448..b71b69f 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -1,27 +1,27 @@ #[macro_use] extern crate static_assertions; +use api::{Payout, RestrictionApi, SweatApi}; use near_contract_standards::fungible_token::{ events::{FtBurn, FtMint}, metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, - FungibleToken, + Balance, FungibleToken, }; use near_sdk::{ - borsh::{self, BorshDeserialize, BorshSerialize}, collections::UnorderedSet, env, json_types::{U128, U64}, - near_bindgen, require, AccountId, Balance, PanicOnDefault, + near, require, AccountId, PanicOnDefault, }; -use sweat_model::{Payout, RestrictionApi, SweatApi}; +mod api; mod core; mod defer; mod integration; mod math; -#[near_bindgen] -#[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] +#[near(contract_state)] +#[derive(PanicOnDefault)] pub struct Contract { oracles: UnorderedSet, token: FungibleToken, @@ -29,13 +29,13 @@ pub struct Contract { denylist: UnorderedSet, } -#[near_bindgen] +#[near] impl SweatApi for Contract { #[init] fn new(postfix: Option) -> Self { Self { oracles: UnorderedSet::new(b"s"), - token: FungibleToken::new(b"t", postfix), + token: FungibleToken::new(b"t"), //, postfix), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), } @@ -70,7 +70,7 @@ impl SweatApi for Contract { internal_deposit(&mut self.token, account_id, amount.0); FtMint { owner_id: account_id, - amount: &amount, + amount, memo: None, } .emit(); @@ -88,7 +88,7 @@ impl SweatApi for Contract { let event = FtMint { owner_id: account_id, - amount: steps_count, + amount: *steps_count, memo: None, }; events.push(event); @@ -98,7 +98,7 @@ impl SweatApi for Contract { } } - fn burn(&mut self, amount: &U128) { + fn burn(&mut self, amount: U128) { self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); FtBurn { amount, @@ -132,7 +132,7 @@ impl SweatApi for Contract { for i in 0..steps_batch.len() { events.push(FtMint { owner_id: &steps_batch[i].0, - amount: &sweats[i], + amount: sweats[i], memo: None, }); } @@ -140,7 +140,7 @@ impl SweatApi for Contract { internal_deposit(&mut self.token, &env::predecessor_account_id(), oracle_fee.0); let oracle_event = FtMint { owner_id: &env::predecessor_account_id(), - amount: &oracle_fee, + amount: oracle_fee, memo: None, }; events.push(oracle_event); @@ -153,7 +153,7 @@ impl SweatApi for Contract { } } -#[near_bindgen] +#[near] impl RestrictionApi for Contract { fn is_restricted(&self, account_id: &AccountId) -> bool { self.denylist.contains(account_id) @@ -208,7 +208,7 @@ fn internal_deposit(token: &mut FungibleToken, account_id: &AccountId, amount: B pub const ICON: &str = "data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"; -#[near_bindgen] +#[near] impl FungibleTokenMetadataProvider for Contract { fn ft_metadata(&self) -> FungibleTokenMetadata { FungibleTokenMetadata { From 587267a6354055272ec2b59523d6d902ae9e0301 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 13 May 2026 16:48:56 +0100 Subject: [PATCH 02/46] chore: vendor near-contract-standards --- Cargo.lock | 204 +++- Cargo.toml | 9 +- Makefile | 3 + README.md | 29 + {sweat => contract}/Cargo.lock | 0 {sweat => contract}/Cargo.toml | 0 {sweat => contract}/src/api.rs | 0 {sweat => contract}/src/core.rs | 0 {sweat => contract}/src/defer.rs | 0 {sweat => contract}/src/integration.rs | 0 {sweat => contract}/src/lib.rs | 2 +- {sweat => contract}/src/math.rs | 0 res/sweat.wasm | Bin 231922 -> 202599 bytes scripts/sync_vendor.sh | 101 ++ .../.cargo_vcs_info.json | 6 + vendors/near-contract-standards/CHANGELOG.md | 155 +++ vendors/near-contract-standards/Cargo.lock | 890 ++++++++++++++++++ vendors/near-contract-standards/Cargo.toml | 50 + .../near-contract-standards/Cargo.toml.orig | 31 + vendors/near-contract-standards/README.md | 10 + .../src/contract_metadata.rs | 186 ++++ vendors/near-contract-standards/src/event.rs | 31 + .../src/fungible_token/core.rs | 132 +++ .../src/fungible_token/core_impl.rs | 295 ++++++ .../src/fungible_token/events.rs | 220 +++++ .../src/fungible_token/macros.rs | 115 +++ .../src/fungible_token/metadata.rs | 31 + .../src/fungible_token/mod.rs | 25 + .../src/fungible_token/receiver.rs | 30 + .../src/fungible_token/resolver.rs | 48 + .../src/fungible_token/storage_impl.rs | 116 +++ vendors/near-contract-standards/src/lib.rs | 23 + .../approval/approval_impl.rs | 154 +++ .../approval/approval_receiver.rs | 27 + .../src/non_fungible_token/approval/mod.rs | 133 +++ .../src/non_fungible_token/core/core_impl.rs | 483 ++++++++++ .../src/non_fungible_token/core/mod.rs | 148 +++ .../src/non_fungible_token/core/receiver.rs | 30 + .../src/non_fungible_token/core/resolver.rs | 63 ++ .../enumeration/enumeration_impl.rs | 95 ++ .../src/non_fungible_token/enumeration/mod.rs | 88 ++ .../src/non_fungible_token/events.rs | 226 +++++ .../src/non_fungible_token/macros.rs | 145 +++ .../src/non_fungible_token/metadata.rs | 68 ++ .../src/non_fungible_token/mod.rs | 28 + .../src/non_fungible_token/token.rs | 18 + .../src/non_fungible_token/utils.rs | 56 ++ .../src/storage_management/mod.rs | 120 +++ .../src/upgrade/mod.rs | 79 ++ 49 files changed, 4652 insertions(+), 51 deletions(-) rename {sweat => contract}/Cargo.lock (100%) rename {sweat => contract}/Cargo.toml (100%) rename {sweat => contract}/src/api.rs (100%) rename {sweat => contract}/src/core.rs (100%) rename {sweat => contract}/src/defer.rs (100%) rename {sweat => contract}/src/integration.rs (100%) rename {sweat => contract}/src/lib.rs (99%) rename {sweat => contract}/src/math.rs (100%) create mode 100755 scripts/sync_vendor.sh create mode 100644 vendors/near-contract-standards/.cargo_vcs_info.json create mode 100644 vendors/near-contract-standards/CHANGELOG.md create mode 100644 vendors/near-contract-standards/Cargo.lock create mode 100644 vendors/near-contract-standards/Cargo.toml create mode 100644 vendors/near-contract-standards/Cargo.toml.orig create mode 100644 vendors/near-contract-standards/README.md create mode 100644 vendors/near-contract-standards/src/contract_metadata.rs create mode 100644 vendors/near-contract-standards/src/event.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/core.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/core_impl.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/events.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/macros.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/metadata.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/mod.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/receiver.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/resolver.rs create mode 100644 vendors/near-contract-standards/src/fungible_token/storage_impl.rs create mode 100644 vendors/near-contract-standards/src/lib.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/approval/approval_impl.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/approval/approval_receiver.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/approval/mod.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/core/core_impl.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/core/mod.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/core/receiver.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/core/resolver.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/enumeration/enumeration_impl.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/enumeration/mod.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/events.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/macros.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/metadata.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/mod.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/token.rs create mode 100644 vendors/near-contract-standards/src/non_fungible_token/utils.rs create mode 100644 vendors/near-contract-standards/src/storage_management/mod.rs create mode 100644 vendors/near-contract-standards/src/upgrade/mod.rs diff --git a/Cargo.lock b/Cargo.lock index c70face..d99d81d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,12 +29,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" - [[package]] name = "base64" version = "0.22.1" @@ -163,14 +157,20 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", - "serde", + "serde_core", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "equivalent" version = "1.0.1" @@ -198,9 +198,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "heck" @@ -256,13 +256,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.17.1", "serde", + "serde_core", ] [[package]] @@ -304,6 +305,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +[[package]] +name = "near-abi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49593c9e94454a2368a4c0a511bf4bf1413aff4d23f16e1d8f4e64b5215351" +dependencies = [ + "borsh", + "schemars 0.8.22", + "semver", + "serde", +] + [[package]] name = "near-account-id" version = "2.6.0" @@ -311,14 +324,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" dependencies = [ "borsh", + "schemars 0.8.22", "serde", ] [[package]] name = "near-contract-standards" version = "5.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d55c122f645d1ff85ed64a7b5f7a6440f3240a3c4e1195763d72989973be57ac" dependencies = [ "near-sdk", ] @@ -330,6 +342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "559c33c9c86e05da946358485fa6e7e881a09726f909fbd8bcf357f998d7d03d" dependencies = [ "borsh", + "schemars 0.8.22", "serde", ] @@ -339,15 +352,17 @@ version = "5.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68f78c9d9392f3a0c5acba9e1dd3ea89554804a2c1b533170cc5cce00e483a4e" dependencies = [ - "base64 0.22.1", + "base64", "borsh", "bs58", + "near-abi", "near-account-id", "near-gas", "near-sdk-macros", "near-sys", "near-token", "once_cell", + "schemars 0.8.22", "serde", "serde_json", "serde_with", @@ -384,9 +399,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a8000d5859172ce4cd29d51ae1af18a80571939f2975ffcae2c00d241ef4507" dependencies = [ "borsh", + "schemars 0.8.22", "serde", ] +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + [[package]] name = "num-traits" version = "0.2.17" @@ -451,13 +473,33 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -465,25 +507,82 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] -name = "ryu" -version = "1.0.15" +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn", +] + +[[package]] +name = "semver" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.190" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.190" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", @@ -492,28 +591,33 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.14.0", "itoa", - "ryu", + "memchr", "serde", + "serde_core", + "zmij", ] [[package]] name = "serde_with" -version = "3.4.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" dependencies = [ - "base64 0.21.5", + "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.0.2", + "indexmap 2.14.0", + "schemars 0.8.22", + "schemars 0.9.0", "serde", + "serde_derive", "serde_json", "serde_with_macros", "time", @@ -521,9 +625,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" dependencies = [ "darling", "proc-macro2", @@ -573,9 +677,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -596,30 +700,32 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ + "num-conv", "time-core", ] @@ -650,7 +756,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.14.0", "toml_datetime", "winnow", ] @@ -829,3 +935,9 @@ checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml index 80c46b7..89f7dc8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,9 @@ [workspace] members = [ - "sweat", + "contract", # "integration-tests", - "exploit-stub" + "exploit-stub", + "vendors/near-contract-standards", ] resolver = "2" @@ -15,5 +16,5 @@ async-trait = "0.1.74" near-units = "0.2.0" near-workspaces = "0.10.0" -near-sdk = "5.26.1" # { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -near-contract-standards = "5.26.1" # { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } +near-sdk = "5.26.1" +near-contract-standards = { path = "vendors/near-contract-standards" } diff --git a/Makefile b/Makefile index 293c093..89ad249 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,9 @@ fmt: ##@Chores Format the code using rustfmt nightly. lint: ##@Chores Run lint checks with Clippy. ./scripts/lint.sh +sync: ##@Chores Sync vendored near-contract-standards from upstream and re-apply my_custom_updates.patch. + ./scripts/sync_vendor.sh + HELP_FUN = \ %help; while(<>){push@{$$help{$$2//'options'}},[$$1,$$3] \ if/^([\w-_]+)\s*:.*\#\#(?:@(\w+))?\s(.*)$$/}; \ diff --git a/README.md b/README.md index ffa585d..89190bd 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,35 @@ - Install Rust (>= 1.60.0) `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` - `rustup target add wasm32-unknown-unknown` +#### 🪛 Vendored `near-contract-standards` + +The crate at `vendors/near-contract-standards/` is a vendored copy of the upstream +[`near-contract-standards`](https://crates.io/crates/near-contract-standards) crate with +local modifications (notably `LookupMapAdapter` for the SWEAT account-id storage layout). +**The vendored directory is the source of truth** for our changes — edit it directly, +commit. There is no separate patch file to keep in sync. + +To refresh the vendor from upstream — for example after bumping `near-sdk` in +the workspace `Cargo.toml` — run: + +```bash +make sync +``` + +The script: + +1. Reads the **currently** vendored version from `vendors/near-contract-standards/Cargo.toml`. +2. Downloads that pristine version from crates.io and diffs it against the live vendor + — this captures every local modification, regardless of who made it. +3. Reads the **target** version from `[workspace.dependencies] near-sdk = "..."`. +4. Replaces `vendors/near-contract-standards/` with the target upstream. +5. Re-applies the captured diff. + +If a hunk fails (upstream changed near our modification site), `patch` writes `*.rej` +files and the script aborts. Inspect, resolve manually, commit the resolved state. +The next `make sync` will derive a fresh diff from your resolved vendor — no +separate patch file to regenerate. + #### Build & Run tests ```rust diff --git a/sweat/Cargo.lock b/contract/Cargo.lock similarity index 100% rename from sweat/Cargo.lock rename to contract/Cargo.lock diff --git a/sweat/Cargo.toml b/contract/Cargo.toml similarity index 100% rename from sweat/Cargo.toml rename to contract/Cargo.toml diff --git a/sweat/src/api.rs b/contract/src/api.rs similarity index 100% rename from sweat/src/api.rs rename to contract/src/api.rs diff --git a/sweat/src/core.rs b/contract/src/core.rs similarity index 100% rename from sweat/src/core.rs rename to contract/src/core.rs diff --git a/sweat/src/defer.rs b/contract/src/defer.rs similarity index 100% rename from sweat/src/defer.rs rename to contract/src/defer.rs diff --git a/sweat/src/integration.rs b/contract/src/integration.rs similarity index 100% rename from sweat/src/integration.rs rename to contract/src/integration.rs diff --git a/sweat/src/lib.rs b/contract/src/lib.rs similarity index 99% rename from sweat/src/lib.rs rename to contract/src/lib.rs index b71b69f..3c7c521 100644 --- a/sweat/src/lib.rs +++ b/contract/src/lib.rs @@ -35,7 +35,7 @@ impl SweatApi for Contract { fn new(postfix: Option) -> Self { Self { oracles: UnorderedSet::new(b"s"), - token: FungibleToken::new(b"t"), //, postfix), + token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), } diff --git a/sweat/src/math.rs b/contract/src/math.rs similarity index 100% rename from sweat/src/math.rs rename to contract/src/math.rs diff --git a/res/sweat.wasm b/res/sweat.wasm index 35850e21e7d8f9a91c48bc0c1afa7e99f584b612..9372a93a07536fbb0ef45d10efdf85efeea7772b 100755 GIT binary patch literal 202599 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 z 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 literal 231922 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%0AT$ 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

~&X;CEx`e&CG5^J5ZlgJ>{s1Oi3I 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/` into the given directory. + local version="$1" + local into="$2" + mkdir -p "$into" + curl -fsSL "https://crates.io/api/v1/crates/$CRATE/$version/download" \ + | tar -xz -C "$into" +} + +# 1. Capture local modifications as the diff between live vendor and pristine upstream. +LOCAL_PATCH="" +if [ -d "$TARGET_DIR" ]; then + CURRENT_VERSION=$(grep -E '^version\s*=\s*"[0-9]+\.[0-9]+\.[0-9]+"' "$TARGET_DIR/Cargo.toml" \ + | head -n 1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') + if [ -z "$CURRENT_VERSION" ]; then + echo "❌ Could not determine current vendored version from $TARGET_DIR/Cargo.toml" + exit 1 + fi + echo "📦 Currently vendored: $CRATE@$CURRENT_VERSION" + + echo "⬇️ Downloading pristine $CURRENT_VERSION for diff baseline..." + download_crate "$CURRENT_VERSION" "$TMP_DIR/stage" + + # Stage both trees under the same relative path so diff output has clean prefixes + # (`base/$TARGET_DIR` and `head/$TARGET_DIR`) without regex-escaping concerns. + mkdir -p "$TMP_DIR/base/$(dirname "$TARGET_DIR")" + mv "$TMP_DIR/stage/$CRATE-$CURRENT_VERSION" "$TMP_DIR/base/$TARGET_DIR" + mkdir -p "$TMP_DIR/head/$(dirname "$TARGET_DIR")" + cp -r "$TARGET_DIR" "$TMP_DIR/head/$TARGET_DIR" + + echo "📝 Computing local modifications..." + LOCAL_PATCH="$TMP_DIR/local.patch" + # diff returns 1 when files differ — expected and not an error. + ( cd "$TMP_DIR" && diff -ruN "base/$TARGET_DIR" "head/$TARGET_DIR" ) \ + | sed -e "s|^--- base/|--- a/|" -e "s|^+++ head/|+++ b/|" \ + > "$LOCAL_PATCH" || true + + if [ -s "$LOCAL_PATCH" ]; then + echo " captured $(grep -c '^@@' "$LOCAL_PATCH") hunk(s) of local mods" + else + echo " no local modifications detected" + LOCAL_PATCH="" + fi +fi + +# 2. Download the target upstream version. +echo "⬇️ Downloading $CRATE@$TARGET_VERSION from crates.io..." +download_crate "$TARGET_VERSION" "$TMP_DIR/target" + +# 3. Replace the vendor directory. +echo "🔄 Replacing $TARGET_DIR with $TARGET_VERSION..." +mkdir -p "$(dirname "$TARGET_DIR")" +rm -rf "$TARGET_DIR" +mv "$TMP_DIR/target/$CRATE-$TARGET_VERSION" "$TARGET_DIR" + +# 4. Re-apply local modifications. +if [ -n "$LOCAL_PATCH" ]; then + echo "🛠️ Re-applying local modifications..." + patch -p1 < "$LOCAL_PATCH" +fi + +echo "🎉 Vendor sync complete!" diff --git a/vendors/near-contract-standards/.cargo_vcs_info.json b/vendors/near-contract-standards/.cargo_vcs_info.json new file mode 100644 index 0000000..3a255ba --- /dev/null +++ b/vendors/near-contract-standards/.cargo_vcs_info.json @@ -0,0 +1,6 @@ +{ + "git": { + "sha1": "dfd22bc5939d2d725f8842654fb605b5abdea0a8" + }, + "path_in_vcs": "near-contract-standards" +} \ No newline at end of file diff --git a/vendors/near-contract-standards/CHANGELOG.md b/vendors/near-contract-standards/CHANGELOG.md new file mode 100644 index 0000000..4ab7edc --- /dev/null +++ b/vendors/near-contract-standards/CHANGELOG.md @@ -0,0 +1,155 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [5.25.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.24.1...near-contract-standards-v5.25.0) - 2026-03-26 + +### Added + +- add `ext_self()` and document cross-contract call patterns ([#1504](https://github.com/near/near-sdk-rs/pull/1504)) + +### Other + +- update to Rust edition 2024 ([#1480](https://github.com/near/near-sdk-rs/pull/1480)) + +## [5.24.1](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.24.0...near-contract-standards-v5.24.1) - 2026-02-05 + +### Other + +- *(contract-standards)* added msrv ([#1472](https://github.com/near/near-sdk-rs/pull/1472)) + +## [5.24.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.23.0...near-contract-standards-v5.24.0) - 2025-12-26 + +### Added + +- *(env)* `promise_result_checked()` ([#1456](https://github.com/near/near-sdk-rs/pull/1456)) + +### Other + +- reuse shared TokenId alias in enumeration_impl ([#1445](https://github.com/near/near-sdk-rs/pull/1445)) + +## [5.20.1](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.20.0...near-contract-standards-v5.20.1) - 2025-12-05 + +### Fixed + +- Corrected deploy_code time gate in upgradability standard implementation ([#1429](https://github.com/near/near-sdk-rs/pull/1429)) + +## [5.19.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.18.1...near-contract-standards-v5.19.0) - 2025-12-01 + +### Other + +- avoid String allocation in approvals lookup ([#1422](https://github.com/near/near-sdk-rs/pull/1422)) + +## [5.18.1](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.18.0...near-contract-standards-v5.18.1) - 2025-11-28 + +### Fixed + +- Fixed docs.rs compilation error ([#1415](https://github.com/near/near-sdk-rs/pull/1415)) + +## [5.18.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.17.2...near-contract-standards-v5.18.0) - 2025-11-27 + +### Added + +- be explicit about detached `Promise`s ([#1400](https://github.com/near/near-sdk-rs/pull/1400)) + +### Fixed + +- *(near-contract-standards)* do not distribute remaining gas for ft/nft_resolve_transfer() callback ([#1391](https://github.com/near/near-sdk-rs/pull/1391)) + +## [5.14.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.13.0...near-contract-standards-v5.14.0) - 2025-05-14 + +### Other + +- updates near-* dependencies to 0.30 release ([#1356](https://github.com/near/near-sdk-rs/pull/1356)) + +## [5.13.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.12.0...near-contract-standards-v5.13.0) - 2025-05-05 + +### Other + +- resolves https://github.com/near/NEPs/pull/606/files#r2045175915 ([#1348](https://github.com/near/near-sdk-rs/pull/1348)) + +## [5.12.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.11.0...near-contract-standards-v5.12.0) - 2025-04-10 + +### Added + +- nep330 result wasm path field ([#1344](https://github.com/near/near-sdk-rs/pull/1344)) + +## [5.8.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.7.1...near-contract-standards-v5.8.0) - 2025-02-07 + +### Other + +- *(near-contract-standards)* add `build_info` field (#1297) + +## [5.7.1](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.7.0...near-contract-standards-v5.7.1) - 2025-01-30 + +### Other + +- `__abi-generate` feature in docs.rs (#1286) + +## [5.7.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.6.0...near-contract-standards-v5.7.0) - 2024-12-13 + +### Other + +- add a `cargo doc` job (#1269) +- allow clippy::needless_lifetimes (1.83 more suggestions) (#1267) + +## [5.5.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.4.0...near-contract-standards-v5.5.0) - 2024-09-11 + +### Other + +- Updated near-* dependendencies to v0.26.0. Migrated testing blockchain mock to C-unwind ([#1244](https://github.com/near/near-sdk-rs/pull/1244)) + +## [5.3.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.2.1...near-contract-standards-v5.3.0) - 2024-08-13 + +### Fixed +- Fix storage management error message with proper amount ([#1222](https://github.com/near/near-sdk-rs/pull/1222)) + +## [5.2.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.1.0...near-contract-standards-v5.2.0) - 2024-07-04 + +### Added +- Exported `ext_storage_management` Promise shortcuts, so Storage Management interfaces can be used in contracts to call external contracts using the high-level cross-contract call interfaces ([#1208](https://github.com/near/near-sdk-rs/pull/1208)) +- Exported `ext_nft_*` Promise shortcuts, so NFT interfaces can be re-used in contracts to call external NFT contracts using the high-level cross-contract call interfaces ([#1206](https://github.com/near/near-sdk-rs/pull/1206)) + +## [5.1.0](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.0.0...near-contract-standards-v5.1.0) - 2024-03-28 + +### Added +- Finalize `#[near]` attribute-macro implementation with the support for custom parameters passing to serializer attributes `#[near(serializers = [borsh(...)])]` ([#1158](https://github.com/near/near-sdk-rs/pull/1158)) +- Introduce `#[near]` macro to further streamline contracts development reducing the boilerplate! ([#1142](https://github.com/near/near-sdk-rs/pull/1142)) + +## [5.0.0-alpha.3](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.0.0-alpha.2...near-contract-standards-v5.0.0-alpha.3) - 2024-02-19 + +### Fixed +- Fixed a typo in the storage_deposit refund computation (introduced in 5.0.0-alpha.1 release) ([#1146](https://github.com/near/near-sdk-rs/pull/1146)) + +## [5.0.0-alpha.2](https://github.com/near/near-sdk-rs/compare/near-contract-standards-v5.0.0-alpha.1...near-contract-standards-v5.0.0-alpha.2) - 2024-01-16 + +### Other +- fix new 1.75 warnings ([#1128](https://github.com/near/near-sdk-rs/pull/1128)) +- Re-exported packages cleanup ([#1114](https://github.com/near/near-sdk-rs/pull/1114)) + +## [5.0.0-alpha.1](https://github.com/near/near-sdk-rs/compare/4.1.1...near-contract-standards-v5.0.0-alpha.1) - 2023-11-18 + +### Added +- adding `nep-0330` contract source metadata info ([#1106](https://github.com/near/near-sdk-rs/pull/1106)) + +### Fixed +- remove receiver approval ([#1020](https://github.com/near/near-sdk-rs/pull/1020)) +- rename param `approvals` to `approved_account_ids` ([#1019](https://github.com/near/near-sdk-rs/pull/1019)) +- Properly report an error when Approval Extension is not enabled vs when account is not approved ([#1021](https://github.com/near/near-sdk-rs/pull/1021)) + +### Other +- [**breaking**] Use type-safe NearToken instead of u128/U128 ([#1104](https://github.com/near/near-sdk-rs/pull/1104)) +- migrate to a external near-account-id crate for reusable AccountId type ([#1108](https://github.com/near/near-sdk-rs/pull/1108)) +- Update borsh to 1.0.0 ([#1075](https://github.com/near/near-sdk-rs/pull/1075)) +- Move from Gas to NearGas from near-gas crate ([#1082](https://github.com/near/near-sdk-rs/pull/1082)) +- Deprecate Fungible Token declarative macros. ([#1054](https://github.com/near/near-sdk-rs/pull/1054)) +- Add release-plz to automate releases ([#1069](https://github.com/near/near-sdk-rs/pull/1069)) +- *(contract-standards)* deprecate declarative macros in NFT helpers, promote explicit trait implementations instead ([#1042](https://github.com/near/near-sdk-rs/pull/1042)) +- Added a default method for TokenMetadata ([#978](https://github.com/near/near-sdk-rs/pull/978)) +- Removed the not ready enum type ([#977](https://github.com/near/near-sdk-rs/pull/977)) +- Fix empty owner tokens `start_index` error ([#962](https://github.com/near/near-sdk-rs/pull/962)) diff --git a/vendors/near-contract-standards/Cargo.lock b/vendors/near-contract-standards/Cargo.lock new file mode 100644 index 0000000..7918e4a --- /dev/null +++ b/vendors/near-contract-standards/Cargo.lock @@ -0,0 +1,890 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "borsh" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "cc" +version = "1.2.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", + "quote", + "syn", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "js-sys" +version = "0.3.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.184" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "near-abi" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe0c8cdaf8369d8c78f2577d95673007c7f256c85752a66672be5244e2681a6" +dependencies = [ + "borsh", + "schemars 0.8.22", + "semver", + "serde", +] + +[[package]] +name = "near-account-id" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "near-contract-standards" +version = "5.26.1" +dependencies = [ + "near-sdk", +] + +[[package]] +name = "near-gas" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6fbc2f97dea1fad4289ce70604955fc3421fb7c95c7300aba1d6a3466590f60" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "near-sdk" +version = "5.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f78c9d9392f3a0c5acba9e1dd3ea89554804a2c1b533170cc5cce00e483a4e" +dependencies = [ + "base64", + "borsh", + "bs58", + "near-abi", + "near-account-id", + "near-gas", + "near-sdk-macros", + "near-sys", + "near-token", + "once_cell", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_with", +] + +[[package]] +name = "near-sdk-macros" +version = "5.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0bdc1666723a140e41ec8a14cf0b11b5e3ecf8ab55ed7e66d995c962fbac77" +dependencies = [ + "Inflector", + "darling 0.20.11", + "proc-macro2", + "quote", + "serde", + "serde_json", + "strum", + "strum_macros", + "syn", +] + +[[package]] +name = "near-sys" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c212278351251aa342eab33a9d64f99294bc5784cda10107867a72dda699bb" + +[[package]] +name = "near-token" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34de6b54d82d0790b2a56b677e7b4ecb7f021a7e8559f8611065c890d56cfcda" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "indexmap 2.13.1", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_with" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.1", + "schemars 0.8.22", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +dependencies = [ + "darling 0.21.3", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "time" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" + +[[package]] +name = "time-macros" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.13.1", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "wasm-bindgen" +version = "0.2.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" +dependencies = [ + "memchr", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/vendors/near-contract-standards/Cargo.toml b/vendors/near-contract-standards/Cargo.toml new file mode 100644 index 0000000..b9282b0 --- /dev/null +++ b/vendors/near-contract-standards/Cargo.toml @@ -0,0 +1,50 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2024" +rust-version = "1.86" +name = "near-contract-standards" +version = "5.26.1" +authors = ["Near Inc "] +build = false +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = """ +NEAR smart contracts standard library. +""" +homepage = "https://docs.near.org/" +documentation = "https://docs.rs/near-contract-standards" +readme = "README.md" +categories = ["wasm"] +license = "MIT OR Apache-2.0" +repository = "https://github.com/near/near-sdk-rs" + +[package.metadata.docs.rs] +features = ["abi"] + +[features] +abi = ["near-sdk/__abi-generate"] +default = [] + +[lib] +name = "near_contract_standards" +path = "src/lib.rs" + +[dependencies.near-sdk] +version = "~5.26.1" +features = ["legacy"] +default-features = false + +[dev-dependencies] diff --git a/vendors/near-contract-standards/Cargo.toml.orig b/vendors/near-contract-standards/Cargo.toml.orig new file mode 100644 index 0000000..fa0a036 --- /dev/null +++ b/vendors/near-contract-standards/Cargo.toml.orig @@ -0,0 +1,31 @@ +[package] +name = "near-contract-standards" +version.workspace = true +authors = ["Near Inc "] +edition.workspace = true +license.workspace = true +categories.workspace = true +repository.workspace = true +homepage.workspace = true +rust-version.workspace = true +documentation = "https://docs.rs/near-contract-standards" +description = """ +NEAR smart contracts standard library. +""" + +[dependencies] +near-sdk = { path = "../near-sdk", version = "~5.26.1", default-features = false, features = [ + "legacy", +] } + +[dev-dependencies] +near-sdk = { path = "../near-sdk", default-features = false, features = [ + "unit-testing", +] } + +[features] +default = [] +abi = ["near-sdk/__abi-generate"] + +[package.metadata.docs.rs] +features = ["abi"] diff --git a/vendors/near-contract-standards/README.md b/vendors/near-contract-standards/README.md new file mode 100644 index 0000000..6e4eb44 --- /dev/null +++ b/vendors/near-contract-standards/README.md @@ -0,0 +1,10 @@ +# NEAR library for Rust contract standards + +This cargo provides a set of interfaces and implementations for NEAR's contract standards: + - Upgradability + - Fungible Token (NEP-141). See [example usage](../examples/fungible-token) + +## Changelog + +### `3.1.1` +- Fixed FT macro compilation for Rust `1.51.0` diff --git a/vendors/near-contract-standards/src/contract_metadata.rs b/vendors/near-contract-standards/src/contract_metadata.rs new file mode 100644 index 0000000..1b0ee4c --- /dev/null +++ b/vendors/near-contract-standards/src/contract_metadata.rs @@ -0,0 +1,186 @@ +pub use build_info::BuildInfo; +use near_sdk::serde::{Deserialize, Serialize}; + +/// The struct provides information about deployed contract's source code and supported standards. +/// +/// Contract source metadata follows [**NEP-330 standard**](https://github.com/near/NEPs/blob/master/neps/nep-0330.md) for smart contracts +/// +/// See documentation of [`near_api::types::contract::ContractSourceMetadata`](https://docs.rs/near-api/latest/near_api/types/contract/struct.ContractSourceMetadata.html) +/// and [`near_api::Contract::contract_source_metadata`](https://docs.rs/near-api/latest/near_api/struct.Contract.html#method.contract_source_metadata) +/// on how to query this piece of data from a contract via `near_api` crate +#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] +#[serde(crate = "near_sdk::serde")] +pub struct ContractSourceMetadata { + /// Optional version identifier, typically a semantic version + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let version: Option = + /// // Semantic version + /// Some("1.0.0".into()) + /// # ; + /// ``` + /// ```rust,no_run + /// # let version: Option = + /// // Git commit + /// Some("39f2d2646f2f60e18ab53337501370dc02a5661c".into()) + /// # ; + /// ``` + pub version: Option, + /// Optional URL to source code repository/tree + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let link: Option = + /// // GitHub URL + /// Some("https://github.com/org/repo/tree/8d8a8a0fe86a1d8eb3bce45f04ab1a65fecf5a1b".into()) + /// # ; + /// ``` + /// ```rust,no_run + /// # let link: Option = + /// // GitHub URL + /// Some("https://github.com/near-examples/nft-tutorial".into()) + /// # ; + /// ``` + /// ```rust,no_run + /// # let link: Option = + /// // IPFS CID + /// Some("bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq".into()) + /// # ; + /// ``` + pub link: Option, + /// List of supported NEAR standards (NEPs) with their versions + /// + /// This field is an addition of **1.1.0** **NEP-330** revision + /// + /// ## Examples: + /// + /// This field will always include NEP-330 itself: + /// ```rust,no_run + /// # use near_contract_standards::contract_metadata::Standard; + /// # let link: Vec = + /// // this is always at least 1.1.0 + /// vec![Standard { standard: "nep330".into(), version: "1.1.0".into() }] + /// # ; + /// ``` + /// ```rust,no_run + /// # use near_contract_standards::contract_metadata::Standard; + /// # let link: Vec = + /// vec![Standard { standard: "nep330".into(), version: "1.3.0".into() }] + /// # ; + /// ``` + // it's a guess it was added as 1.1.0 of nep330, [nep330 1.1.0 standard recording](https://www.youtube.com/watch?v=pBLN9UyE6AA) actually discusses nep351 + #[serde(default)] + pub standards: Vec, + /// Optional details that are required for formal contract WASM build reproducibility verification + /// + /// This field is an addition of **1.2.0** **NEP-330** revision + pub build_info: Option, +} + +/// NEAR Standard implementation descriptor following [NEP-330](https://github.com/near/NEPs/blob/master/neps/nep-0330.md) +#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] +#[serde(crate = "near_sdk::serde")] +pub struct Standard { + /// Standard name in lowercase NEP format + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let standard: String = + /// // for fungible tokens + /// "nep141".into() + /// # ; + /// ``` + pub standard: String, + /// Implemented standard version using semantic versioning + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let version: String = + /// // for initial release + /// "1.0.0".into() + /// # ; + /// ``` + pub version: String, +} + +mod build_info { + use near_sdk::serde::{Deserialize, Serialize}; + + /// Defines all required details for formal WASM build reproducibility verification + /// according to [**NEP-330 standard 1.3.0 revision**](https://github.com/near/NEPs/blob/master/neps/nep-0330.md) + #[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] + #[serde(crate = "near_sdk::serde")] + pub struct BuildInfo { + /// Reference to a reproducible build environment docker image + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let build_environment: String = + /// "sourcescan/cargo-near:0.13.3-rust-1.84.0@sha256:722198ddb92d1b82cbfcd3a4a9f7fba6fd8715f4d0b5fb236d8725c4883f97de".into() + /// # ; + /// ``` + pub build_environment: String, + /// The exact command that was used to build the contract, with all the flags + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let build_command: Vec = + /// vec![ + /// "cargo".into(), + /// "near".into(), + /// "build".into(), + /// "non-reproducible-wasm".into(), + /// "--locked".into() + /// ] + /// # ; + /// ``` + pub build_command: Vec, + /// Relative path to contract crate within the source code + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let contract_path: String = + /// "near/omni-prover/wormhole-omni-prover-proxy".into() + /// # ; + /// ``` + /// ```rust,no_run + /// # let contract_path: String = + /// // root of a repo + /// "".into() + /// # ; + /// ``` + pub contract_path: String, + /// Reference to the source code snapshot that was used to build the contract + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let source_code_snapshot: String = + /// "git+https://github.com/org/repo?rev=8d8a8a0fe86a1d8eb3bce45f04ab1a65fecf5a1b".into() + /// # ; + /// ``` + pub source_code_snapshot: String, + /// A path within the build environment, where the result WASM binary has been put + /// during build. + /// This should be a subpath of `/home/near/code` + /// + /// This field is an addition of **1.3.0** **NEP-330** revision + /// + /// ## Examples: + /// + /// ```rust,no_run + /// # let output_wasm_path: Option = + /// Some("/home/near/code/target/near/simple_package.wasm".into()) + /// # ; + /// ``` + pub output_wasm_path: Option, + } +} diff --git a/vendors/near-contract-standards/src/event.rs b/vendors/near-contract-standards/src/event.rs new file mode 100644 index 0000000..6179578 --- /dev/null +++ b/vendors/near-contract-standards/src/event.rs @@ -0,0 +1,31 @@ +use near_sdk::env; +use near_sdk::serde::Serialize; +use near_sdk::serde_json; + +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +#[serde(tag = "standard")] +#[must_use = "don't forget to `.emit()` this event"] +#[serde(rename_all = "snake_case")] +pub(crate) enum NearEvent<'a> { + Nep171(crate::non_fungible_token::events::Nep171Event<'a>), + Nep141(crate::fungible_token::events::Nep141Event<'a>), +} + +impl<'a> NearEvent<'a> { + fn to_json_string(&self) -> String { + // Events cannot fail to serialize so fine to panic on error + #[allow(clippy::redundant_closure)] + serde_json::to_string(self).ok().unwrap_or_else(|| env::abort()) + } + + fn to_json_event_string(&self) -> String { + format!("EVENT_JSON:{}", self.to_json_string()) + } + + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub(crate) fn emit(self) { + near_sdk::env::log_str(&self.to_json_event_string()); + } +} diff --git a/vendors/near-contract-standards/src/fungible_token/core.rs b/vendors/near-contract-standards/src/fungible_token/core.rs new file mode 100644 index 0000000..31d4614 --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/core.rs @@ -0,0 +1,132 @@ +use near_sdk::AccountId; +use near_sdk::PromiseOrValue; +use near_sdk::ext_contract; +use near_sdk::json_types::U128; +/// The core methods for a basic fungible token. Extension standards may be +/// added in addition to this trait. +/// +/// # Examples +/// +/// ## Implementing the trait +/// +/// ``` +/// use near_sdk::{near, PanicOnDefault, AccountId, PromiseOrValue}; +/// use near_sdk::collections::LazyOption; +/// use near_sdk::json_types::U128; +/// use near_contract_standards::fungible_token::{FungibleToken, FungibleTokenCore}; +/// use near_contract_standards::fungible_token::metadata::FungibleTokenMetadata; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// token: FungibleToken, +/// metadata: LazyOption, +/// } +/// +/// #[near] +/// impl FungibleTokenCore for Contract { +/// #[payable] +/// fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) { +/// self.token.ft_transfer(receiver_id, amount, memo) +/// } +/// +/// #[payable] +/// fn ft_transfer_call( +/// &mut self, +/// receiver_id: AccountId, +/// amount: U128, +/// memo: Option, +/// msg: String, +/// ) -> PromiseOrValue { +/// self.token.ft_transfer_call(receiver_id, amount, memo, msg) +/// } +/// +/// fn ft_total_supply(&self) -> U128 { +/// self.token.ft_total_supply() +/// } +/// +/// fn ft_balance_of(&self, account_id: AccountId) -> U128 { +/// self.token.ft_balance_of(account_id) +/// } +/// } +/// ``` +/// +/// ## Cross-contract calls +/// +/// The `#[ext_contract]` annotation on this trait also generates the [`ext_ft_core`] module, +/// which can be used to make type-safe cross-contract calls to **any** contract that +/// implements this interface (e.g. `wrap.near`): +/// +/// ```ignore +/// use near_contract_standards::fungible_token::core::ext_ft_core; +/// use near_sdk::{Gas, NearToken}; +/// +/// // Transfer tokens on an external FT contract +/// ext_ft_core::ext("wrap.near".parse().unwrap()) +/// .with_attached_deposit(NearToken::from_yoctonear(1)) +/// .with_static_gas(Gas::from_tgas(5)) +/// .ft_transfer(receiver_id, amount, memo); +/// +/// // Chain with a callback to the current contract +/// ext_ft_core::ext("wrap.near".parse().unwrap()) +/// .with_attached_deposit(NearToken::from_yoctonear(1)) +/// .with_static_gas(Gas::from_tgas(10)) +/// .ft_transfer(receiver_id, amount, memo) +/// .then( +/// Self::ext_self() +/// .with_static_gas(Gas::from_tgas(5)) +/// .on_ft_transfer_complete() +/// ); +/// ``` +/// +#[ext_contract(ext_ft_core)] +pub trait FungibleTokenCore { + /// Transfers positive `amount` of tokens from the `env::predecessor_account_id` to `receiver_id`. + /// Both accounts must be registered with the contract for transfer to succeed. (See [NEP-145](https://github.com/near/NEPs/discussions/145)) + /// This method must to be able to accept attached deposits, and must not panic on attached deposit. + /// Exactly 1 yoctoNEAR must be attached. + /// See [the Security section](https://github.com/near/NEPs/issues/141#user-content-security) of the standard. + /// + /// Arguments: + /// - `receiver_id` - the account ID of the receiver. + /// - `amount` - the amount of tokens to transfer. Must be a positive number in decimal string representation. + /// - `memo` - an optional string field in a free form to associate a memo with this transfer. + fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option); + + /// Transfers positive `amount` of tokens from the `env::predecessor_account_id` to `receiver_id` account. Then + /// calls `ft_on_transfer` method on `receiver_id` contract and attaches a callback to resolve this transfer. + /// `ft_on_transfer` method must return the amount of tokens unused by the receiver contract, the remaining tokens + /// must be refunded to the `predecessor_account_id` at the resolve transfer callback. + /// + /// Token contract must pass all the remaining unused gas to the `ft_on_transfer` call. + /// + /// Malicious or invalid behavior by the receiver's contract: + /// - If the receiver contract promise fails or returns invalid value, the full transfer amount must be refunded. + /// - If the receiver contract overspent the tokens, and the `receiver_id` balance is lower than the required refund + /// amount, the remaining balance must be refunded. See [the Security section](https://github.com/near/NEPs/issues/141#user-content-security) of the standard. + /// + /// Both accounts must be registered with the contract for transfer to succeed. (See #145) + /// This method must to be able to accept attached deposits, and must not panic on attached deposit. Exactly 1 yoctoNEAR must be attached. See [the Security + /// section](https://github.com/near/NEPs/issues/141#user-content-security) of the standard. + /// + /// Arguments: + /// - `receiver_id` - the account ID of the receiver contract. This contract will be called. + /// - `amount` - the amount of tokens to transfer. Must be a positive number in a decimal string representation. + /// - `memo` - an optional string field in a free form to associate a memo with this transfer. + /// - `msg` - a string message that will be passed to `ft_on_transfer` contract call. + /// + /// Returns a promise which will result in the amount of tokens withdrawn from sender's account. + fn ft_transfer_call( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + msg: String, + ) -> PromiseOrValue; + + /// Returns the total supply of the token in a decimal string representation. + fn ft_total_supply(&self) -> U128; + + /// Returns the balance of the account. If the account doesn't exist must returns `"0"`. + fn ft_balance_of(&self, account_id: AccountId) -> U128; +} diff --git a/vendors/near-contract-standards/src/fungible_token/core_impl.rs b/vendors/near-contract-standards/src/fungible_token/core_impl.rs new file mode 100644 index 0000000..14f0d56 --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/core_impl.rs @@ -0,0 +1,295 @@ +use near_sdk::{ + AccountId, Gas, IntoStorageKey, PromiseOrValue, StorageUsage, assert_one_yocto, + collections::LookupMap, env, json_types::U128, log, near, require, serde_json, +}; + +use crate::fungible_token::{ + core::FungibleTokenCore, + events::{FtBurn, FtTransfer}, + receiver::ext_ft_receiver, + resolver::{FungibleTokenResolver, ext_ft_resolver}, +}; + +const GAS_FOR_RESOLVE_TRANSFER: Gas = Gas::from_tgas(5); + +const ERR_TOTAL_SUPPLY_OVERFLOW: &str = "Total supply overflow"; + +pub type Balance = u128; + +/// Implementation of a FungibleToken standard. +/// Allows to include NEP-141 compatible token to any contract. +/// There are next traits that any contract may implement: +/// - FungibleTokenCore -- interface with ft_transfer methods. FungibleToken provides methods for it. +/// - FungibleTokenMetaData -- return metadata for the token in NEP-148, up to contract to implement. +/// - StorageManager -- interface for NEP-145 for allocating storage per account. FungibleToken provides methods for it. +/// - AccountRegistrar -- interface for an account to register and unregister +/// +/// For example usage, see examples/fungible-token/src/lib.rs. +#[near] +pub struct FungibleToken { + /// sha256(AccountId) | AccountId -> Account balance + pub accounts: LookupMapAdapter, + + /// Total supply of the all token. + pub total_supply: Balance, + + /// The storage size in bytes for one account. + pub account_storage_usage: StorageUsage, +} + +#[near] +pub enum LookupMapKey { + Hash([u8; 32]), + AccountId(String), +} + +#[near] +pub struct LookupMapAdapter { + inner: LookupMap, + skip_hashing_postfix: Option, +} + +impl FungibleToken { + pub fn new(prefix: S, skip_hashing_postfix: Option) -> Self + where + S: IntoStorageKey, + { + let mut this = Self { + accounts: LookupMapAdapter::new(prefix, skip_hashing_postfix), + total_supply: 0, + account_storage_usage: 0, + }; + this.measure_account_storage_usage(); + this + } + + fn measure_account_storage_usage(&mut self) { + let initial_storage_usage = env::storage_usage(); + let tmp_account_id = "a".repeat(64).parse().unwrap(); + self.accounts.insert(&tmp_account_id, &0u128); + self.account_storage_usage = env::storage_usage() - initial_storage_usage; + self.accounts.remove(&tmp_account_id); + } + + pub fn internal_unwrap_balance_of(&self, account_id: &AccountId) -> Balance { + match self.accounts.get(account_id) { + Some(balance) => balance, + None => { + env::panic_str(format!("The account {} is not registered", &account_id).as_str()) + } + } + } + + pub fn internal_deposit(&mut self, account_id: &AccountId, amount: Balance) { + let balance = self.internal_unwrap_balance_of(account_id); + if let Some(new_balance) = balance.checked_add(amount) { + self.accounts.insert(account_id, &new_balance); + self.total_supply = self + .total_supply + .checked_add(amount) + .unwrap_or_else(|| env::panic_str(ERR_TOTAL_SUPPLY_OVERFLOW)); + } else { + env::panic_str("Balance overflow"); + } + } + + pub fn internal_withdraw(&mut self, account_id: &AccountId, amount: Balance) { + let balance = self.internal_unwrap_balance_of(account_id); + if let Some(new_balance) = balance.checked_sub(amount) { + self.accounts.insert(account_id, &new_balance); + self.total_supply = self + .total_supply + .checked_sub(amount) + .unwrap_or_else(|| env::panic_str(ERR_TOTAL_SUPPLY_OVERFLOW)); + } else { + env::panic_str("The account doesn't have enough balance"); + } + } + + pub fn internal_transfer( + &mut self, + sender_id: &AccountId, + receiver_id: &AccountId, + amount: Balance, + memo: Option, + ) { + require!(sender_id != receiver_id, "Sender and receiver should be different"); + require!(amount > 0, "The amount should be a positive number"); + self.internal_withdraw(sender_id, amount); + self.internal_deposit(receiver_id, amount); + FtTransfer { + old_owner_id: sender_id, + new_owner_id: receiver_id, + amount: U128(amount), + memo: memo.as_deref(), + } + .emit(); + } + + pub fn internal_register_account(&mut self, account_id: &AccountId) { + if self.accounts.insert(account_id, &0).is_some() { + env::panic_str("The account is already registered"); + } + } +} + +impl FungibleTokenCore for FungibleToken { + fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) { + assert_one_yocto(); + let sender_id = env::predecessor_account_id(); + let amount: Balance = amount.into(); + self.internal_transfer(&sender_id, &receiver_id, amount, memo); + } + + fn ft_transfer_call( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + msg: String, + ) -> PromiseOrValue { + assert_one_yocto(); + + let sender_id = env::predecessor_account_id(); + let amount: Balance = amount.into(); + self.internal_transfer(&sender_id, &receiver_id, amount, memo); + // Initiating receiver's call and the callback + ext_ft_receiver::ext(receiver_id.clone()) + // forward all remaining gas to `ft_on_transfer` + .with_unused_gas_weight(1) + .ft_on_transfer(sender_id.clone(), amount.into(), msg) + .then( + ext_ft_resolver::ext(env::current_account_id()) + .with_static_gas(GAS_FOR_RESOLVE_TRANSFER) + // do not distribute remaining gas for `ft_resolve_transfer` + .with_unused_gas_weight(0) + .ft_resolve_transfer(sender_id, receiver_id, amount.into()), + ) + .into() + } + + fn ft_total_supply(&self) -> U128 { + self.total_supply.into() + } + + fn ft_balance_of(&self, account_id: AccountId) -> U128 { + self.accounts.get(&account_id).unwrap_or(0).into() + } +} + +impl FungibleToken { + /// Internal method that returns the amount of burned tokens in a corner case when the sender + /// has deleted (unregistered) their account while the `ft_transfer_call` was still in flight. + /// Returns (Used token amount, Burned token amount) + pub fn internal_ft_resolve_transfer( + &mut self, + sender_id: &AccountId, + receiver_id: AccountId, + amount: U128, + ) -> (u128, u128) { + const MAX_RESULT_LENGTH: usize = "\"+340282366920938463463374607431768211455\"".len(); // u128::MAX + + // Get the unused amount from the `ft_on_transfer` call result. + let unused_amount = env::promise_result_checked(0, MAX_RESULT_LENGTH) + .ok() + .and_then(|value| serde_json::from_slice::(&value).ok()) + .unwrap_or(amount) + .0 + .min(amount.0); + + let amount: Balance = amount.into(); + + if unused_amount > 0 { + let receiver_balance = self.accounts.get(&receiver_id).unwrap_or(0); + if receiver_balance > 0 { + let refund_amount = std::cmp::min(receiver_balance, unused_amount); + if let Some(new_receiver_balance) = receiver_balance.checked_sub(refund_amount) { + self.accounts.insert(&receiver_id, &new_receiver_balance); + } else { + env::panic_str("The receiver account doesn't have enough balance"); + } + + if let Some(sender_balance) = self.accounts.get(sender_id) { + if let Some(new_sender_balance) = sender_balance.checked_add(refund_amount) { + self.accounts.insert(sender_id, &new_sender_balance); + } else { + env::panic_str("Sender balance overflow"); + } + + FtTransfer { + old_owner_id: &receiver_id, + new_owner_id: sender_id, + amount: U128(refund_amount), + memo: Some("refund"), + } + .emit(); + let used_amount = amount + .checked_sub(refund_amount) + .unwrap_or_else(|| env::panic_str(ERR_TOTAL_SUPPLY_OVERFLOW)); + return (used_amount, 0); + } else { + // Sender's account was deleted, so we need to burn tokens. + self.total_supply = self + .total_supply + .checked_sub(refund_amount) + .unwrap_or_else(|| env::panic_str(ERR_TOTAL_SUPPLY_OVERFLOW)); + log!("The account of the sender was deleted"); + FtBurn { + owner_id: &receiver_id, + amount: U128(refund_amount), + memo: Some("refund"), + } + .emit(); + return (amount, refund_amount); + } + } + } + (amount, 0) + } +} + +impl FungibleTokenResolver for FungibleToken { + fn ft_resolve_transfer( + &mut self, + sender_id: AccountId, + receiver_id: AccountId, + amount: U128, + ) -> U128 { + self.internal_ft_resolve_transfer(&sender_id, receiver_id, amount).0.into() + } +} + +impl LookupMapAdapter { + fn new(prefix: S, skip_hashing_postfix: Option) -> LookupMapAdapter { + Self { inner: LookupMap::new(prefix), skip_hashing_postfix } + } + + fn hash_key(&self, account: &AccountId) -> LookupMapKey { + if let Some(postfix) = &self.skip_hashing_postfix { + if account.as_str().ends_with(postfix) { + LookupMapKey::AccountId(account.to_string()) + } else { + LookupMapKey::Hash(env::sha256_array(account.as_bytes())) + } + } else { + LookupMapKey::Hash(env::sha256_array(account.as_bytes())) + } + } + + pub fn get(&self, key: &AccountId) -> Option { + self.inner.get(&Self::hash_key(self, key)) + } + + pub fn remove(&mut self, key: &AccountId) -> Option { + self.inner.remove(&Self::hash_key(self, key)) + } + + pub fn insert(&mut self, key: &AccountId, value: &Balance) -> Option { + self.inner.insert(&Self::hash_key(self, key), value) + } + + /// Returns true if the map contains a given key. + pub fn contains_key(&self, key: &AccountId) -> bool { + self.inner.contains_key(&Self::hash_key(self, key)) + } +} diff --git a/vendors/near-contract-standards/src/fungible_token/events.rs b/vendors/near-contract-standards/src/fungible_token/events.rs new file mode 100644 index 0000000..d5487cf --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/events.rs @@ -0,0 +1,220 @@ +//! Standard for nep141 (Fungible Token) events. +//! +//! These events will be picked up by the NEAR indexer. +//! +//! +//! +//! This is an extension of the events format (nep-297): +//! +//! +//! The three events in this standard are [`FtMint`], [`FtTransfer`], and [`FtBurn`]. +//! +//! These events can be logged by calling `.emit()` on them if a single event, or calling +//! [`FtMint::emit_many`], [`FtTransfer::emit_many`], +//! or [`FtBurn::emit_many`] respectively. + +use crate::event::NearEvent; +use near_sdk::AccountIdRef; +use near_sdk::json_types::U128; +use near_sdk::serde::Serialize; + +/// Data to log for an FT mint event. To log this event, call [`.emit()`](FtMint::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct FtMint<'a> { + pub owner_id: &'a AccountIdRef, + pub amount: U128, + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl FtMint<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an FT mint event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`FtMint`] represents the data of each mint. + pub fn emit_many(data: &[FtMint<'_>]) { + new_141_v1(Nep141EventKind::FtMint(data)).emit() + } +} + +/// Data to log for an FT transfer event. To log this event, +/// call [`.emit()`](FtTransfer::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct FtTransfer<'a> { + pub old_owner_id: &'a AccountIdRef, + pub new_owner_id: &'a AccountIdRef, + pub amount: U128, + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl FtTransfer<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an FT transfer event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`FtTransfer`] represents the data of each transfer. + pub fn emit_many(data: &[FtTransfer<'_>]) { + new_141_v1(Nep141EventKind::FtTransfer(data)).emit() + } +} + +/// Data to log for an FT burn event. To log this event, call [`.emit()`](FtBurn::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct FtBurn<'a> { + pub owner_id: &'a AccountIdRef, + pub amount: U128, + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl FtBurn<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an FT burn event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`FtBurn`] represents the data of each burn. + pub fn emit_many<'a>(data: &'a [FtBurn<'a>]) { + new_141_v1(Nep141EventKind::FtBurn(data)).emit() + } +} + +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +pub(crate) struct Nep141Event<'a> { + version: &'static str, + #[serde(flatten)] + event_kind: Nep141EventKind<'a>, +} + +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +#[serde(tag = "event", content = "data")] +#[serde(rename_all = "snake_case")] +#[allow(clippy::enum_variant_names)] +enum Nep141EventKind<'a> { + FtMint(&'a [FtMint<'a>]), + FtTransfer(&'a [FtTransfer<'a>]), + FtBurn(&'a [FtBurn<'a>]), +} + +fn new_141<'a>(version: &'static str, event_kind: Nep141EventKind<'a>) -> NearEvent<'a> { + NearEvent::Nep141(Nep141Event { version, event_kind }) +} + +fn new_141_v1(event_kind: Nep141EventKind) -> NearEvent { + new_141("1.0.0", event_kind) +} + +#[cfg(test)] +mod tests { + use super::*; + use near_sdk::{AccountIdRef, test_utils}; + + #[test] + fn ft_mint() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let amount = U128(100); + FtMint { owner_id, amount, memo: None }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_mint","data":[{"owner_id":"bob","amount":"100"}]}"# + ); + } + + #[test] + fn ft_mints() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let amount = U128(100); + let mint_log = FtMint { owner_id, amount, memo: None }; + FtMint::emit_many(&[ + mint_log, + FtMint { + owner_id: AccountIdRef::new_or_panic("alice"), + amount: U128(200), + memo: Some("has memo"), + }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_mint","data":[{"owner_id":"bob","amount":"100"},{"owner_id":"alice","amount":"200","memo":"has memo"}]}"# + ); + } + + #[test] + fn ft_burn() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let amount = U128(100); + FtBurn { owner_id, amount, memo: None }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_burn","data":[{"owner_id":"bob","amount":"100"}]}"# + ); + } + + #[test] + fn ft_burns() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let amount = U128(100); + FtBurn::emit_many(&[ + FtBurn { + owner_id: AccountIdRef::new_or_panic("alice"), + amount: U128(200), + memo: Some("has memo"), + }, + FtBurn { owner_id, amount, memo: None }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_burn","data":[{"owner_id":"alice","amount":"200","memo":"has memo"},{"owner_id":"bob","amount":"100"}]}"# + ); + } + + #[test] + fn ft_transfer() { + let old_owner_id = AccountIdRef::new_or_panic("bob"); + let new_owner_id = AccountIdRef::new_or_panic("alice"); + let amount = U128(100); + FtTransfer { old_owner_id, new_owner_id, amount, memo: None }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_transfer","data":[{"old_owner_id":"bob","new_owner_id":"alice","amount":"100"}]}"# + ); + } + + #[test] + fn ft_transfers() { + let old_owner_id = AccountIdRef::new_or_panic("bob"); + let new_owner_id = AccountIdRef::new_or_panic("alice"); + let amount = U128(100); + FtTransfer::emit_many(&[ + FtTransfer { + old_owner_id: AccountIdRef::new_or_panic("alice"), + new_owner_id: AccountIdRef::new_or_panic("bob"), + amount: U128(200), + memo: Some("has memo"), + }, + FtTransfer { old_owner_id, new_owner_id, amount, memo: None }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep141","version":"1.0.0","event":"ft_transfer","data":[{"old_owner_id":"alice","new_owner_id":"bob","amount":"200","memo":"has memo"},{"old_owner_id":"bob","new_owner_id":"alice","amount":"100"}]}"# + ); + } +} diff --git a/vendors/near-contract-standards/src/fungible_token/macros.rs b/vendors/near-contract-standards/src/fungible_token/macros.rs new file mode 100644 index 0000000..12d210f --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/macros.rs @@ -0,0 +1,115 @@ +/// The core methods for a basic fungible token. Extension standards may be +/// added in addition to this macro. +#[macro_export] +#[deprecated( + note = "implement the near_contract_standards::fungible_token::{FungibleTokenCore, FungibleTokenResolver} traits manually instead." +)] +macro_rules! impl_fungible_token_core { + ($contract: ident, $token: ident $(, $on_tokens_burned_fn:ident)?) => { + use $crate::fungible_token::core::FungibleTokenCore; + use $crate::fungible_token::resolver::FungibleTokenResolver; + + #[near] + impl FungibleTokenCore for $contract { + #[payable] + fn ft_transfer( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + ) { + self.$token.ft_transfer(receiver_id, amount, memo) + } + + #[payable] + fn ft_transfer_call( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + msg: String, + ) -> PromiseOrValue { + self.$token.ft_transfer_call(receiver_id, amount, memo, msg) + } + + fn ft_total_supply(&self) -> U128 { + self.$token.ft_total_supply() + } + + fn ft_balance_of(&self, account_id: AccountId) -> U128 { + self.$token.ft_balance_of(account_id) + } + } + + #[near] + impl FungibleTokenResolver for $contract { + #[private] + fn ft_resolve_transfer( + &mut self, + sender_id: AccountId, + receiver_id: AccountId, + amount: U128, + ) -> U128 { + let (used_amount, burned_amount) = + self.$token.internal_ft_resolve_transfer(&sender_id, receiver_id, amount); + if burned_amount > 0 { + $(self.$on_tokens_burned_fn(sender_id, burned_amount);)? + } + used_amount.into() + } + } + }; +} + +/// Ensures that when fungible token storage grows by collections adding entries, +/// the storage is be paid by the caller. This ensures that storage cannot grow to a point +/// that the FT contract runs out of Ⓝ. +/// Takes name of the Contract struct, the inner field for the token and optional method name to +/// call when the account was closed. +#[macro_export] +#[deprecated( + note = "implement the near_contract_standards::fungible_token::StorageManagement trait manually instead." +)] +macro_rules! impl_fungible_token_storage { + ($contract: ident, $token: ident $(, $on_account_closed_fn:ident)?) => { + use $crate::storage_management::{ + StorageManagement, StorageBalance, StorageBalanceBounds + }; + + #[near] + impl StorageManagement for $contract { + #[payable] + fn storage_deposit( + &mut self, + account_id: Option, + registration_only: Option, + ) -> StorageBalance { + self.$token.storage_deposit(account_id, registration_only) + } + + #[payable] + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { + self.$token.storage_withdraw(amount) + } + + #[payable] + fn storage_unregister(&mut self, force: Option) -> bool { + #[allow(unused_variables)] + if let Some((account_id, balance)) = self.$token.internal_storage_unregister(force) { + $(self.$on_account_closed_fn(account_id, balance);)? + true + } else { + false + } + } + + fn storage_balance_bounds(&self) -> StorageBalanceBounds { + self.$token.storage_balance_bounds() + } + + fn storage_balance_of(&self, account_id: AccountId) -> Option { + self.$token.storage_balance_of(account_id) + } + } + }; +} diff --git a/vendors/near-contract-standards/src/fungible_token/metadata.rs b/vendors/near-contract-standards/src/fungible_token/metadata.rs new file mode 100644 index 0000000..1eecbbb --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/metadata.rs @@ -0,0 +1,31 @@ +use near_sdk::json_types::Base64VecU8; +use near_sdk::{ext_contract, near, require}; + +pub const FT_METADATA_SPEC: &str = "ft-1.0.0"; + +#[derive(Clone)] +#[near(serializers=[borsh, json])] +pub struct FungibleTokenMetadata { + pub spec: String, + pub name: String, + pub symbol: String, + pub icon: Option, + pub reference: Option, + pub reference_hash: Option, + pub decimals: u8, +} + +#[ext_contract(ext_ft_metadata)] +pub trait FungibleTokenMetadataProvider { + fn ft_metadata(&self) -> FungibleTokenMetadata; +} + +impl FungibleTokenMetadata { + pub fn assert_valid(&self) { + require!(self.spec == FT_METADATA_SPEC); + require!(self.reference.is_some() == self.reference_hash.is_some()); + if let Some(reference_hash) = &self.reference_hash { + require!(reference_hash.0.len() == 32, "Hash has to be 32 bytes"); + } + } +} diff --git a/vendors/near-contract-standards/src/fungible_token/mod.rs b/vendors/near-contract-standards/src/fungible_token/mod.rs new file mode 100644 index 0000000..902c89b --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/mod.rs @@ -0,0 +1,25 @@ +//! Fungible tokens as described in [by the spec](https://nomicon.io/Standards/Tokens/FungibleToken). +//! +//! This module represents a Fungible Token standard. +//! +//! # Examples +//! See [`FungibleTokenCore`] and [`FungibleTokenResolver`] for example usage and [`FungibleToken`] +//! for core standard implementation. +//! +//! # Cross-contract calls +//! The traits in this module are annotated with `#[ext_contract]`, which means they can also be +//! used for type-safe cross-contract calls to external contracts that implement these interfaces. +//! See the documentation on [`FungibleTokenCore`] for examples. + +pub mod core; +pub mod core_impl; +pub mod events; +pub mod macros; +pub mod metadata; +pub mod receiver; +pub mod resolver; +pub mod storage_impl; + +pub use crate::fungible_token::core::FungibleTokenCore; +pub use core_impl::{Balance, FungibleToken}; +pub use resolver::FungibleTokenResolver; diff --git a/vendors/near-contract-standards/src/fungible_token/receiver.rs b/vendors/near-contract-standards/src/fungible_token/receiver.rs new file mode 100644 index 0000000..1fbcd5a --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/receiver.rs @@ -0,0 +1,30 @@ +use near_sdk::json_types::U128; +use near_sdk::{AccountId, PromiseOrValue, ext_contract}; + +#[ext_contract(ext_ft_receiver)] +pub trait FungibleTokenReceiver { + /// Called by fungible token contract after `ft_transfer_call` was initiated by + /// `sender_id` of the given `amount` with the transfer message given in `msg` field. + /// The `amount` of tokens were already transferred to this contract account and ready to be used. + /// + /// The method must return the amount of tokens that are *not* used/accepted by this contract from the transferred + /// amount. Examples: + /// - The transferred amount was `500`, the contract completely takes it and must return `0`. + /// - The transferred amount was `500`, but this transfer call only needs `450` for the action passed in the `msg` + /// field, then the method must return `50`. + /// - The transferred amount was `500`, but the action in `msg` field has expired and the transfer must be + /// cancelled. The method must return `500` or panic. + /// + /// Arguments: + /// - `sender_id` - the account ID that initiated the transfer. + /// - `amount` - the amount of tokens that were transferred to this account in a decimal string representation. + /// - `msg` - a string message that was passed with this transfer call. + /// + /// Returns the amount of unused tokens that should be returned to sender, in a decimal string representation. + fn ft_on_transfer( + &mut self, + sender_id: AccountId, + amount: U128, + msg: String, + ) -> PromiseOrValue; +} diff --git a/vendors/near-contract-standards/src/fungible_token/resolver.rs b/vendors/near-contract-standards/src/fungible_token/resolver.rs new file mode 100644 index 0000000..6ebe784 --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/resolver.rs @@ -0,0 +1,48 @@ +use near_sdk::{AccountId, ext_contract, json_types::U128}; + +/// [`FungibleTokenResolver`] provides token transfer resolve functionality. +/// +/// # Examples +/// +/// ``` +/// use near_sdk::{near, PanicOnDefault, AccountId, log}; +/// use near_sdk::collections::LazyOption; +/// use near_sdk::json_types::U128; +/// use near_contract_standards::fungible_token::{FungibleToken, FungibleTokenResolver}; +/// use near_contract_standards::fungible_token::metadata::FungibleTokenMetadata; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// token: FungibleToken, +/// metadata: LazyOption, +/// } +/// +///#[near] +/// impl FungibleTokenResolver for Contract { +/// #[private] +/// fn ft_resolve_transfer( +/// &mut self, +/// sender_id: AccountId, +/// receiver_id: AccountId, +/// amount: U128, +/// ) -> U128 { +/// let (used_amount, burned_amount) = +/// self.token.internal_ft_resolve_transfer(&sender_id, receiver_id, amount); +/// if burned_amount > 0 { +/// log!("Account @{} burned {}", sender_id, burned_amount); +/// } +/// used_amount.into() +/// } +/// } +/// ``` +/// +#[ext_contract(ext_ft_resolver)] +pub trait FungibleTokenResolver { + fn ft_resolve_transfer( + &mut self, + sender_id: AccountId, + receiver_id: AccountId, + amount: U128, + ) -> U128; +} diff --git a/vendors/near-contract-standards/src/fungible_token/storage_impl.rs b/vendors/near-contract-standards/src/fungible_token/storage_impl.rs new file mode 100644 index 0000000..190dfba --- /dev/null +++ b/vendors/near-contract-standards/src/fungible_token/storage_impl.rs @@ -0,0 +1,116 @@ +use crate::fungible_token::{Balance, FungibleToken}; +use crate::storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}; +use near_sdk::{AccountId, NearToken, Promise, assert_one_yocto, env, log}; + +impl FungibleToken { + /// Internal method that returns the Account ID and the balance in case the account was + /// unregistered. + pub fn internal_storage_unregister( + &mut self, + force: Option, + ) -> Option<(AccountId, Balance)> { + assert_one_yocto(); + let account_id = env::predecessor_account_id(); + let force = force.unwrap_or(false); + if let Some(balance) = self.accounts.get(&account_id) { + if balance == 0 || force { + self.accounts.remove(&account_id); + self.total_supply -= balance; + Promise::new(account_id.clone()) + .transfer( + self.storage_balance_bounds() + .min + .saturating_add(NearToken::from_yoctonear(1)), + ) + .detach(); + Some((account_id, balance)) + } else { + env::panic_str( + "Can't unregister the account with the positive balance without force", + ) + } + } else { + log!("The account {} is not registered", &account_id); + None + } + } + + fn internal_storage_balance_of(&self, account_id: &AccountId) -> Option { + if self.accounts.contains_key(account_id) { + Some(StorageBalance { + total: self.storage_balance_bounds().min, + available: NearToken::from_near(0), + }) + } else { + None + } + } +} + +impl StorageManagement for FungibleToken { + // `registration_only` doesn't affect the implementation for vanilla fungible token. + #[allow(unused_variables)] + fn storage_deposit( + &mut self, + account_id: Option, + registration_only: Option, + ) -> StorageBalance { + let amount = env::attached_deposit(); + let account_id = account_id.unwrap_or_else(env::predecessor_account_id); + if self.accounts.contains_key(&account_id) { + log!("The account is already registered, refunding the deposit"); + if amount > NearToken::from_near(0) { + Promise::new(env::predecessor_account_id()).transfer(amount).detach(); + } + } else { + let min_balance = self.storage_balance_bounds().min; + if amount < min_balance { + env::panic_str("The attached deposit is less than the minimum storage balance"); + } + + self.internal_register_account(&account_id); + let refund = amount.saturating_sub(min_balance); + if refund > NearToken::from_near(0) { + Promise::new(env::predecessor_account_id()).transfer(refund).detach(); + } + } + self.internal_storage_balance_of(&account_id).unwrap() + } + + /// While storage_withdraw normally allows the caller to retrieve `available` balance, the basic + /// Fungible Token implementation sets storage_balance_bounds.min == storage_balance_bounds.max, + /// which means available balance will always be 0. So this implementation: + /// * panics if `amount > 0` + /// * never transfers Ⓝ to caller + /// * returns a `storage_balance` struct if `amount` is 0 + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { + assert_one_yocto(); + let predecessor_account_id = env::predecessor_account_id(); + if let Some(storage_balance) = self.internal_storage_balance_of(&predecessor_account_id) { + match amount { + Some(amount) if amount > NearToken::from_near(0) => { + env::panic_str("The amount is greater than the available storage balance"); + } + _ => storage_balance, + } + } else { + env::panic_str( + format!("The account {} is not registered", &predecessor_account_id).as_str(), + ); + } + } + + fn storage_unregister(&mut self, force: Option) -> bool { + self.internal_storage_unregister(force).is_some() + } + + fn storage_balance_bounds(&self) -> StorageBalanceBounds { + let required_storage_balance = + env::storage_byte_cost().saturating_mul(self.account_storage_usage.into()); + StorageBalanceBounds { min: required_storage_balance, max: Some(required_storage_balance) } + } + + fn storage_balance_of(&self, account_id: AccountId) -> Option { + self.internal_storage_balance_of(&account_id) + } +} diff --git a/vendors/near-contract-standards/src/lib.rs b/vendors/near-contract-standards/src/lib.rs new file mode 100644 index 0000000..edd387d --- /dev/null +++ b/vendors/near-contract-standards/src/lib.rs @@ -0,0 +1,23 @@ +// We want to enable all clippy lints, but some of them generate false positives. +#![allow(clippy::missing_const_for_fn, clippy::redundant_pub_crate)] +#![allow(clippy::needless_lifetimes)] + +pub mod fungible_token; + +/// Non-fungible tokens as described in [by the spec](https://nomicon.io/Standards/Tokens/NonFungibleToken). +pub mod non_fungible_token; + +/// Storage management deals with handling [state storage](https://docs.near.org/docs/concepts/storage-staking) on NEAR. This follows the [storage management standard](https://nomicon.io/Standards/StorageManagement.html). +pub mod storage_management; + +/// This upgrade standard is a use case where a staging area exists for a WASM +/// blob, allowing it to be stored for a period of time before deployed. +#[deprecated( + since = "4.1.0", + note = "This was removed because there is no standard (NEP) for upgradable contracts." +)] +pub mod upgrade; + +pub(crate) mod event; + +pub mod contract_metadata; diff --git a/vendors/near-contract-standards/src/non_fungible_token/approval/approval_impl.rs b/vendors/near-contract-standards/src/non_fungible_token/approval/approval_impl.rs new file mode 100644 index 0000000..5417fbf --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/approval/approval_impl.rs @@ -0,0 +1,154 @@ +use crate::non_fungible_token::NonFungibleToken; +/// Common implementation of the [approval management standard](https://nomicon.io/Standards/NonFungibleToken/ApprovalManagement.html) for NFTs. +/// on the contract/account that has just been approved. This is not required to implement. +use crate::non_fungible_token::approval::NonFungibleTokenApproval; +use crate::non_fungible_token::approval::ext_nft_approval_receiver; +use crate::non_fungible_token::token::TokenId; +use crate::non_fungible_token::utils::{ + assert_at_least_one_yocto, bytes_for_approved_account_id, refund_approved_account_ids, + refund_approved_account_ids_iter, refund_deposit, +}; +use near_sdk::{AccountId, Gas, Promise, assert_one_yocto, env, require}; + +const GAS_FOR_NFT_APPROVE: Gas = Gas::from_tgas(10); + +fn expect_token_found(option: Option) -> T { + option.unwrap_or_else(|| env::panic_str("Token not found")) +} + +fn expect_approval(option: Option) -> T { + option.unwrap_or_else(|| env::panic_str("next_approval_by_id must be set for approval ext")) +} + +impl NonFungibleTokenApproval for NonFungibleToken { + fn nft_approve( + &mut self, + token_id: TokenId, + account_id: AccountId, + msg: Option, + ) -> Option { + assert_at_least_one_yocto(); + let approvals_by_id = self + .approvals_by_id + .as_mut() + .unwrap_or_else(|| env::panic_str("NFT does not support Approval Management")); + + let owner_id = expect_token_found(self.owner_by_id.get(&token_id)); + + require!(env::predecessor_account_id() == owner_id, "Predecessor must be token owner."); + + let next_approval_id_by_id = expect_approval(self.next_approval_id_by_id.as_mut()); + // update HashMap of approvals for this token + let approved_account_ids = &mut approvals_by_id.get(&token_id).unwrap_or_default(); + let approval_id: u64 = next_approval_id_by_id.get(&token_id).unwrap_or(1u64); + let old_approval_id = approved_account_ids.insert(account_id.clone(), approval_id); + + // save updated approvals HashMap to contract's LookupMap + approvals_by_id.insert(&token_id, approved_account_ids); + + // increment next_approval_id for this token + next_approval_id_by_id.insert(&token_id, &(approval_id + 1)); + + // If this approval replaced existing for same account, no storage was used. + // Otherwise, require that enough deposit was attached to pay for storage, and refund + // excess. + let storage_used = + if old_approval_id.is_none() { bytes_for_approved_account_id(&account_id) } else { 0 }; + refund_deposit(storage_used); + + // if given `msg`, schedule call to `nft_on_approve` and return it. Else, return None. + msg.map(|msg| { + ext_nft_approval_receiver::ext(account_id) + .with_static_gas(env::prepaid_gas().saturating_sub(GAS_FOR_NFT_APPROVE)) + .nft_on_approve(token_id, owner_id, approval_id, msg) + }) + } + + fn nft_revoke(&mut self, token_id: TokenId, account_id: AccountId) { + assert_one_yocto(); + let approvals_by_id = self.approvals_by_id.as_mut().unwrap_or_else(|| { + env::panic_str("NFT does not support Approval Management"); + }); + + let owner_id = expect_token_found(self.owner_by_id.get(&token_id)); + let predecessor_account_id = env::predecessor_account_id(); + + require!(predecessor_account_id == owner_id, "Predecessor must be token owner."); + + // if token has no approvals, do nothing + if let Some(approved_account_ids) = &mut approvals_by_id.get(&token_id) { + // if account_id was already not approved, do nothing + if approved_account_ids.remove(&account_id).is_some() { + refund_approved_account_ids_iter( + predecessor_account_id, + core::iter::once(&account_id), + ) + .detach(); + // if this was the last approval, remove the whole HashMap to save space. + if approved_account_ids.is_empty() { + approvals_by_id.remove(&token_id); + } else { + // otherwise, update approvals_by_id with updated HashMap + approvals_by_id.insert(&token_id, approved_account_ids); + } + } + } + } + + fn nft_revoke_all(&mut self, token_id: TokenId) { + assert_one_yocto(); + let approvals_by_id = self.approvals_by_id.as_mut().unwrap_or_else(|| { + env::panic_str("NFT does not support Approval Management"); + }); + + let owner_id = expect_token_found(self.owner_by_id.get(&token_id)); + let predecessor_account_id = env::predecessor_account_id(); + + require!(predecessor_account_id == owner_id, "Predecessor must be token owner."); + + // if token has no approvals, do nothing + if let Some(approved_account_ids) = &mut approvals_by_id.get(&token_id) { + // otherwise, refund owner for storage costs of all approvals... + refund_approved_account_ids(predecessor_account_id, approved_account_ids).detach(); + // ...and remove whole HashMap of approvals + approvals_by_id.remove(&token_id); + } + } + + fn nft_is_approved( + &self, + token_id: TokenId, + approved_account_id: AccountId, + approval_id: Option, + ) -> bool { + expect_token_found(self.owner_by_id.get(&token_id)); + + let approvals_by_id = if let Some(a) = self.approvals_by_id.as_ref() { + a + } else { + // contract does not support approval management + return false; + }; + + let approved_account_ids = if let Some(ids) = approvals_by_id.get(&token_id) { + ids + } else { + // token has no approvals + return false; + }; + + let actual_approval_id = if let Some(id) = approved_account_ids.get(&approved_account_id) { + id + } else { + // account not in approvals HashMap + return false; + }; + + if let Some(given_approval_id) = approval_id { + &given_approval_id == actual_approval_id + } else { + // account approved, no approval_id given + true + } + } +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/approval/approval_receiver.rs b/vendors/near-contract-standards/src/non_fungible_token/approval/approval_receiver.rs new file mode 100644 index 0000000..af7b367 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/approval/approval_receiver.rs @@ -0,0 +1,27 @@ +use crate::non_fungible_token::token::TokenId; +use near_sdk::{AccountId, ext_contract}; + +/// Approval receiver is the trait for the method called (or attempted to be called) when an NFT contract adds an approval for an account. +#[ext_contract(ext_nft_approval_receiver)] +pub trait NonFungibleTokenApprovalReceiver { + /// Respond to notification that contract has been granted approval for a token. + /// + /// Notes + /// * Contract knows the token contract ID from `predecessor_account_id` + /// + /// Arguments: + /// * `token_id`: the token to which this contract has been granted approval + /// * `owner_id`: the owner of the token + /// * `approval_id`: the approval ID stored by NFT contract for this approval. + /// Expected to be a number within the 2^53 limit representable by JSON. + /// * `msg`: specifies information needed by the approved contract in order to + /// handle the approval. Can indicate both a function to call and the + /// parameters to pass to that function. + fn nft_on_approve( + &mut self, + token_id: TokenId, + owner_id: AccountId, + approval_id: u64, + msg: String, + ) -> near_sdk::PromiseOrValue; // TODO: how to make "any"? +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/approval/mod.rs b/vendors/near-contract-standards/src/non_fungible_token/approval/mod.rs new file mode 100644 index 0000000..7a2d874 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/approval/mod.rs @@ -0,0 +1,133 @@ +mod approval_impl; +mod approval_receiver; + +pub use approval_receiver::*; +use near_sdk::ext_contract; + +use crate::non_fungible_token::token::TokenId; +use near_sdk::AccountId; +use near_sdk::Promise; + +/// Trait used when it's desired to have a non-fungible token that has a +/// traditional escrow or approval system. This allows Alice to allow Bob +/// to take only the token with the unique identifier "19" but not others. +/// It should be noted that in the [core non-fungible token standard] there +/// is a method to do "transfer and call" which may be preferred over using +/// an approval management standard in certain use cases. +/// +/// [approval management standard]: https://nomicon.io/Standards/NonFungibleToken/ApprovalManagement.html +/// [core non-fungible token standard]: https://nomicon.io/Standards/NonFungibleToken/Core.html +/// +/// # Examples +/// +/// ``` +/// use std::collections::HashMap; +/// use near_sdk::{PanicOnDefault, AccountId, PromiseOrValue, near, Promise}; +/// use near_contract_standards::non_fungible_token::{TokenId, NonFungibleToken, NonFungibleTokenApproval}; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// tokens: NonFungibleToken, +///} +/// +/// #[near] +/// impl NonFungibleTokenApproval for Contract { +/// #[payable] +/// fn nft_approve(&mut self, token_id: TokenId, account_id: AccountId, msg: Option) -> Option { +/// self.tokens.nft_approve(token_id, account_id, msg) +/// } +/// +/// #[payable] +/// fn nft_revoke(&mut self, token_id: TokenId, account_id: AccountId) { +/// self.tokens.nft_revoke(token_id, account_id); +/// } +/// +/// #[payable] +/// fn nft_revoke_all(&mut self, token_id: TokenId) { +/// self.tokens.nft_revoke_all(token_id); +/// +/// } +/// +/// fn nft_is_approved(&self, token_id: TokenId, approved_account_id: AccountId, approval_id: Option) -> bool { +/// self.tokens.nft_is_approved(token_id, approved_account_id, approval_id) +/// } +/// } +/// ``` +/// +#[ext_contract(ext_nft_approval)] +pub trait NonFungibleTokenApproval { + /// Add an approved account for a specific token. + /// + /// Requirements + /// * Caller of the method must attach a deposit of at least 1 yoctoⓃ for + /// security purposes + /// * Contract MAY require caller to attach larger deposit, to cover cost of + /// storing approver data + /// * Contract MUST panic if called by someone other than token owner + /// * Contract MUST panic if addition would cause `nft_revoke_all` to exceed + /// single-block gas limit + /// * Contract MUST increment approval ID even if re-approving an account + /// * If successfully approved or if had already been approved, and if `msg` is + /// present, contract MUST call `nft_on_approve` on `account_id`. See + /// `nft_on_approve` description below for details. + /// + /// Arguments: + /// * `token_id`: the token for which to add an approval + /// * `account_id`: the account to add to `approvals` + /// * `msg`: optional string to be passed to `nft_on_approve` + /// + /// Returns void, if no `msg` given. Otherwise, returns promise call to + /// `nft_on_approve`, which can resolve with whatever it wants. + fn nft_approve( + &mut self, + token_id: TokenId, + account_id: AccountId, + msg: Option, + ) -> Option; + + /// Revoke an approved account for a specific token. + /// + /// Requirements + /// * Caller of the method must attach a deposit of 1 yoctoⓃ for security + /// purposes + /// * If contract requires >1yN deposit on `nft_approve`, contract + /// MUST refund associated storage deposit when owner revokes approval + /// * Contract MUST panic if called by someone other than token owner + /// + /// Arguments: + /// * `token_id`: the token for which to revoke an approval + /// * `account_id`: the account to remove from `approvals` + fn nft_revoke(&mut self, token_id: TokenId, account_id: AccountId); + + /// Revoke all approved accounts for a specific token. + /// + /// Requirements + /// * Caller of the method must attach a deposit of 1 yoctoⓃ for security + /// purposes + /// * If contract requires >1yN deposit on `nft_approve`, contract + /// MUST refund all associated storage deposit when owner revokes approvals + /// * Contract MUST panic if called by someone other than token owner + /// + /// Arguments: + /// * `token_id`: the token with approvals to revoke + fn nft_revoke_all(&mut self, token_id: TokenId); + + /// Check if a token is approved for transfer by a given account, optionally + /// checking an approval_id + /// + /// Arguments: + /// * `token_id`: the token for which to revoke an approval + /// * `approved_account_id`: the account to check the existence of in `approvals` + /// * `approval_id`: an optional approval ID to check against current approval ID for given account + /// + /// Returns: + /// if `approval_id` given, `true` if `approved_account_id` is approved with given `approval_id` + /// otherwise, `true` if `approved_account_id` is in list of approved accounts + fn nft_is_approved( + &self, + token_id: TokenId, + approved_account_id: AccountId, + approval_id: Option, + ) -> bool; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/core/core_impl.rs b/vendors/near-contract-standards/src/non_fungible_token/core/core_impl.rs new file mode 100644 index 0000000..34dcfd7 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/core/core_impl.rs @@ -0,0 +1,483 @@ +use std::{collections::HashMap, ops::Deref}; + +use near_sdk::{ + AccountId, BorshStorageKey, Gas, IntoStorageKey, PromiseOrValue, StorageUsage, + assert_one_yocto, + borsh::BorshSerialize, + collections::{LookupMap, TreeMap, UnorderedSet}, + env, + json_types::Base64VecU8, + near, require, serde_json, +}; + +use crate::non_fungible_token::{ + core::{NonFungibleTokenCore, receiver::ext_nft_receiver, resolver::ext_nft_resolver}, + events::{NftMint, NftTransfer}, + metadata::TokenMetadata, + token::{Token, TokenId}, + utils::{refund_approved_account_ids, refund_deposit_to_account}, +}; + +use super::resolver::NonFungibleTokenResolver; + +const GAS_FOR_RESOLVE_TRANSFER: Gas = Gas::from_tgas(5); + +/// Implementation of the non-fungible token standard. +/// Allows to include NEP-171 compatible token to any contract. +/// There are next traits that any contract may implement: +/// - NonFungibleTokenCore -- interface with nft_transfer methods. NonFungibleToken provides methods for it. +/// - NonFungibleTokenApproval -- interface with nft_approve methods. NonFungibleToken provides methods for it. +/// - NonFungibleTokenEnumeration -- interface for getting lists of tokens. NonFungibleToken provides methods for it. +/// - NonFungibleTokenMetadata -- return metadata for the token in NEP-177, up to contract to implement. +/// +/// For example usage, see examples/non-fungible-token/src/lib.rs. +#[near] +pub struct NonFungibleToken { + // owner of contract + pub owner_id: AccountId, + + // The storage size in bytes for each new token + pub extra_storage_in_bytes_per_token: StorageUsage, + + // always required + pub owner_by_id: TreeMap, + + // required by metadata extension + pub token_metadata_by_id: Option>, + + // required by enumeration extension + pub tokens_per_owner: Option>>, + + // required by approval extension + pub approvals_by_id: Option>>, + pub next_approval_id_by_id: Option>, +} + +#[derive(BorshStorageKey, BorshSerialize)] +#[borsh(crate = "near_sdk::borsh")] +pub enum StorageKey { + TokensPerOwner { account_hash: Vec }, +} + +impl NonFungibleToken { + pub fn new( + owner_by_id_prefix: Q, + owner_id: AccountId, + token_metadata_prefix: Option, + enumeration_prefix: Option, + approval_prefix: Option, + ) -> Self + where + Q: IntoStorageKey, + R: IntoStorageKey, + S: IntoStorageKey, + T: IntoStorageKey, + { + let (approvals_by_id, next_approval_id_by_id) = if let Some(prefix) = approval_prefix { + let prefix: Vec = prefix.into_storage_key(); + ( + Some(LookupMap::new(prefix.clone())), + Some(LookupMap::new([prefix, "n".into()].concat())), + ) + } else { + (None, None) + }; + + let mut this = Self { + owner_id, + extra_storage_in_bytes_per_token: 0, + owner_by_id: TreeMap::new(owner_by_id_prefix), + token_metadata_by_id: token_metadata_prefix.map(LookupMap::new), + tokens_per_owner: enumeration_prefix.map(LookupMap::new), + approvals_by_id, + next_approval_id_by_id, + }; + this.measure_min_token_storage_cost(); + this + } + + // TODO: does this seem reasonable? + fn measure_min_token_storage_cost(&mut self) { + let initial_storage_usage = env::storage_usage(); + // 64 Length because this is the max account id length + let tmp_token_id = "a".repeat(64); + let tmp_owner_id = "a".repeat(64).parse().unwrap(); + + // 1. set some dummy data + self.owner_by_id.insert(&tmp_token_id, &tmp_owner_id); + if let Some(token_metadata_by_id) = &mut self.token_metadata_by_id { + token_metadata_by_id.insert( + &tmp_token_id, + &TokenMetadata { + title: Some("a".repeat(64)), + description: Some("a".repeat(64)), + media: Some("a".repeat(64)), + media_hash: Some(Base64VecU8::from("a".repeat(64).as_bytes().to_vec())), + copies: Some(1), + issued_at: None, + expires_at: None, + starts_at: None, + updated_at: None, + extra: None, + reference: None, + reference_hash: None, + }, + ); + } + if let Some(tokens_per_owner) = &mut self.tokens_per_owner { + let u = &mut UnorderedSet::new(StorageKey::TokensPerOwner { + account_hash: env::sha256(tmp_owner_id.as_bytes()), + }); + u.insert(&tmp_token_id); + tokens_per_owner.insert(&tmp_owner_id, u); + } + if let Some(approvals_by_id) = &mut self.approvals_by_id { + let mut approvals = HashMap::new(); + approvals.insert(tmp_owner_id.clone(), 1u64); + approvals_by_id.insert(&tmp_token_id, &approvals); + } + if let Some(next_approval_id_by_id) = &mut self.next_approval_id_by_id { + next_approval_id_by_id.insert(&tmp_token_id, &1u64); + } + + // 2. see how much space it took + self.extra_storage_in_bytes_per_token = env::storage_usage() - initial_storage_usage; + + // 3. roll it all back + if let Some(next_approval_id_by_id) = &mut self.next_approval_id_by_id { + next_approval_id_by_id.remove(&tmp_token_id); + } + if let Some(approvals_by_id) = &mut self.approvals_by_id { + approvals_by_id.remove(&tmp_token_id); + } + if let Some(tokens_per_owner) = &mut self.tokens_per_owner { + let mut u = tokens_per_owner.remove(&tmp_owner_id).unwrap(); + u.remove(&tmp_token_id); + } + if let Some(token_metadata_by_id) = &mut self.token_metadata_by_id { + token_metadata_by_id.remove(&tmp_token_id); + } + self.owner_by_id.remove(&tmp_token_id); + } + + /// Transfer token_id from `from` to `to` + /// + /// Do not perform any safety checks or do any logging + pub fn internal_transfer_unguarded( + &mut self, + #[allow(clippy::ptr_arg)] token_id: &TokenId, + from: &AccountId, + to: &AccountId, + ) { + // update owner + self.owner_by_id.insert(token_id, to); + + // if using Enumeration standard, update old & new owner's token lists + if let Some(tokens_per_owner) = &mut self.tokens_per_owner { + // owner_tokens should always exist, so call `unwrap` without guard + let mut owner_tokens = tokens_per_owner.get(from).unwrap_or_else(|| { + env::panic_str("Unable to access tokens per owner in unguarded call.") + }); + owner_tokens.remove(token_id); + if owner_tokens.is_empty() { + tokens_per_owner.remove(from); + } else { + tokens_per_owner.insert(from, &owner_tokens); + } + + let mut receiver_tokens = tokens_per_owner.get(to).unwrap_or_else(|| { + UnorderedSet::new(StorageKey::TokensPerOwner { + account_hash: env::sha256(to.as_bytes()), + }) + }); + receiver_tokens.insert(token_id); + tokens_per_owner.insert(to, &receiver_tokens); + } + } + + /// Transfer from current owner to receiver_id, checking that sender is allowed to transfer. + /// Clear approvals, if approval extension being used. + /// Return previous owner and approvals. + pub fn internal_transfer( + &mut self, + sender_id: &AccountId, + receiver_id: &AccountId, + #[allow(clippy::ptr_arg)] token_id: &TokenId, + approval_id: Option, + memo: Option, + ) -> (AccountId, Option>) { + let owner_id = + self.owner_by_id.get(token_id).unwrap_or_else(|| env::panic_str("Token not found")); + + // clear approvals, if using Approval Management extension + // this will be rolled back by a panic if sending fails + let approved_account_ids = + self.approvals_by_id.as_mut().map(|by_id| by_id.remove(token_id).unwrap_or_default()); + + // check if authorized + let sender_id = if sender_id != &owner_id { + // Panic if approval extension is NOT being used + let app_acc_ids = approved_account_ids + .as_ref() + .unwrap_or_else(|| env::panic_str("Approval extension is disabled")); + + // Approval extension is being used; get approval_id for sender. + let actual_approval_id = app_acc_ids.get(sender_id); + + // Panic if sender not approved at all + if actual_approval_id.is_none() { + env::panic_str("Sender not approved"); + } + + // If approval_id included, check that it matches + require!( + approval_id.is_none() || actual_approval_id == approval_id.as_ref(), + format!( + "The actual approval_id {:?} is different from the given approval_id {:?}", + actual_approval_id, approval_id + ) + ); + Some(sender_id) + } else { + None + }; + + require!(&owner_id != receiver_id, "Current and next owner must differ"); + + self.internal_transfer_unguarded(token_id, &owner_id, receiver_id); + + NonFungibleToken::emit_transfer(&owner_id, receiver_id, token_id, sender_id, memo); + + // return previous owner & approvals + (owner_id, approved_account_ids) + } + + fn emit_transfer( + owner_id: &AccountId, + receiver_id: &AccountId, + token_id: &str, + sender_id: Option<&AccountId>, + memo: Option, + ) { + NftTransfer { + old_owner_id: owner_id, + new_owner_id: receiver_id, + token_ids: &[token_id], + authorized_id: sender_id.filter(|sender_id| *sender_id == owner_id).map(|f| f.deref()), + memo: memo.as_deref(), + } + .emit(); + } + + /// Mint a new token. Not part of official standard, but needed in most situations. + /// Consuming contract expected to wrap this with an `nft_mint` function. + /// + /// Requirements: + /// * Caller must be the `owner_id` set during contract initialization. + /// * Caller of the method must attach a deposit of 1 yoctoⓃ for security purposes. + /// * If contract is using Metadata extension (by having provided `metadata_prefix` during + /// contract initialization), `token_metadata` must be given. + /// * token_id must be unique + /// + /// Returns the newly minted token + #[deprecated(since = "4.0.0", note = "mint is deprecated, please use internal_mint instead.")] + pub fn mint( + &mut self, + token_id: TokenId, + token_owner_id: AccountId, + token_metadata: Option, + ) -> Token { + assert_eq!(env::predecessor_account_id(), self.owner_id, "Unauthorized"); + + self.internal_mint(token_id, token_owner_id, token_metadata) + } + + /// Mint a new token without checking: + /// * Whether the caller id is equal to the `owner_id` + /// * Assumes there will be a refund to the predecessor after covering the storage costs + /// + /// Returns the newly minted token and emits the mint event + pub fn internal_mint( + &mut self, + token_id: TokenId, + token_owner_id: AccountId, + token_metadata: Option, + ) -> Token { + let token = self.internal_mint_with_refund( + token_id, + token_owner_id, + token_metadata, + Some(env::predecessor_account_id()), + ); + NftMint { owner_id: &token.owner_id, token_ids: &[&token.token_id], memo: None }.emit(); + token + } + + /// Mint a new token without checking: + /// * Whether the caller id is equal to the `owner_id` + /// * `refund_id` will transfer the left over balance after storage costs are calculated to the provided account. + /// Typically the account will be the owner. If `None`, will not refund. This is useful for delaying refunding + /// until multiple tokens have been minted. + /// + /// Returns the newly minted token and does not emit the mint event. This allows minting multiple before emitting. + pub fn internal_mint_with_refund( + &mut self, + token_id: TokenId, + token_owner_id: AccountId, + token_metadata: Option, + refund_id: Option, + ) -> Token { + // Remember current storage usage if refund_id is Some + let initial_storage_usage = refund_id.map(|account_id| (account_id, env::storage_usage())); + + if self.token_metadata_by_id.is_some() && token_metadata.is_none() { + env::panic_str("Must provide metadata"); + } + if self.owner_by_id.get(&token_id).is_some() { + env::panic_str("token_id must be unique"); + } + + let owner_id: AccountId = token_owner_id; + + // Core behavior: every token must have an owner + self.owner_by_id.insert(&token_id, &owner_id); + + // Metadata extension: Save metadata, keep variable around to return later. + // Note that check above already panicked if metadata extension in use but no metadata + // provided to call. + self.token_metadata_by_id + .as_mut() + .and_then(|by_id| by_id.insert(&token_id, token_metadata.as_ref().unwrap())); + + // Enumeration extension: Record tokens_per_owner for use with enumeration view methods. + if let Some(tokens_per_owner) = &mut self.tokens_per_owner { + let mut token_ids = tokens_per_owner.get(&owner_id).unwrap_or_else(|| { + UnorderedSet::new(StorageKey::TokensPerOwner { + account_hash: env::sha256(owner_id.as_bytes()), + }) + }); + token_ids.insert(&token_id); + tokens_per_owner.insert(&owner_id, &token_ids); + } + + // Approval Management extension: return empty HashMap as part of Token + let approved_account_ids = + if self.approvals_by_id.is_some() { Some(HashMap::new()) } else { None }; + + if let Some((id, storage_usage)) = initial_storage_usage { + refund_deposit_to_account(env::storage_usage() - storage_usage, id) + } + + // Return any extra attached deposit not used for storage + + Token { token_id, owner_id, metadata: token_metadata, approved_account_ids } + } +} + +impl NonFungibleTokenCore for NonFungibleToken { + fn nft_transfer( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + ) { + assert_one_yocto(); + let sender_id = env::predecessor_account_id(); + self.internal_transfer(&sender_id, &receiver_id, &token_id, approval_id, memo); + } + + fn nft_transfer_call( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + msg: String, + ) -> PromiseOrValue { + assert_one_yocto(); + let sender_id = env::predecessor_account_id(); + let (old_owner, old_approvals) = + self.internal_transfer(&sender_id, &receiver_id, &token_id, approval_id, memo); + // Initiating receiver's call and the callback + ext_nft_receiver::ext(receiver_id.clone()) + // forward all remaining gas to `nft_on_transfer` + .with_unused_gas_weight(1) + .nft_on_transfer(sender_id, old_owner.clone(), token_id.clone(), msg) + .then( + ext_nft_resolver::ext(env::current_account_id()) + .with_static_gas(GAS_FOR_RESOLVE_TRANSFER) + // do not distribute remaining gas for `nft_resolve_transfer` + .with_unused_gas_weight(0) + .nft_resolve_transfer(old_owner, receiver_id, token_id, old_approvals), + ) + .into() + } + + fn nft_token(&self, token_id: TokenId) -> Option { + let owner_id = self.owner_by_id.get(&token_id)?; + let metadata = self.token_metadata_by_id.as_ref().and_then(|by_id| by_id.get(&token_id)); + let approved_account_ids = self + .approvals_by_id + .as_ref() + .and_then(|by_id| by_id.get(&token_id).or_else(|| Some(HashMap::new()))); + Some(Token { token_id, owner_id, metadata, approved_account_ids }) + } +} + +impl NonFungibleTokenResolver for NonFungibleToken { + /// Returns true if token was successfully transferred to `receiver_id`. + fn nft_resolve_transfer( + &mut self, + previous_owner_id: AccountId, + receiver_id: AccountId, + token_id: TokenId, + approved_account_ids: Option>, + ) -> bool { + const MAX_RESULT_LENGTH: usize = "false".len(); + + // Get whether token should be returned + let must_revert = env::promise_result_checked(0, MAX_RESULT_LENGTH) + .ok() + .and_then(|value| serde_json::from_slice(&value).ok()) + .unwrap_or(true); + + // if call succeeded, return early + if !must_revert { + return true; + } + + // OTHERWISE, try to set owner back to previous_owner_id and restore approved_account_ids + + // Check that receiver didn't already transfer it away or burn it. + if let Some(current_owner) = self.owner_by_id.get(&token_id) { + if current_owner != receiver_id { + // The token is not owned by the receiver anymore. Can't return it. + return true; + } + } else { + // The token was burned and doesn't exist anymore. + // Refund storage cost for storing approvals to original owner and return early. + if let Some(approved_account_ids) = approved_account_ids { + refund_approved_account_ids(previous_owner_id, &approved_account_ids).detach(); + } + return true; + }; + + self.internal_transfer_unguarded(&token_id, &receiver_id, &previous_owner_id); + + // If using Approval Management extension, + // 1. revert any approvals receiver already set, refunding storage costs + // 2. reset approvals to what previous owner had set before call to nft_transfer_call + if let Some(by_id) = &mut self.approvals_by_id { + if let Some(receiver_approvals) = by_id.remove(&token_id) { + refund_approved_account_ids(receiver_id.clone(), &receiver_approvals).detach(); + } + if let Some(previous_owner_approvals) = approved_account_ids { + by_id.insert(&token_id, &previous_owner_approvals); + } + } + NonFungibleToken::emit_transfer(&receiver_id, &previous_owner_id, &token_id, None, None); + false + } +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/core/mod.rs b/vendors/near-contract-standards/src/non_fungible_token/core/mod.rs new file mode 100644 index 0000000..3dc7946 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/core/mod.rs @@ -0,0 +1,148 @@ +mod core_impl; + +mod receiver; +mod resolver; + +pub use self::core_impl::*; + +pub use self::receiver::{NonFungibleTokenReceiver, ext_nft_receiver}; +pub use self::resolver::{NonFungibleTokenResolver, ext_nft_resolver}; + +use crate::non_fungible_token::token::{Token, TokenId}; +use near_sdk::AccountId; +use near_sdk::PromiseOrValue; +use near_sdk::ext_contract; + +/// Used for all non-fungible tokens. The specification for the +/// [core non-fungible token standard] lays out the reasoning for each method. +/// It's important to check out [NonFungibleTokenReceiver](crate::non_fungible_token::core::NonFungibleTokenReceiver) +/// and [NonFungibleTokenResolver](crate::non_fungible_token::core::NonFungibleTokenResolver) to +/// understand how the cross-contract call work. +/// +/// [core non-fungible token standard]: +/// +/// # Examples +/// +/// ## Implementing the trait +/// +/// ``` +/// use near_sdk::{PanicOnDefault, AccountId, PromiseOrValue, near}; +/// use near_contract_standards::non_fungible_token::{core::NonFungibleTokenCore, NonFungibleToken, TokenId, Token}; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// tokens: NonFungibleToken, +///} +/// #[near] +/// impl NonFungibleTokenCore for Contract { +/// #[payable] +/// fn nft_transfer(&mut self, receiver_id: AccountId, token_id: TokenId, approval_id: Option, memo: Option) { +/// self.tokens.nft_transfer(receiver_id, token_id, approval_id, memo); +/// } +/// +/// #[payable] +/// fn nft_transfer_call(&mut self, receiver_id: AccountId, token_id: TokenId, approval_id: Option, memo: Option, msg: String) -> PromiseOrValue { +/// self.tokens.nft_transfer_call(receiver_id, token_id, approval_id, memo, msg) +/// } +/// +/// fn nft_token(&self, token_id: TokenId) -> Option { +/// self.tokens.nft_token(token_id) +/// } +///} +/// ``` +/// +/// ## Cross-contract calls +/// +/// The `#[ext_contract]` annotation on this trait also generates the [`ext_nft_core`] module, +/// which can be used to make type-safe cross-contract calls to **any** contract that +/// implements this interface: +/// +/// ```ignore +/// use near_contract_standards::non_fungible_token::core::ext_nft_core; +/// use near_sdk::{Gas, NearToken}; +/// +/// // Transfer an NFT on an external contract +/// ext_nft_core::ext(nft_contract_id) +/// .with_attached_deposit(NearToken::from_yoctonear(1)) +/// .with_static_gas(Gas::from_tgas(5)) +/// .nft_transfer(receiver_id, token_id, None, None); +/// ``` +/// +#[ext_contract(ext_nft_core)] +pub trait NonFungibleTokenCore { + /// Simple transfer. Transfer a given `token_id` from current owner to + /// `receiver_id`. + /// + /// Requirements + /// * Caller of the method must attach a deposit of 1 yoctoⓃ for security purposes + /// * Contract MUST panic if called by someone other than token owner or, + /// if using Approval Management, one of the approved accounts + /// * `approval_id` is for use with Approval Management, + /// see + /// * If using Approval Management, contract MUST nullify approved accounts on + /// successful transfer. + /// * TODO: needed? Both accounts must be registered with the contract for transfer to + /// succeed. See see + /// + /// Arguments: + /// * `receiver_id`: the valid NEAR account receiving the token + /// * `token_id`: the token to transfer + /// * `approval_id`: expected approval ID. A number smaller than + /// 2^53, and therefore representable as JSON. See Approval Management + /// standard for full explanation. + /// * `memo` (optional): for use cases that may benefit from indexing or + /// providing information for a transfer + fn nft_transfer( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + ); + + /// Transfer token and call a method on a receiver contract. A successful + /// workflow will end in a success execution outcome to the callback on the NFT + /// contract at the method `nft_resolve_transfer`. + /// + /// You can think of this as being similar to attaching native NEAR tokens to a + /// function call. It allows you to attach any Non-Fungible Token in a call to a + /// receiver contract. + /// + /// Requirements: + /// * Caller of the method must attach a deposit of 1 yoctoⓃ for security + /// purposes + /// * Contract MUST panic if called by someone other than token owner or, + /// if using Approval Management, one of the approved accounts + /// * The receiving contract must implement `ft_on_transfer` according to the + /// standard. If it does not, FT contract's `ft_resolve_transfer` MUST deal + /// with the resulting failed cross-contract call and roll back the transfer. + /// * Contract MUST implement the behavior described in `ft_resolve_transfer` + /// * `approval_id` is for use with Approval Management extension, see + /// that document for full explanation. + /// * If using Approval Management, contract MUST nullify approved accounts on + /// successful transfer. + /// + /// Arguments: + /// * `receiver_id`: the valid NEAR account receiving the token. + /// * `token_id`: the token to send. + /// * `approval_id`: expected approval ID. A number smaller than + /// 2^53, and therefore representable as JSON. See Approval Management + /// standard for full explanation. + /// * `memo` (optional): for use cases that may benefit from indexing or + /// providing information for a transfer. + /// * `msg`: specifies information needed by the receiving contract in + /// order to properly handle the transfer. Can indicate both a function to + /// call and the parameters to pass to that function. + fn nft_transfer_call( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + msg: String, + ) -> PromiseOrValue; + + /// Returns the token with the given `token_id` or `null` if no such token. + fn nft_token(&self, token_id: TokenId) -> Option; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/core/receiver.rs b/vendors/near-contract-standards/src/non_fungible_token/core/receiver.rs new file mode 100644 index 0000000..348be11 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/core/receiver.rs @@ -0,0 +1,30 @@ +use crate::non_fungible_token::token::TokenId; +use near_sdk::{AccountId, PromiseOrValue, ext_contract}; + +/// Used when an NFT is transferred using `nft_transfer_call`. This trait is implemented on the receiving contract, not on the NFT contract. +#[ext_contract(ext_nft_receiver)] +pub trait NonFungibleTokenReceiver { + /// Take some action after receiving a non-fungible token + /// + /// Requirements: + /// * Contract MUST restrict calls to this function to a set of whitelisted NFT + /// contracts + /// + /// Arguments: + /// * `sender_id`: the sender of `nft_transfer_call` + /// * `previous_owner_id`: the account that owned the NFT prior to it being + /// transferred to this contract, which can differ from `sender_id` if using + /// Approval Management extension + /// * `token_id`: the `token_id` argument given to `nft_transfer_call` + /// * `msg`: information necessary for this contract to know how to process the + /// request. This may include method names and/or arguments. + /// + /// Returns true if token should be returned to `sender_id` + fn nft_on_transfer( + &mut self, + sender_id: AccountId, + previous_owner_id: AccountId, + token_id: TokenId, + msg: String, + ) -> PromiseOrValue; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/core/resolver.rs b/vendors/near-contract-standards/src/non_fungible_token/core/resolver.rs new file mode 100644 index 0000000..565bfb2 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/core/resolver.rs @@ -0,0 +1,63 @@ +use crate::non_fungible_token::token::TokenId; +use near_sdk::{AccountId, ext_contract}; +use std::collections::HashMap; + +/// Used when an NFT is transferred using `nft_transfer_call`. This is the method that's called after `nft_on_transfer`. This trait is implemented on the NFT contract. +/// +/// # Examples +/// +/// ``` +/// use std::collections::HashMap; +/// use near_sdk::{PanicOnDefault, AccountId, PromiseOrValue, near}; +/// use near_contract_standards::non_fungible_token::{NonFungibleToken, NonFungibleTokenResolver, TokenId}; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// tokens: NonFungibleToken, +///} +/// #[near] +/// impl NonFungibleTokenResolver for Contract { +/// #[private] +/// fn nft_resolve_transfer(&mut self, previous_owner_id: AccountId, receiver_id: AccountId, token_id: TokenId, approved_account_ids: Option>) -> bool { +/// self.tokens.nft_resolve_transfer(previous_owner_id, receiver_id, token_id, approved_account_ids) +/// } +/// } +/// ``` +/// +#[ext_contract(ext_nft_resolver)] +pub trait NonFungibleTokenResolver { + /// Finalize an `nft_transfer_call` chain of cross-contract calls. + /// + /// The `nft_transfer_call` process: + /// + /// 1. Sender calls `nft_transfer_call` on FT contract + /// 2. NFT contract transfers token from sender to receiver + /// 3. NFT contract calls `nft_on_transfer` on receiver contract + /// 4+. [receiver contract may make other cross-contract calls] + /// N. NFT contract resolves promise chain with `nft_resolve_transfer`, and may + /// transfer token back to sender + /// + /// Requirements: + /// * Contract MUST forbid calls to this function by any account except self + /// * If promise chain failed, contract MUST revert token transfer + /// * If promise chain resolves with `true`, contract MUST return token to + /// `sender_id` + /// + /// Arguments: + /// * `previous_owner_id`: the owner prior to the call to `nft_transfer_call` + /// * `receiver_id`: the `receiver_id` argument given to `nft_transfer_call` + /// * `token_id`: the `token_id` argument given to `ft_transfer_call` + /// * `approved_account_ids`: if using Approval Management, contract MUST provide + /// set of original approved accounts in this argument, and restore these + /// approved accounts in case of revert. + /// + /// Returns true if token was successfully transferred to `receiver_id`. + fn nft_resolve_transfer( + &mut self, + previous_owner_id: AccountId, + receiver_id: AccountId, + token_id: TokenId, + approved_account_ids: Option>, + ) -> bool; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/enumeration/enumeration_impl.rs b/vendors/near-contract-standards/src/non_fungible_token/enumeration/enumeration_impl.rs new file mode 100644 index 0000000..e2d6679 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/enumeration/enumeration_impl.rs @@ -0,0 +1,95 @@ +use super::NonFungibleTokenEnumeration; +use crate::non_fungible_token::NonFungibleToken; +use crate::non_fungible_token::token::{Token, TokenId}; +use near_sdk::json_types::U128; +use near_sdk::{AccountId, env, require}; + +impl NonFungibleToken { + /// Helper function used by a enumerations methods + /// Note: this method is not exposed publicly to end users + fn enum_get_token(&self, owner_id: AccountId, token_id: TokenId) -> Token { + let metadata = self.token_metadata_by_id.as_ref().and_then(|m| m.get(&token_id)); + let approved_account_ids = self + .approvals_by_id + .as_ref() + .map(|approvals_by_id| approvals_by_id.get(&token_id).unwrap_or_default()); + + Token { token_id, owner_id, metadata, approved_account_ids } + } +} + +impl NonFungibleTokenEnumeration for NonFungibleToken { + fn nft_total_supply(&self) -> U128 { + // An unfortunate cast from the max of TreeMap to the spec + (self.owner_by_id.len() as u128).into() + } + + fn nft_tokens(&self, from_index: Option, limit: Option) -> Vec { + // Get starting index, whether or not it was explicitly given. + // Defaults to 0 based on the spec: + // https://nomicon.io/Standards/NonFungibleToken/Enumeration.html#interface + let start_index: u128 = from_index.map(From::from).unwrap_or_default(); + require!( + (self.owner_by_id.len() as u128) >= start_index, + "Out of bounds, please use a smaller from_index." + ); + let limit = limit.map(|v| v as usize).unwrap_or(usize::MAX); + require!(limit != 0, "Cannot provide limit of 0."); + self.owner_by_id + .iter() + .skip(start_index as usize) + .take(limit) + .map(|(token_id, owner_id)| self.enum_get_token(owner_id, token_id)) + .collect() + } + + fn nft_supply_for_owner(&self, account_id: AccountId) -> U128 { + let tokens_per_owner = self.tokens_per_owner.as_ref().unwrap_or_else(|| { + env::panic_str( + "Could not find tokens_per_owner when calling a method on the \ + enumeration standard.", + ) + }); + tokens_per_owner + .get(&account_id) + .map(|account_tokens| U128::from(account_tokens.len() as u128)) + .unwrap_or(U128(0)) + } + + fn nft_tokens_for_owner( + &self, + account_id: AccountId, + from_index: Option, + limit: Option, + ) -> Vec { + let tokens_per_owner = self.tokens_per_owner.as_ref().unwrap_or_else(|| { + env::panic_str( + "Could not find tokens_per_owner when calling a method on the \ + enumeration standard.", + ) + }); + let token_set = if let Some(token_set) = tokens_per_owner.get(&account_id) { + token_set + } else { + return vec![]; + }; + + if token_set.is_empty() { + return vec![]; + } + + let limit = limit.map(|v| v as usize).unwrap_or(usize::MAX); + require!(limit != 0, "Cannot provide limit of 0."); + let start_index: u128 = from_index.map(From::from).unwrap_or_default(); + require!( + token_set.len() as u128 > start_index, + "Out of bounds, please use a smaller from_index." + ); + token_set + .iter() + .skip(start_index as usize) + .take(limit) + .map(|token_id| self.enum_get_token(account_id.clone(), token_id)) + .collect() + } +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/enumeration/mod.rs b/vendors/near-contract-standards/src/non_fungible_token/enumeration/mod.rs new file mode 100644 index 0000000..eb5d3a0 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/enumeration/mod.rs @@ -0,0 +1,88 @@ +mod enumeration_impl; + +use crate::non_fungible_token::token::Token; +use near_sdk::json_types::U128; +use near_sdk::{AccountId, ext_contract}; + +/// Offers methods helpful in determining account ownership of NFTs and provides a way to page through NFTs per owner, determine total supply, etc. +/// +/// # Examples +/// +/// ``` +/// use std::collections::HashMap; +/// use near_sdk::{PanicOnDefault, AccountId, PromiseOrValue, near, Promise}; +/// use near_contract_standards::non_fungible_token::{NonFungibleToken, NonFungibleTokenEnumeration, TokenId, Token}; +/// use near_sdk::json_types::U128; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// tokens: NonFungibleToken, +///} +/// +/// #[near] +/// impl NonFungibleTokenEnumeration for Contract { +/// fn nft_total_supply(&self) -> U128 { +/// self.tokens.nft_total_supply() +/// } +/// +/// fn nft_tokens(&self, from_index: Option, limit: Option) -> Vec { +/// self.tokens.nft_tokens(from_index, limit) +/// } +/// +/// fn nft_supply_for_owner(&self, account_id: AccountId) -> U128 { +/// self.tokens.nft_supply_for_owner(account_id) +/// } +/// +/// fn nft_tokens_for_owner(&self, account_id: AccountId, from_index: Option, limit: Option) -> Vec { +/// self.tokens.nft_tokens_for_owner(account_id, from_index, limit) +/// } +/// } +/// ``` +/// +#[ext_contract(ext_nft_enumeration)] +pub trait NonFungibleTokenEnumeration { + /// Returns the total supply of non-fungible tokens as a string representing an + /// unsigned 128-bit integer to avoid JSON number limit of 2^53. + fn nft_total_supply(&self) -> U128; + + /// Get a list of all tokens + /// + /// Arguments: + /// * `from_index`: a string representing an unsigned 128-bit integer, + /// representing the starting index of tokens to return + /// * `limit`: the maximum number of tokens to return + /// + /// Returns an array of Token objects, as described in Core standard + fn nft_tokens( + &self, + from_index: Option, // default: "0" + limit: Option, // default: unlimited (could fail due to gas limit) + ) -> Vec; + + /// Get number of tokens owned by a given account + /// + /// Arguments: + /// * `account_id`: a valid NEAR account + /// + /// Returns the number of non-fungible tokens owned by given `account_id` as + /// a string representing the value as an unsigned 128-bit integer to avoid JSON + /// number limit of 2^53. + fn nft_supply_for_owner(&self, account_id: AccountId) -> U128; + + /// Get list of all tokens owned by a given account + /// + /// Arguments: + /// * `account_id`: a valid NEAR account + /// * `from_index`: a string representing an unsigned 128-bit integer, + /// representing the starting index of tokens to return + /// * `limit`: the maximum number of tokens to return + /// + /// Returns a paginated list of all tokens owned by this account + fn nft_tokens_for_owner( + &self, + account_id: AccountId, + from_index: Option, // default: "0" + limit: Option, // default: unlimited (could fail due to gas limit) + ) -> Vec; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/events.rs b/vendors/near-contract-standards/src/non_fungible_token/events.rs new file mode 100644 index 0000000..bf4417c --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/events.rs @@ -0,0 +1,226 @@ +//! Standard for nep171 (Non-Fungible Token) events. +//! +//! These events will be picked up by the NEAR indexer. +//! +//! +//! +//! This is an extension of the events format (nep-297): +//! +//! +//! The three events in this standard are [`NftMint`], [`NftTransfer`], and [`NftBurn`]. +//! +//! These events can be logged by calling `.emit()` on them if a single event, or calling +//! [`NftMint::emit_many`], [`NftTransfer::emit_many`], +//! or [`NftBurn::emit_many`] respectively. + +use crate::event::NearEvent; +use near_sdk::AccountIdRef; +use near_sdk::serde::Serialize; + +/// Data to log for an NFT mint event. To log this event, call [`.emit()`](NftMint::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct NftMint<'a> { + pub owner_id: &'a AccountIdRef, + pub token_ids: &'a [&'a str], + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl NftMint<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an nft mint event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`NftMint`] represents the data of each mint. + pub fn emit_many(data: &[NftMint<'_>]) { + new_171_v1(Nep171EventKind::NftMint(data)).emit() + } +} + +/// Data to log for an NFT transfer event. To log this event, +/// call [`.emit()`](NftTransfer::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct NftTransfer<'a> { + pub old_owner_id: &'a AccountIdRef, + pub new_owner_id: &'a AccountIdRef, + pub token_ids: &'a [&'a str], + #[serde(skip_serializing_if = "Option::is_none")] + pub authorized_id: Option<&'a AccountIdRef>, + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl NftTransfer<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an nft transfer event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`NftTransfer`] represents the data of each transfer. + pub fn emit_many(data: &[NftTransfer<'_>]) { + new_171_v1(Nep171EventKind::NftTransfer(data)).emit() + } +} + +/// Data to log for an NFT burn event. To log this event, call [`.emit()`](NftBurn::emit). +#[must_use] +#[derive(Serialize, Debug, Clone)] +#[serde(crate = "near_sdk::serde")] +pub struct NftBurn<'a> { + pub owner_id: &'a AccountIdRef, + pub token_ids: &'a [&'a str], + #[serde(skip_serializing_if = "Option::is_none")] + pub authorized_id: Option<&'a AccountIdRef>, + #[serde(skip_serializing_if = "Option::is_none")] + pub memo: Option<&'a str>, +} + +impl NftBurn<'_> { + /// Logs the event to the host. This is required to ensure that the event is triggered + /// and to consume the event. + pub fn emit(self) { + Self::emit_many(&[self]) + } + + /// Emits an nft burn event, through [`env::log_str`](near_sdk::env::log_str), + /// where each [`NftBurn`] represents the data of each burn. + pub fn emit_many<'a>(data: &'a [NftBurn<'a>]) { + new_171_v1(Nep171EventKind::NftBurn(data)).emit() + } +} + +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +pub(crate) struct Nep171Event<'a> { + version: &'static str, + #[serde(flatten)] + event_kind: Nep171EventKind<'a>, +} + +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +#[serde(tag = "event", content = "data")] +#[serde(rename_all = "snake_case")] +#[allow(clippy::enum_variant_names)] +enum Nep171EventKind<'a> { + NftMint(&'a [NftMint<'a>]), + NftTransfer(&'a [NftTransfer<'a>]), + NftBurn(&'a [NftBurn<'a>]), +} + +fn new_171<'a>(version: &'static str, event_kind: Nep171EventKind<'a>) -> NearEvent<'a> { + NearEvent::Nep171(Nep171Event { version, event_kind }) +} + +fn new_171_v1(event_kind: Nep171EventKind) -> NearEvent { + new_171("1.0.0", event_kind) +} + +#[cfg(test)] +mod tests { + use super::*; + use near_sdk::test_utils; + + #[test] + fn nft_mint() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let token_ids = &["0", "1"]; + NftMint { owner_id, token_ids, memo: None }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_mint","data":[{"owner_id":"bob","token_ids":["0","1"]}]}"# + ); + } + + #[test] + fn nft_mints() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let token_ids = &["0", "1"]; + let mint_log = NftMint { owner_id, token_ids, memo: None }; + NftMint::emit_many(&[ + mint_log, + NftMint { + owner_id: AccountIdRef::new_or_panic("alice"), + token_ids: &["2", "3"], + memo: Some("has memo"), + }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_mint","data":[{"owner_id":"bob","token_ids":["0","1"]},{"owner_id":"alice","token_ids":["2","3"],"memo":"has memo"}]}"# + ); + } + + #[test] + fn nft_burn() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let token_ids = &["0", "1"]; + NftBurn { owner_id, token_ids, authorized_id: None, memo: None }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_burn","data":[{"owner_id":"bob","token_ids":["0","1"]}]}"# + ); + } + + #[test] + fn nft_burns() { + let owner_id = AccountIdRef::new_or_panic("bob"); + let token_ids = &["0", "1"]; + NftBurn::emit_many(&[ + NftBurn { + owner_id: AccountIdRef::new_or_panic("alice"), + token_ids: &["2", "3"], + authorized_id: Some(AccountIdRef::new_or_panic("bob")), + memo: Some("has memo"), + }, + NftBurn { owner_id, token_ids, authorized_id: None, memo: None }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_burn","data":[{"owner_id":"alice","token_ids":["2","3"],"authorized_id":"bob","memo":"has memo"},{"owner_id":"bob","token_ids":["0","1"]}]}"# + ); + } + + #[test] + fn nft_transfer() { + let old_owner_id = AccountIdRef::new_or_panic("bob"); + let new_owner_id = AccountIdRef::new_or_panic("alice"); + let token_ids = &["0", "1"]; + NftTransfer { old_owner_id, new_owner_id, token_ids, authorized_id: None, memo: None } + .emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_transfer","data":[{"old_owner_id":"bob","new_owner_id":"alice","token_ids":["0","1"]}]}"# + ); + } + + #[test] + fn nft_transfers() { + let old_owner_id = AccountIdRef::new_or_panic("bob"); + let new_owner_id = AccountIdRef::new_or_panic("alice"); + let token_ids = &["0", "1"]; + NftTransfer::emit_many(&[ + NftTransfer { + old_owner_id: AccountIdRef::new_or_panic("alice"), + new_owner_id: AccountIdRef::new_or_panic("bob"), + token_ids: &["2", "3"], + authorized_id: Some(AccountIdRef::new_or_panic("bob")), + memo: Some("has memo"), + }, + NftTransfer { old_owner_id, new_owner_id, token_ids, authorized_id: None, memo: None }, + ]); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"nep171","version":"1.0.0","event":"nft_transfer","data":[{"old_owner_id":"alice","new_owner_id":"bob","token_ids":["2","3"],"authorized_id":"bob","memo":"has memo"},{"old_owner_id":"bob","new_owner_id":"alice","token_ids":["0","1"]}]}"# + ); + } +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/macros.rs b/vendors/near-contract-standards/src/non_fungible_token/macros.rs new file mode 100644 index 0000000..e16b8b3 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/macros.rs @@ -0,0 +1,145 @@ +/// The core methods for a basic non-fungible token. Extension standards may be +/// added in addition to this macro. +#[macro_export] +#[deprecated( + note = "implement the near_contract_standards::non_fungible_token::NonFungibleTokenCore and near_contract_standards::non_fungible_token::NonFungibleTokenResolver traits manually instead." +)] +macro_rules! impl_non_fungible_token_core { + ($contract: ident, $token: ident) => { + use $crate::non_fungible_token::core::NonFungibleTokenCore; + use $crate::non_fungible_token::core::NonFungibleTokenResolver; + + #[near] + impl NonFungibleTokenCore for $contract { + #[payable] + fn nft_transfer( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + ) { + self.$token.nft_transfer(receiver_id, token_id, approval_id, memo) + } + + #[payable] + fn nft_transfer_call( + &mut self, + receiver_id: AccountId, + token_id: TokenId, + approval_id: Option, + memo: Option, + msg: String, + ) -> PromiseOrValue { + self.$token.nft_transfer_call(receiver_id, token_id, approval_id, memo, msg) + } + + fn nft_token(&self, token_id: TokenId) -> Option { + self.$token.nft_token(token_id) + } + } + + #[near] + impl NonFungibleTokenResolver for $contract { + #[private] + fn nft_resolve_transfer( + &mut self, + previous_owner_id: AccountId, + receiver_id: AccountId, + token_id: TokenId, + approved_account_ids: Option>, + ) -> bool { + self.$token.nft_resolve_transfer( + previous_owner_id, + receiver_id, + token_id, + approved_account_ids, + ) + } + } + }; +} + +/// Non-fungible token approval management allows for an escrow system where +/// multiple approvals per token exist. +#[macro_export] +#[deprecated( + note = "implement the near_contract_standards::non_fungible_token::NonFungibleTokenApproval trait manually instead." +)] +macro_rules! impl_non_fungible_token_approval { + ($contract: ident, $token: ident) => { + use $crate::non_fungible_token::approval::NonFungibleTokenApproval; + + #[near] + impl NonFungibleTokenApproval for $contract { + #[payable] + fn nft_approve( + &mut self, + token_id: TokenId, + account_id: AccountId, + msg: Option, + ) -> Option { + self.$token.nft_approve(token_id, account_id, msg) + } + + #[payable] + fn nft_revoke(&mut self, token_id: TokenId, account_id: AccountId) { + self.$token.nft_revoke(token_id, account_id) + } + + #[payable] + fn nft_revoke_all(&mut self, token_id: TokenId) { + self.$token.nft_revoke_all(token_id) + } + + fn nft_is_approved( + &self, + token_id: TokenId, + approved_account_id: AccountId, + approval_id: Option, + ) -> bool { + self.$token.nft_is_approved(token_id, approved_account_id, approval_id) + } + } + }; +} + +/// Non-fungible enumeration adds the extension standard offering several +/// view-only methods to get token supply, tokens per owner, etc. +#[macro_export] +#[deprecated( + note = "implement the near_contract_standards::non_fungible_token::NonFungibleTokenEnumeration trait manually instead." +)] +macro_rules! impl_non_fungible_token_enumeration { + ($contract: ident, $token: ident) => { + use $crate::non_fungible_token::enumeration::NonFungibleTokenEnumeration; + + #[near] + impl NonFungibleTokenEnumeration for $contract { + fn nft_total_supply(&self) -> near_sdk::json_types::U128 { + self.$token.nft_total_supply() + } + + fn nft_tokens( + &self, + from_index: Option, + limit: Option, + ) -> Vec { + self.$token.nft_tokens(from_index, limit) + } + + fn nft_supply_for_owner(&self, account_id: AccountId) -> near_sdk::json_types::U128 { + self.$token.nft_supply_for_owner(account_id) + } + + fn nft_tokens_for_owner( + &self, + account_id: AccountId, + from_index: Option, + limit: Option, + ) -> Vec { + self.$token.nft_tokens_for_owner(account_id, from_index, limit) + } + } + }; +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/metadata.rs b/vendors/near-contract-standards/src/non_fungible_token/metadata.rs new file mode 100644 index 0000000..b82babe --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/metadata.rs @@ -0,0 +1,68 @@ +use near_sdk::json_types::Base64VecU8; +use near_sdk::{ext_contract, near, require}; + +/// This spec can be treated like a version of the standard. +pub const NFT_METADATA_SPEC: &str = "nft-1.0.0"; + +/// Metadata for the NFT contract itself. +#[derive(Clone, Debug, PartialEq, Eq)] +#[near(serializers=[borsh, json])] +pub struct NFTContractMetadata { + pub spec: String, // required, essentially a version like "nft-1.0.0" + pub name: String, // required, ex. "Mosaics" + pub symbol: String, // required, ex. "MOSIAC" + pub icon: Option, // Data URL + pub base_uri: Option, // Centralized gateway known to have reliable access to decentralized storage assets referenced by `reference` or `media` URLs + pub reference: Option, // URL to a JSON file with more info + pub reference_hash: Option, // Base64-encoded sha256 hash of JSON from reference field. Required if `reference` is included. +} + +#[near(serializers=[borsh, json])] +#[derive(Debug, Clone, Default, PartialEq, Eq)] +pub struct TokenMetadata { + pub title: Option, // ex. "Arch Nemesis: Mail Carrier" or "Parcel #5055" + pub description: Option, // free-form description + pub media: Option, // URL to associated media, preferably to decentralized, content-addressed storage + pub media_hash: Option, // Base64-encoded sha256 hash of content referenced by the `media` field. Required if `media` is included. + pub copies: Option, // number of copies of this set of metadata in existence when token was minted. + pub issued_at: Option, // ISO 8601 datetime when token was issued or minted + pub expires_at: Option, // ISO 8601 datetime when token expires + pub starts_at: Option, // ISO 8601 datetime when token starts being valid + pub updated_at: Option, // ISO 8601 datetime when token was last updated + pub extra: Option, // anything extra the NFT wants to store on-chain. Can be stringified JSON. + pub reference: Option, // URL to an off-chain JSON file with more info. + pub reference_hash: Option, // Base64-encoded sha256 hash of JSON from reference field. Required if `reference` is included. +} + +/// Offers details on the contract-level metadata. +#[ext_contract(ext_nft_metadata_provider)] +pub trait NonFungibleTokenMetadataProvider { + fn nft_metadata(&self) -> NFTContractMetadata; +} + +impl NFTContractMetadata { + pub fn assert_valid(&self) { + require!(self.spec == NFT_METADATA_SPEC, "Spec is not NFT metadata"); + require!( + self.reference.is_some() == self.reference_hash.is_some(), + "Reference and reference hash must be present" + ); + if let Some(reference_hash) = &self.reference_hash { + require!(reference_hash.0.len() == 32, "Hash has to be 32 bytes"); + } + } +} + +impl TokenMetadata { + pub fn assert_valid(&self) { + require!(self.media.is_some() == self.media_hash.is_some()); + if let Some(media_hash) = &self.media_hash { + require!(media_hash.0.len() == 32, "Media hash has to be 32 bytes"); + } + + require!(self.reference.is_some() == self.reference_hash.is_some()); + if let Some(reference_hash) = &self.reference_hash { + require!(reference_hash.0.len() == 32, "Reference hash has to be 32 bytes"); + } + } +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/mod.rs b/vendors/near-contract-standards/src/non_fungible_token/mod.rs new file mode 100644 index 0000000..d8ee105 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/mod.rs @@ -0,0 +1,28 @@ +/// The [approval management standard](https://nomicon.io/Standards/NonFungibleToken/ApprovalManagement.html) for NFTs. +pub mod approval; +/// The [core non-fungible token standard](https://nomicon.io/Standards/NonFungibleToken/Core.html). This can be though of as the base standard, with the others being extension standards. +pub mod core; +/// Common implementation of the [core non-fungible token standard](https://nomicon.io/Standards/NonFungibleToken/Core.html). +/// Trait for the [NFT enumeration standard](https://nomicon.io/Standards/NonFungibleToken/Enumeration.html). +/// This provides useful view-only methods returning token supply, tokens by owner, etc. +pub mod enumeration; +/// Macros typically used by a contract wanting to take advantage of the non-fungible +/// token NEAR contract standard approach. +mod macros; +/// Metadata traits and implementation according to the [NFT enumeration standard](https://nomicon.io/Standards/NonFungibleToken/Metadata.html). +/// This covers both the contract metadata and the individual token metadata. +pub mod metadata; +/// The Token struct for the non-fungible token. +mod token; +pub use self::token::{Token, TokenId}; + +/// NFT utility functions +mod utils; +pub use utils::*; + +pub use self::approval::NonFungibleTokenApproval; +pub use self::core::NonFungibleToken; +pub use self::core::NonFungibleTokenResolver; +pub use self::enumeration::NonFungibleTokenEnumeration; + +pub mod events; diff --git a/vendors/near-contract-standards/src/non_fungible_token/token.rs b/vendors/near-contract-standards/src/non_fungible_token/token.rs new file mode 100644 index 0000000..b043ba8 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/token.rs @@ -0,0 +1,18 @@ +use crate::non_fungible_token::metadata::TokenMetadata; +use near_sdk::{ + AccountId, NearSchema, + serde::{Deserialize, Serialize}, +}; +use std::collections::HashMap; +/// Note that token IDs for NFTs are strings on NEAR. It's still fine to use autoincrementing numbers as unique IDs if desired, but they should be stringified. This is to make IDs more future-proof as chain-agnostic conventions and standards arise, and allows for more flexibility with considerations like bridging NFTs across chains, etc. +pub type TokenId = String; + +/// In this implementation, the Token struct takes two extensions standards (metadata and approval) as optional fields, as they are frequently used in modern NFTs. +#[derive(NearSchema, Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(crate = "near_sdk::serde")] +pub struct Token { + pub token_id: TokenId, + pub owner_id: AccountId, + pub metadata: Option, + pub approved_account_ids: Option>, +} diff --git a/vendors/near-contract-standards/src/non_fungible_token/utils.rs b/vendors/near-contract-standards/src/non_fungible_token/utils.rs new file mode 100644 index 0000000..5095d28 --- /dev/null +++ b/vendors/near-contract-standards/src/non_fungible_token/utils.rs @@ -0,0 +1,56 @@ +use near_sdk::{AccountId, NearToken, Promise, env, require}; +use std::collections::HashMap; +use std::mem::size_of; + +// TODO: need a way for end users to determine how much an approval will cost. +pub fn bytes_for_approved_account_id(account_id: &AccountId) -> u64 { + // The extra 4 bytes are coming from Borsh serialization to store the length of the string. + account_id.as_str().len() as u64 + 4 + size_of::() as u64 +} + +pub fn refund_approved_account_ids_iter<'a, I>( + account_id: AccountId, + approved_account_ids: I, +) -> Promise +where + I: Iterator, +{ + let storage_released: u64 = approved_account_ids.map(bytes_for_approved_account_id).sum(); + Promise::new(account_id) + .transfer(env::storage_byte_cost().saturating_mul(storage_released.into())) +} + +pub fn refund_approved_account_ids( + account_id: AccountId, + approved_account_ids: &HashMap, +) -> Promise { + refund_approved_account_ids_iter(account_id, approved_account_ids.keys()) +} + +pub fn refund_deposit_to_account(storage_used: u64, account_id: AccountId) { + let required_cost = env::storage_byte_cost().saturating_mul(storage_used.into()); + let attached_deposit = env::attached_deposit(); + + require!( + required_cost <= attached_deposit, + format!("Must attach {} to cover storage", required_cost.exact_amount_display()) + ); + + let refund = attached_deposit.saturating_sub(required_cost); + if refund.as_yoctonear() > 1 { + Promise::new(account_id).transfer(refund).detach(); + } +} + +/// Assumes that the precedecessor will be refunded +pub fn refund_deposit(storage_used: u64) { + refund_deposit_to_account(storage_used, env::predecessor_account_id()) +} + +/// Assert that at least 1 yoctoNEAR was attached. +pub(crate) fn assert_at_least_one_yocto() { + require!( + env::attached_deposit() >= NearToken::from_yoctonear(1), + "Requires attached deposit of at least 1 yoctoNEAR" + ) +} diff --git a/vendors/near-contract-standards/src/storage_management/mod.rs b/vendors/near-contract-standards/src/storage_management/mod.rs new file mode 100644 index 0000000..cbd404d --- /dev/null +++ b/vendors/near-contract-standards/src/storage_management/mod.rs @@ -0,0 +1,120 @@ +use near_sdk::{AccountId, NearToken, ext_contract, near}; + +#[near(serializers=[borsh, json])] +pub struct StorageBalance { + pub total: NearToken, + pub available: NearToken, +} + +#[near(serializers=[borsh, json])] +pub struct StorageBalanceBounds { + pub min: NearToken, + pub max: Option, +} + +/// Ensures that when fungible token storage grows by collections adding entries, +/// the storage is be paid by the caller. This ensures that storage cannot grow to a point +/// that the FT contract runs out of Ⓝ. +/// Takes name of the Contract struct, the inner field for the token and optional method name to +/// call when the account was closed. +/// +/// # Examples +/// +/// ``` +/// use near_sdk::{near, PanicOnDefault, AccountId, NearToken, log}; +/// use near_sdk::collections::LazyOption; +/// use near_sdk::json_types::U128; +/// use near_contract_standards::fungible_token::FungibleToken; +/// use near_contract_standards::storage_management::{ +/// StorageBalance, StorageBalanceBounds, StorageManagement, +/// }; +/// use near_contract_standards::fungible_token::metadata::FungibleTokenMetadata; +/// +/// #[near(contract_state)] +/// #[derive(PanicOnDefault)] +/// pub struct Contract { +/// token: FungibleToken, +/// metadata: LazyOption, +/// } +/// +/// #[near] +/// impl StorageManagement for Contract { +/// #[payable] +/// fn storage_deposit( +/// &mut self, +/// account_id: Option, +/// registration_only: Option, +/// ) -> StorageBalance { +/// self.token.storage_deposit(account_id, registration_only) +/// } +/// +/// #[payable] +/// fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { +/// self.token.storage_withdraw(amount) +/// } +/// +/// #[payable] +/// fn storage_unregister(&mut self, force: Option) -> bool { +/// #[allow(unused_variables)] +/// if let Some((account_id, balance)) = self.token.internal_storage_unregister(force) { +/// log!("Closed @{} with {}", account_id, balance); +/// true +/// } else { +/// false +/// } +/// } +/// +/// fn storage_balance_bounds(&self) -> StorageBalanceBounds { +/// self.token.storage_balance_bounds() +/// } +/// +/// fn storage_balance_of(&self, account_id: AccountId) -> Option { +/// self.token.storage_balance_of(account_id) +/// } +/// } +/// +/// ``` +/// +#[ext_contract(ext_storage_management)] +pub trait StorageManagement { + // if `registration_only=true` MUST refund above the minimum balance if the account didn't exist and + // refund full deposit if the account exists. + fn storage_deposit( + &mut self, + account_id: Option, + registration_only: Option, + ) -> StorageBalance; + + /// Withdraw specified amount of available Ⓝ for predecessor account. + /// + /// This method is safe to call. It MUST NOT remove data. + /// + /// `amount` is sent as a string representing an unsigned 128-bit integer. If + /// omitted, contract MUST refund full `available` balance. If `amount` exceeds + /// predecessor account's available balance, contract MUST panic. + /// + /// If predecessor account not registered, contract MUST panic. + /// + /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted + /// function-call access-key call (UX wallet security) + /// + /// Returns the StorageBalance structure showing updated balances. + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance; + + /// Unregisters the predecessor account and returns the storage NEAR deposit back. + /// + /// If the predecessor account is not registered, the function MUST return `false` without panic. + /// + /// If `force=true` the function SHOULD ignore account balances (burn them) and close the account. + /// Otherwise, MUST panic if caller has a positive registered balance (eg token holdings) or + /// the contract doesn't support force deregistration. + /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted function-call access-key call + /// (UX wallet security) + /// Returns `true` iff the account was unregistered. + /// Returns `false` iff account was not registered before. + fn storage_unregister(&mut self, force: Option) -> bool; + + fn storage_balance_bounds(&self) -> StorageBalanceBounds; + + fn storage_balance_of(&self, account_id: AccountId) -> Option; +} diff --git a/vendors/near-contract-standards/src/upgrade/mod.rs b/vendors/near-contract-standards/src/upgrade/mod.rs new file mode 100644 index 0000000..d313950 --- /dev/null +++ b/vendors/near-contract-standards/src/upgrade/mod.rs @@ -0,0 +1,79 @@ +use near_sdk::json_types::U64; +use near_sdk::{AccountId, Duration, Promise, Timestamp, env, near, require}; + +type WrappedDuration = U64; + +pub trait Ownable { + fn assert_owner(&self) { + require!(env::predecessor_account_id() == self.get_owner(), "Owner must be predecessor"); + } + fn get_owner(&self) -> AccountId; + fn set_owner(&mut self, owner: AccountId); +} + +pub trait Upgradable { + fn get_staging_duration(&self) -> WrappedDuration; + fn stage_code(&mut self, code: Vec, timestamp: Timestamp); + fn deploy_code(&mut self) -> Promise; + + /// Implement migration for the next version. + /// Should be `unimplemented` for a new contract. + /// TODO: consider adding version of the contract stored in the storage? + fn migrate(&mut self) { + unimplemented!(); + } +} + +#[near] +pub struct Upgrade { + pub owner: AccountId, + pub staging_duration: Duration, + pub staging_timestamp: Timestamp, +} + +impl Upgrade { + pub fn new(owner: AccountId, staging_duration: Duration) -> Self { + Self { owner, staging_duration, staging_timestamp: 0 } + } +} + +impl Ownable for Upgrade { + fn get_owner(&self) -> AccountId { + self.owner.clone() + } + + fn set_owner(&mut self, owner: AccountId) { + self.assert_owner(); + self.owner = owner; + } +} + +impl Upgradable for Upgrade { + fn get_staging_duration(&self) -> WrappedDuration { + self.staging_duration.into() + } + + fn stage_code(&mut self, code: Vec, timestamp: Timestamp) { + self.assert_owner(); + require!( + env::block_timestamp() + self.staging_duration < timestamp, + "Timestamp must be later than staging duration" + ); + // Writes directly into storage to avoid serialization penalty by using default struct. + env::storage_write(b"upgrade", &code); + self.staging_timestamp = timestamp; + } + + fn deploy_code(&mut self) -> Promise { + if env::block_timestamp() < self.staging_timestamp { + env::panic_str( + format!("Deploy code too early: staging ends on {}", self.staging_timestamp) + .as_str(), + ); + } + let code = env::storage_read(b"upgrade") + .unwrap_or_else(|| env::panic_str("No upgrade code available")); + env::storage_remove(b"upgrade"); + Promise::new(env::current_account_id()).deploy_contract(code) + } +} From 24fdbe14d96f0e17f0c7c0381e4557b5cdf82d11 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 13 May 2026 17:33:42 +0100 Subject: [PATCH 03/46] test: setup workspaces ts --- integration-tests-ts/.gitignore | 4 + integration-tests-ts/package-lock.json | 3368 +++++++++++++++++++ integration-tests-ts/package.json | 31 + integration-tests-ts/src/helpers/panic.ts | 18 + integration-tests-ts/src/helpers/prepare.ts | 124 + integration-tests-ts/tsconfig.json | 17 + 6 files changed, 3562 insertions(+) create mode 100644 integration-tests-ts/.gitignore create mode 100644 integration-tests-ts/package-lock.json create mode 100644 integration-tests-ts/package.json create mode 100644 integration-tests-ts/src/helpers/panic.ts create mode 100644 integration-tests-ts/src/helpers/prepare.ts create mode 100644 integration-tests-ts/tsconfig.json diff --git a/integration-tests-ts/.gitignore b/integration-tests-ts/.gitignore new file mode 100644 index 0000000..cd0fd4c --- /dev/null +++ b/integration-tests-ts/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +build/ +*.log +.DS_Store diff --git a/integration-tests-ts/package-lock.json b/integration-tests-ts/package-lock.json new file mode 100644 index 0000000..c7cef85 --- /dev/null +++ b/integration-tests-ts/package-lock.json @@ -0,0 +1,3368 @@ +{ + "name": "sweat-near-integration-tests", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "sweat-near-integration-tests", + "version": "1.0.0", + "devDependencies": { + "@ava/typescript": "^5.0.0", + "@types/node": "^22.10.0", + "ava": "^7.0.0", + "near-workspaces": "^5.0.0", + "typescript": "^5.6.0" + } + }, + "node_modules/@ava/typescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ava/typescript/-/typescript-5.0.0.tgz", + "integrity": "sha512-2twsQz2fUd95QK1MtKuEnjkiN47SKHZfi/vWj040EN6Eo2ZW3SNcAwncJqXXoMTYZTWtBRXYp3Fg8z+JkFI9aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "execa": "^8.0.1" + }, + "engines": { + "node": "^18.18 || ^20.8 || ^21 || ^22" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", + "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "consola": "^3.2.3", + "detect-libc": "^2.0.0", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^2.6.7", + "nopt": "^8.0.0", + "semver": "^7.5.3", + "tar": "^7.4.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@near-js/accounts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@near-js/accounts/-/accounts-1.4.1.tgz", + "integrity": "sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/hashes": "1.7.1", + "borsh": "1.0.0", + "depd": "2.0.0", + "is-my-json-valid": "^2.20.6", + "lru_map": "0.4.1", + "near-abi": "0.2.0" + } + }, + "node_modules/@near-js/accounts/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@near-js/crypto": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@near-js/crypto/-/crypto-1.4.2.tgz", + "integrity": "sha512-GRfchsyfWvSAPA1gI9hYhw5FH94Ac1BUo+Cmp5rSJt/V0K3xVzCWgOQxvv4R3kDnWjaXJEuAmpEEnr4Bp3FWrA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/curves": "1.8.1", + "borsh": "1.0.0", + "randombytes": "2.1.0", + "secp256k1": "5.0.1" + } + }, + "node_modules/@near-js/crypto/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@near-js/keystores": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores/-/keystores-0.2.2.tgz", + "integrity": "sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/types": "0.3.1" + } + }, + "node_modules/@near-js/keystores-browser": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores-browser/-/keystores-browser-0.2.2.tgz", + "integrity": "sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2" + } + }, + "node_modules/@near-js/keystores-node": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@near-js/keystores-node/-/keystores-node-0.1.2.tgz", + "integrity": "sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2" + } + }, + "node_modules/@near-js/providers": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@near-js/providers/-/providers-1.0.3.tgz", + "integrity": "sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "borsh": "1.0.0", + "exponential-backoff": "^3.1.2" + }, + "optionalDependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/@near-js/providers/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@near-js/providers/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@near-js/signers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@near-js/signers/-/signers-0.2.2.tgz", + "integrity": "sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@noble/hashes": "1.3.3" + } + }, + "node_modules/@near-js/signers/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@near-js/transactions": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@near-js/transactions/-/transactions-1.3.3.tgz", + "integrity": "sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/crypto": "1.4.2", + "@near-js/signers": "0.2.2", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@noble/hashes": "1.7.1", + "borsh": "1.0.0" + } + }, + "node_modules/@near-js/transactions/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@near-js/types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@near-js/types/-/types-0.3.1.tgz", + "integrity": "sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==", + "dev": true, + "license": "ISC" + }, + "node_modules/@near-js/utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@near-js/utils/-/utils-1.1.0.tgz", + "integrity": "sha512-5XWRq7xpu8Wud9pRXe2U347KXyi0mXofedUY2DQ9TaqiZUcMIaN9xj7DbCs2v6dws3pJyYrT1KWxeNp5fSaY3w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/types": "0.3.1", + "@scure/base": "^1.2.0", + "depd": "2.0.0", + "mustache": "4.0.0" + } + }, + "node_modules/@near-js/wallet-account": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@near-js/wallet-account/-/wallet-account-1.3.3.tgz", + "integrity": "sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@near-js/accounts": "1.4.1", + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "borsh": "1.0.0" + } + }, + "node_modules/@near-js/wallet-account/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.19.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", + "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vercel/nft": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.5.0.tgz", + "integrity": "sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrgv": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", + "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ava": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-7.0.0.tgz", + "integrity": "sha512-4sRJO/gehlfAgSbuH02mClDDiyymnuFmirE3KqPXl2pic1FaFTZaAACKqr85WT4o08iLjViMR9gmMkxzbZ3AgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vercel/nft": "^1.3.2", + "acorn": "^8.16.0", + "acorn-walk": "^8.3.5", + "ansi-styles": "^6.2.3", + "arrgv": "^1.0.2", + "arrify": "^3.0.0", + "callsites": "^4.2.0", + "cbor": "^10.0.11", + "chalk": "^5.6.2", + "chunkd": "^2.0.1", + "ci-info": "^4.4.0", + "ci-parallel-vars": "^1.0.1", + "cli-truncate": "^5.1.1", + "code-excerpt": "^4.0.0", + "common-path-prefix": "^3.0.0", + "concordance": "^5.0.4", + "currently-unhandled": "^0.4.1", + "debug": "^4.4.3", + "emittery": "^1.2.0", + "figures": "^6.1.0", + "globby": "^16.1.1", + "ignore-by-default": "^2.1.0", + "indent-string": "^5.0.0", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "matcher": "^6.0.0", + "memoize": "^10.2.0", + "ms": "^2.1.3", + "p-map": "^7.0.4", + "package-config": "^5.0.0", + "picomatch": "^4.0.3", + "plur": "^6.0.0", + "pretty-ms": "^9.3.0", + "resolve-cwd": "^3.0.0", + "stack-utils": "^2.0.6", + "supertap": "^3.0.1", + "temp-dir": "^3.0.0", + "write-file-atomic": "^7.0.0", + "yargs": "^18.0.0" + }, + "bin": { + "ava": "entrypoints/cli.mjs" + }, + "engines": { + "node": "^20.19 || ^22.20 || ^24.12 || >=25" + }, + "peerDependencies": { + "@ava/typescript": "*" + }, + "peerDependenciesMeta": { + "@ava/typescript": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/borsh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-2.0.0.tgz", + "integrity": "sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.2.0.tgz", + "integrity": "sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cbor": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.12.tgz", + "integrity": "sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "nofilter": "^3.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chunkd": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", + "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ci-parallel-vars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", + "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/code-excerpt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^2.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-to-spaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.1.tgz", + "integrity": "sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-property": "^1.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", + "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10 <11 || >=12 <13 || >=14" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/irregular-plurals": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-4.2.0.tgz", + "integrity": "sha512-bW9UXHL7bnUcNtTo+9ccSngbxc+V40H32IgvdVin0Xs8gbo+AVYD5g/72ce/54Kjfhq66vcZr8H8TKEvsifeOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-my-ip-valid": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-my-json-valid": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/load-json-file": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", + "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz", + "integrity": "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/matcher": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-6.0.0.tgz", + "integrity": "sha512-TzDerdcNtI79w7Av4GT57bLdElPA/VAkjqdMZv8yhuc8geU2z0ljW9anXbX/55aHEMTpYypZb1lxsA/46r9oOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "license": "MIT", + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/memoize": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz", + "integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/memoize?sponsor=1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mustache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.0.0.tgz", + "integrity": "sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==", + "dev": true, + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + }, + "engines": { + "npm": ">=1.4.0" + } + }, + "node_modules/near-abi": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/near-abi/-/near-abi-0.2.0.tgz", + "integrity": "sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==", + "dev": true, + "license": "(MIT AND Apache-2.0)", + "dependencies": { + "@types/json-schema": "^7.0.11" + } + }, + "node_modules/near-api-js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-5.1.1.tgz", + "integrity": "sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==", + "dev": true, + "license": "(MIT AND Apache-2.0)", + "dependencies": { + "@near-js/accounts": "1.4.1", + "@near-js/crypto": "1.4.2", + "@near-js/keystores": "0.2.2", + "@near-js/keystores-browser": "0.2.2", + "@near-js/keystores-node": "0.1.2", + "@near-js/providers": "1.0.3", + "@near-js/signers": "0.2.2", + "@near-js/transactions": "1.3.3", + "@near-js/types": "0.3.1", + "@near-js/utils": "1.1.0", + "@near-js/wallet-account": "1.3.3", + "@noble/curves": "1.8.1", + "borsh": "1.0.0", + "depd": "2.0.0", + "http-errors": "1.7.2", + "near-abi": "0.2.0", + "node-fetch": "2.6.7" + } + }, + "node_modules/near-api-js/node_modules/borsh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", + "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/near-api-js/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/near-sandbox": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/near-sandbox/-/near-sandbox-0.1.5.tgz", + "integrity": "sha512-oVXDaFXeB/tYPuE78pG505astePJWlo68u2qlJ8TcFxL4cT0b13Go5k+0/kpPDiJ0375LPzlcn7MdHvyNelWcA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "got": "^11.8.6", + "tar": "^6.2.0" + }, + "bin": { + "near-sandbox": "run.js", + "sandbox": "run.js" + } + }, + "node_modules/near-sandbox/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/near-sandbox/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/near-sandbox/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/near-sandbox/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/near-sandbox/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/near-sandbox/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/near-workspaces": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/near-workspaces/-/near-workspaces-5.0.0.tgz", + "integrity": "sha512-fktOa9A6gge8JPa+Gp6vMJSF3mE3H6dEMvVPTa0bXx9cNp142bAAderX8dZLtN1fYduPFkV3yb+OGM8V0d6JdA==", + "dev": true, + "hasInstallScript": true, + "license": "(MIT AND Apache-2.0)", + "dependencies": { + "@scure/base": "^1.2.0", + "base64url": "^3.0.1", + "borsh": "^2.0.0", + "callsites": "^4.0.0", + "fs-extra": "^10.0.0", + "js-sha256": "^0.9.0", + "near-api-js": "^5.1.0", + "near-sandbox": "^0.1.1", + "node-port-check": "^2.0.1", + "promisify-child-process": "^4.1.1", + "proper-lockfile": "^4.1.2", + "pure-uuid": "^1.6.2", + "temp-dir": "^2.0.0" + }, + "engines": { + "node": ">=20.15.0", + "pnpm": ">= 9.15" + } + }, + "node_modules/near-workspaces/node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-port-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-port-check/-/node-port-check-2.0.1.tgz", + "integrity": "sha512-PV1tj5OPbWwxvhPcChXxwCIKl/IfVEdPP4u/gQz2lao/VGoeIUXb/4U72KSHLZpTVBmgTnMm0me7yR0wUsIuPg==", + "dev": true, + "license": "MIT" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-config": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz", + "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "load-json-file": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/plur": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-6.0.0.tgz", + "integrity": "sha512-Y9wXQivjRX0REtwpA9+n0bYYypWESn3cWtW2vazymw711qn+AQXxzZjRqhANYGBLIMC1UzVdpwe/1hHQwHfwng==", + "dev": true, + "license": "MIT", + "dependencies": { + "irregular-plurals": "^4.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/promisify-child-process": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", + "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pure-uuid": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/pure-uuid/-/pure-uuid-1.8.1.tgz", + "integrity": "sha512-PIwHXU7NZb/wTBwUfzCSjI85tfwx6DQOm74sRLtNLH8KHsFZEvAQbBQdz7E5ij8SNSv9WGdQPWiiM6NpNIeNfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string-width": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supertap": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", + "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^5.0.0", + "js-yaml": "^3.14.1", + "serialize-error": "^7.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/tar": { + "version": "7.5.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz", + "integrity": "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz", + "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==", + "dev": true, + "license": "ISC", + "dependencies": { + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/integration-tests-ts/package.json b/integration-tests-ts/package.json new file mode 100644 index 0000000..274a31f --- /dev/null +++ b/integration-tests-ts/package.json @@ -0,0 +1,31 @@ +{ + "name": "sweat-near-integration-tests", + "private": true, + "version": "1.0.0", + "description": "TypeScript integration tests for sweat-near using near-workspaces-js + AVA", + "type": "module", + "scripts": { + "build": "tsc", + "test": "ava" + }, + "devDependencies": { + "@ava/typescript": "^5.0.0", + "@types/node": "^22.10.0", + "ava": "^7.0.0", + "near-workspaces": "^5.0.0", + "typescript": "^5.6.0" + }, + "ava": { + "failFast": false, + "timeout": "5m", + "typescript": { + "rewritePaths": { + "src/": "build/" + }, + "compile": "tsc" + }, + "files": [ + "src/**/*.ava.ts" + ] + } +} diff --git a/integration-tests-ts/src/helpers/panic.ts b/integration-tests-ts/src/helpers/panic.ts new file mode 100644 index 0000000..51254a3 --- /dev/null +++ b/integration-tests-ts/src/helpers/panic.ts @@ -0,0 +1,18 @@ +import type {TransactionResult} from 'near-workspaces'; + +export function hasPanic(result: TransactionResult, message: string): boolean { + return JSON.stringify(result).includes(message); +} + +export async function expectPanic( + call: Promise, + message: string, +): Promise { + try { + const result = await call; + return hasPanic(result, message); + } catch (err) { + const text = err instanceof Error ? err.message : String(err); + return text.includes(message); + } +} diff --git a/integration-tests-ts/src/helpers/prepare.ts b/integration-tests-ts/src/helpers/prepare.ts new file mode 100644 index 0000000..b9e65c0 --- /dev/null +++ b/integration-tests-ts/src/helpers/prepare.ts @@ -0,0 +1,124 @@ +import path from 'node:path'; +import {fileURLToPath} from 'node:url'; +import {Worker, type NearAccount} from 'near-workspaces'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const RES_DIR = path.resolve(__dirname, '..', '..', '..', 'res'); + +const WASM = { + sweat: path.join(RES_DIR, 'sweat.wasm'), + claim: path.join(RES_DIR, 'sweat_claim.wasm'), + stub: path.join(RES_DIR, 'exploit_stub.wasm'), +} as const; + +const FT_POSTFIX = '.u.sweat.testnet'; +const LONG_ACCOUNT_NAME = 'a'.repeat(30); + +export interface Accounts { + readonly root: NearAccount; + readonly sweat: NearAccount; + readonly claim: NearAccount; + readonly stub: NearAccount; + readonly oracle: NearAccount; + readonly alice: NearAccount; + readonly bob: NearAccount; + readonly long: NearAccount; +} + +export interface WorkspaceContext { + readonly worker: Worker; + readonly accounts: Accounts; +} + +interface Contracts { + readonly sweat: NearAccount; + readonly claim: NearAccount; + readonly stub: NearAccount; +} + +interface Users { + readonly oracle: NearAccount; + readonly alice: NearAccount; + readonly bob: NearAccount; + readonly long: NearAccount; +} + +interface StorageBalanceBounds { + readonly min: string; + readonly max: string | null; +} + +export async function initWorker(): Promise { + const worker = await Worker.init(); + const root = worker.rootAccount; + + const contracts = await deployContracts(root); + const users = await createUserAccounts(root); + + await initSweat(contracts.sweat, users.oracle); + await initStub(contracts.stub); + await initClaim(contracts.claim, contracts.sweat.accountId); + + await registerForFtStorage(contracts.sweat, [ + users.oracle, + users.alice, + users.long, + contracts.claim, + ]); + + return { + worker, + accounts: {root, ...contracts, ...users}, + }; +} + +async function deployContracts(root: NearAccount): Promise { + const sweat = await root.devDeploy(WASM.sweat); + const claim = await root.devDeploy(WASM.claim); + const stub = await root.devDeploy(WASM.stub); + return {sweat, claim, stub}; +} + +async function createUserAccounts(root: NearAccount): Promise { + const oracle = await root.createSubAccount('oracle'); + const alice = await root.createSubAccount('alice'); + const bob = await root.createSubAccount('bob'); + const long = await root.createSubAccount(LONG_ACCOUNT_NAME); + return {oracle, alice, bob, long}; +} + +async function initSweat(sweat: NearAccount, oracle: NearAccount): Promise { + await sweat.call(sweat, 'new', {postfix: FT_POSTFIX}); + await sweat.call(sweat, 'add_oracle', {account_id: oracle.accountId}); +} + +async function initStub(stub: NearAccount): Promise { + await stub.call(stub, 'new', {}); +} + +async function initClaim(claim: NearAccount, tokenAccountId: string): Promise { + await claim.call(claim, 'init', {token_account_id: tokenAccountId}); + await claim.call(claim, 'add_oracle', {account_id: tokenAccountId}); +} + +async function registerForFtStorage( + ft: NearAccount, + accounts: readonly NearAccount[], +): Promise { + const attachedDeposit = await ftStorageMin(ft); + await Promise.all( + accounts.map(account => + account.call( + ft, + 'storage_deposit', + {account_id: account.accountId}, + {attachedDeposit}, + ), + ), + ); +} + +async function ftStorageMin(ft: NearAccount): Promise { + const bounds = await ft.view('storage_balance_bounds'); + return BigInt(bounds.min); +} diff --git a/integration-tests-ts/tsconfig.json b/integration-tests-ts/tsconfig.json new file mode 100644 index 0000000..963aafa --- /dev/null +++ b/integration-tests-ts/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "build", + "rootDir": "src", + "resolveJsonModule": true, + "declaration": false, + "sourceMap": true + }, + "include": ["src/**/*"] +} From 8fe774c59a8aa9c978d124a47e3b443f7dc4b76d Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 14 May 2026 14:27:37 +0100 Subject: [PATCH 04/46] chore: update build scripts; resurect integration test --- Cargo.lock | 113 +- Cargo.toml | 8 - integration-tests-ts/.gitignore | 4 - integration-tests-ts/package-lock.json | 3368 ------------------- integration-tests-ts/package.json | 31 - integration-tests-ts/src/helpers/panic.ts | 18 - integration-tests-ts/src/helpers/prepare.ts | 124 - integration-tests-ts/tsconfig.json | 17 - integration-tests/Cargo.lock | 3147 +++++++++-------- integration-tests/Cargo.toml | 22 +- integration-tests/rust-toolchain.toml | 2 + integration-tests/src/helpers.rs | 7 + integration-tests/src/lib.rs | 93 +- integration-tests/src/prepare.rs | 235 +- res/sweat.wasm | Bin 202599 -> 273524 bytes res/sweat_abi.json | 740 ++++ res/sweat_abi.zst | Bin 0 -> 1492 bytes scripts/build.sh | 7 +- 18 files changed, 2723 insertions(+), 5213 deletions(-) delete mode 100644 integration-tests-ts/.gitignore delete mode 100644 integration-tests-ts/package-lock.json delete mode 100644 integration-tests-ts/package.json delete mode 100644 integration-tests-ts/src/helpers/panic.ts delete mode 100644 integration-tests-ts/src/helpers/prepare.ts delete mode 100644 integration-tests-ts/tsconfig.json create mode 100644 integration-tests/rust-toolchain.toml create mode 100644 integration-tests/src/helpers.rs mode change 100755 => 100644 res/sweat.wasm create mode 100644 res/sweat_abi.json create mode 100644 res/sweat_abi.zst diff --git a/Cargo.lock b/Cargo.lock index d99d81d..89b1e89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -76,11 +76,12 @@ checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "cc" -version = "1.0.83" +version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ - "libc", + "find-msvc-tools", + "shlex", ] [[package]] @@ -184,12 +185,42 @@ dependencies = [ "near-sdk", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -274,24 +305,21 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" dependencies = [ + "cfg-if 1.0.0", + "futures-util", + "once_cell", "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.149" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "memchr" @@ -420,9 +448,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "powerfmt" @@ -635,6 +669,18 @@ dependencies = [ "syn", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + [[package]] name = "static_assertions" version = "1.1.0" @@ -775,34 +821,22 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" dependencies = [ "cfg-if 1.0.0", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", "once_cell", - "proc-macro2", - "quote", - "syn", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -810,22 +844,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +dependencies = [ + "unicode-ident", +] [[package]] name = "wee_alloc" diff --git a/Cargo.toml b/Cargo.toml index 89f7dc8..737f27c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,6 @@ [workspace] members = [ "contract", - # "integration-tests", "exploit-stub", "vendors/near-contract-standards", ] @@ -9,12 +8,5 @@ members = [ resolver = "2" [workspace.dependencies] -tokio = "1.28.0" -anyhow = "1.0.75" -async-trait = "0.1.74" - -near-units = "0.2.0" -near-workspaces = "0.10.0" - near-sdk = "5.26.1" near-contract-standards = { path = "vendors/near-contract-standards" } diff --git a/integration-tests-ts/.gitignore b/integration-tests-ts/.gitignore deleted file mode 100644 index cd0fd4c..0000000 --- a/integration-tests-ts/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -build/ -*.log -.DS_Store diff --git a/integration-tests-ts/package-lock.json b/integration-tests-ts/package-lock.json deleted file mode 100644 index c7cef85..0000000 --- a/integration-tests-ts/package-lock.json +++ /dev/null @@ -1,3368 +0,0 @@ -{ - "name": "sweat-near-integration-tests", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "sweat-near-integration-tests", - "version": "1.0.0", - "devDependencies": { - "@ava/typescript": "^5.0.0", - "@types/node": "^22.10.0", - "ava": "^7.0.0", - "near-workspaces": "^5.0.0", - "typescript": "^5.6.0" - } - }, - "node_modules/@ava/typescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@ava/typescript/-/typescript-5.0.0.tgz", - "integrity": "sha512-2twsQz2fUd95QK1MtKuEnjkiN47SKHZfi/vWj040EN6Eo2ZW3SNcAwncJqXXoMTYZTWtBRXYp3Fg8z+JkFI9aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0", - "execa": "^8.0.1" - }, - "engines": { - "node": "^18.18 || ^20.8 || ^21 || ^22" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", - "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "consola": "^3.2.3", - "detect-libc": "^2.0.0", - "https-proxy-agent": "^7.0.5", - "node-fetch": "^2.6.7", - "nopt": "^8.0.0", - "semver": "^7.5.3", - "tar": "^7.4.0" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@near-js/accounts": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@near-js/accounts/-/accounts-1.4.1.tgz", - "integrity": "sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/providers": "1.0.3", - "@near-js/signers": "0.2.2", - "@near-js/transactions": "1.3.3", - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "@noble/hashes": "1.7.1", - "borsh": "1.0.0", - "depd": "2.0.0", - "is-my-json-valid": "^2.20.6", - "lru_map": "0.4.1", - "near-abi": "0.2.0" - } - }, - "node_modules/@near-js/accounts/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@near-js/crypto": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@near-js/crypto/-/crypto-1.4.2.tgz", - "integrity": "sha512-GRfchsyfWvSAPA1gI9hYhw5FH94Ac1BUo+Cmp5rSJt/V0K3xVzCWgOQxvv4R3kDnWjaXJEuAmpEEnr4Bp3FWrA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "@noble/curves": "1.8.1", - "borsh": "1.0.0", - "randombytes": "2.1.0", - "secp256k1": "5.0.1" - } - }, - "node_modules/@near-js/crypto/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@near-js/keystores": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@near-js/keystores/-/keystores-0.2.2.tgz", - "integrity": "sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/types": "0.3.1" - } - }, - "node_modules/@near-js/keystores-browser": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@near-js/keystores-browser/-/keystores-browser-0.2.2.tgz", - "integrity": "sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/keystores": "0.2.2" - } - }, - "node_modules/@near-js/keystores-node": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@near-js/keystores-node/-/keystores-node-0.1.2.tgz", - "integrity": "sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/keystores": "0.2.2" - } - }, - "node_modules/@near-js/providers": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@near-js/providers/-/providers-1.0.3.tgz", - "integrity": "sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/transactions": "1.3.3", - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "borsh": "1.0.0", - "exponential-backoff": "^3.1.2" - }, - "optionalDependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/@near-js/providers/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@near-js/providers/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@near-js/signers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@near-js/signers/-/signers-0.2.2.tgz", - "integrity": "sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/keystores": "0.2.2", - "@noble/hashes": "1.3.3" - } - }, - "node_modules/@near-js/signers/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@near-js/transactions": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@near-js/transactions/-/transactions-1.3.3.tgz", - "integrity": "sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/crypto": "1.4.2", - "@near-js/signers": "0.2.2", - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "@noble/hashes": "1.7.1", - "borsh": "1.0.0" - } - }, - "node_modules/@near-js/transactions/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@near-js/types": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@near-js/types/-/types-0.3.1.tgz", - "integrity": "sha512-8qIA7ynAEAuVFNAQc0cqz2xRbfyJH3PaAG5J2MgPPhD18lu/tCGd6pzYg45hjhtiJJRFDRjh/FUWKS+ZiIIxUw==", - "dev": true, - "license": "ISC" - }, - "node_modules/@near-js/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@near-js/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-5XWRq7xpu8Wud9pRXe2U347KXyi0mXofedUY2DQ9TaqiZUcMIaN9xj7DbCs2v6dws3pJyYrT1KWxeNp5fSaY3w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/types": "0.3.1", - "@scure/base": "^1.2.0", - "depd": "2.0.0", - "mustache": "4.0.0" - } - }, - "node_modules/@near-js/wallet-account": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@near-js/wallet-account/-/wallet-account-1.3.3.tgz", - "integrity": "sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@near-js/accounts": "1.4.1", - "@near-js/crypto": "1.4.2", - "@near-js/keystores": "0.2.2", - "@near-js/providers": "1.0.3", - "@near-js/signers": "0.2.2", - "@near-js/transactions": "1.3.3", - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "borsh": "1.0.0" - } - }, - "node_modules/@near-js/wallet-account/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "22.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", - "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vercel/nft": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.5.0.tgz", - "integrity": "sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^2.0.0", - "@rollup/pluginutils": "^5.1.3", - "acorn": "^8.6.0", - "acorn-import-attributes": "^1.9.5", - "async-sema": "^3.1.1", - "bindings": "^1.4.0", - "estree-walker": "2.0.2", - "glob": "^13.0.0", - "graceful-fs": "^4.2.9", - "node-gyp-build": "^4.2.2", - "picomatch": "^4.0.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "nft": "out/cli.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/abbrev": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", - "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrgv": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", - "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/async-sema": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", - "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/ava": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-7.0.0.tgz", - "integrity": "sha512-4sRJO/gehlfAgSbuH02mClDDiyymnuFmirE3KqPXl2pic1FaFTZaAACKqr85WT4o08iLjViMR9gmMkxzbZ3AgA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vercel/nft": "^1.3.2", - "acorn": "^8.16.0", - "acorn-walk": "^8.3.5", - "ansi-styles": "^6.2.3", - "arrgv": "^1.0.2", - "arrify": "^3.0.0", - "callsites": "^4.2.0", - "cbor": "^10.0.11", - "chalk": "^5.6.2", - "chunkd": "^2.0.1", - "ci-info": "^4.4.0", - "ci-parallel-vars": "^1.0.1", - "cli-truncate": "^5.1.1", - "code-excerpt": "^4.0.0", - "common-path-prefix": "^3.0.0", - "concordance": "^5.0.4", - "currently-unhandled": "^0.4.1", - "debug": "^4.4.3", - "emittery": "^1.2.0", - "figures": "^6.1.0", - "globby": "^16.1.1", - "ignore-by-default": "^2.1.0", - "indent-string": "^5.0.0", - "is-plain-object": "^5.0.0", - "is-promise": "^4.0.0", - "matcher": "^6.0.0", - "memoize": "^10.2.0", - "ms": "^2.1.3", - "p-map": "^7.0.4", - "package-config": "^5.0.0", - "picomatch": "^4.0.3", - "plur": "^6.0.0", - "pretty-ms": "^9.3.0", - "resolve-cwd": "^3.0.0", - "stack-utils": "^2.0.6", - "supertap": "^3.0.1", - "temp-dir": "^3.0.0", - "write-file-atomic": "^7.0.0", - "yargs": "^18.0.0" - }, - "bin": { - "ava": "entrypoints/cli.mjs" - }, - "engines": { - "node": "^20.19 || ^22.20 || ^24.12 || >=25" - }, - "peerDependencies": { - "@ava/typescript": "*" - }, - "peerDependenciesMeta": { - "@ava/typescript": { - "optional": true - } - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/borsh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-2.0.0.tgz", - "integrity": "sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/callsites": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.2.0.tgz", - "integrity": "sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cbor": { - "version": "10.0.12", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.12.tgz", - "integrity": "sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "nofilter": "^3.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/chunkd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", - "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ci-parallel-vars": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", - "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/code-excerpt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", - "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "convert-to-spaces": "^2.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/convert-to-spaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", - "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.1.tgz", - "integrity": "sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "node_modules/generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-property": "^1.0.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", - "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.5", - "is-path-inside": "^4.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", - "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10 <11 || >=12 <13 || >=14" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, - "node_modules/irregular-plurals": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-4.2.0.tgz", - "integrity": "sha512-bW9UXHL7bnUcNtTo+9ccSngbxc+V40H32IgvdVin0Xs8gbo+AVYD5g/72ce/54Kjfhq66vcZr8H8TKEvsifeOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-my-ip-valid": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", - "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-my-json-valid": { - "version": "2.20.6", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", - "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", - "dev": true, - "license": "MIT", - "dependencies": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^5.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/js-sha256": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/load-json-file": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", - "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru_map": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz", - "integrity": "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", - "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/matcher": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-6.0.0.tgz", - "integrity": "sha512-TzDerdcNtI79w7Av4GT57bLdElPA/VAkjqdMZv8yhuc8geU2z0ljW9anXbX/55aHEMTpYypZb1lxsA/46r9oOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dev": true, - "license": "MIT", - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/memoize": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz", - "integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/memoize?sponsor=1" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mustache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.0.0.tgz", - "integrity": "sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==", - "dev": true, - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - }, - "engines": { - "npm": ">=1.4.0" - } - }, - "node_modules/near-abi": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/near-abi/-/near-abi-0.2.0.tgz", - "integrity": "sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==", - "dev": true, - "license": "(MIT AND Apache-2.0)", - "dependencies": { - "@types/json-schema": "^7.0.11" - } - }, - "node_modules/near-api-js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-5.1.1.tgz", - "integrity": "sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==", - "dev": true, - "license": "(MIT AND Apache-2.0)", - "dependencies": { - "@near-js/accounts": "1.4.1", - "@near-js/crypto": "1.4.2", - "@near-js/keystores": "0.2.2", - "@near-js/keystores-browser": "0.2.2", - "@near-js/keystores-node": "0.1.2", - "@near-js/providers": "1.0.3", - "@near-js/signers": "0.2.2", - "@near-js/transactions": "1.3.3", - "@near-js/types": "0.3.1", - "@near-js/utils": "1.1.0", - "@near-js/wallet-account": "1.3.3", - "@noble/curves": "1.8.1", - "borsh": "1.0.0", - "depd": "2.0.0", - "http-errors": "1.7.2", - "near-abi": "0.2.0", - "node-fetch": "2.6.7" - } - }, - "node_modules/near-api-js/node_modules/borsh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz", - "integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/near-api-js/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/near-sandbox": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/near-sandbox/-/near-sandbox-0.1.5.tgz", - "integrity": "sha512-oVXDaFXeB/tYPuE78pG505astePJWlo68u2qlJ8TcFxL4cT0b13Go5k+0/kpPDiJ0375LPzlcn7MdHvyNelWcA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "got": "^11.8.6", - "tar": "^6.2.0" - }, - "bin": { - "near-sandbox": "run.js", - "sandbox": "run.js" - } - }, - "node_modules/near-sandbox/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/near-sandbox/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/near-sandbox/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/near-sandbox/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/near-sandbox/node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/near-sandbox/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/near-workspaces": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/near-workspaces/-/near-workspaces-5.0.0.tgz", - "integrity": "sha512-fktOa9A6gge8JPa+Gp6vMJSF3mE3H6dEMvVPTa0bXx9cNp142bAAderX8dZLtN1fYduPFkV3yb+OGM8V0d6JdA==", - "dev": true, - "hasInstallScript": true, - "license": "(MIT AND Apache-2.0)", - "dependencies": { - "@scure/base": "^1.2.0", - "base64url": "^3.0.1", - "borsh": "^2.0.0", - "callsites": "^4.0.0", - "fs-extra": "^10.0.0", - "js-sha256": "^0.9.0", - "near-api-js": "^5.1.0", - "near-sandbox": "^0.1.1", - "node-port-check": "^2.0.1", - "promisify-child-process": "^4.1.1", - "proper-lockfile": "^4.1.2", - "pure-uuid": "^1.6.2", - "temp-dir": "^2.0.0" - }, - "engines": { - "node": ">=20.15.0", - "pnpm": ">= 9.15" - } - }, - "node_modules/near-workspaces/node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "dev": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-port-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-port-check/-/node-port-check-2.0.1.tgz", - "integrity": "sha512-PV1tj5OPbWwxvhPcChXxwCIKl/IfVEdPP4u/gQz2lao/VGoeIUXb/4U72KSHLZpTVBmgTnMm0me7yR0wUsIuPg==", - "dev": true, - "license": "MIT" - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.19" - } - }, - "node_modules/nopt": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", - "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^3.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-config": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz", - "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up-simple": "^1.0.0", - "load-json-file": "^7.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/plur": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-6.0.0.tgz", - "integrity": "sha512-Y9wXQivjRX0REtwpA9+n0bYYypWESn3cWtW2vazymw711qn+AQXxzZjRqhANYGBLIMC1UzVdpwe/1hHQwHfwng==", - "dev": true, - "license": "MIT", - "dependencies": { - "irregular-plurals": "^4.2.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/promisify-child-process": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", - "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/proper-lockfile/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pure-uuid": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/pure-uuid/-/pure-uuid-1.8.1.tgz", - "integrity": "sha512-PIwHXU7NZb/wTBwUfzCSjI85tfwx6DQOm74sRLtNLH8KHsFZEvAQbBQdz7E5ij8SNSv9WGdQPWiiM6NpNIeNfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/secp256k1": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", - "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.7", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/string-width": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", - "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supertap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", - "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "js-yaml": "^3.14.1", - "serialize-error": "^7.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/tar": { - "version": "7.5.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz", - "integrity": "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", - "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=6" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz", - "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==", - "dev": true, - "license": "ISC", - "dependencies": { - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/integration-tests-ts/package.json b/integration-tests-ts/package.json deleted file mode 100644 index 274a31f..0000000 --- a/integration-tests-ts/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "sweat-near-integration-tests", - "private": true, - "version": "1.0.0", - "description": "TypeScript integration tests for sweat-near using near-workspaces-js + AVA", - "type": "module", - "scripts": { - "build": "tsc", - "test": "ava" - }, - "devDependencies": { - "@ava/typescript": "^5.0.0", - "@types/node": "^22.10.0", - "ava": "^7.0.0", - "near-workspaces": "^5.0.0", - "typescript": "^5.6.0" - }, - "ava": { - "failFast": false, - "timeout": "5m", - "typescript": { - "rewritePaths": { - "src/": "build/" - }, - "compile": "tsc" - }, - "files": [ - "src/**/*.ava.ts" - ] - } -} diff --git a/integration-tests-ts/src/helpers/panic.ts b/integration-tests-ts/src/helpers/panic.ts deleted file mode 100644 index 51254a3..0000000 --- a/integration-tests-ts/src/helpers/panic.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type {TransactionResult} from 'near-workspaces'; - -export function hasPanic(result: TransactionResult, message: string): boolean { - return JSON.stringify(result).includes(message); -} - -export async function expectPanic( - call: Promise, - message: string, -): Promise { - try { - const result = await call; - return hasPanic(result, message); - } catch (err) { - const text = err instanceof Error ? err.message : String(err); - return text.includes(message); - } -} diff --git a/integration-tests-ts/src/helpers/prepare.ts b/integration-tests-ts/src/helpers/prepare.ts deleted file mode 100644 index b9e65c0..0000000 --- a/integration-tests-ts/src/helpers/prepare.ts +++ /dev/null @@ -1,124 +0,0 @@ -import path from 'node:path'; -import {fileURLToPath} from 'node:url'; -import {Worker, type NearAccount} from 'near-workspaces'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const RES_DIR = path.resolve(__dirname, '..', '..', '..', 'res'); - -const WASM = { - sweat: path.join(RES_DIR, 'sweat.wasm'), - claim: path.join(RES_DIR, 'sweat_claim.wasm'), - stub: path.join(RES_DIR, 'exploit_stub.wasm'), -} as const; - -const FT_POSTFIX = '.u.sweat.testnet'; -const LONG_ACCOUNT_NAME = 'a'.repeat(30); - -export interface Accounts { - readonly root: NearAccount; - readonly sweat: NearAccount; - readonly claim: NearAccount; - readonly stub: NearAccount; - readonly oracle: NearAccount; - readonly alice: NearAccount; - readonly bob: NearAccount; - readonly long: NearAccount; -} - -export interface WorkspaceContext { - readonly worker: Worker; - readonly accounts: Accounts; -} - -interface Contracts { - readonly sweat: NearAccount; - readonly claim: NearAccount; - readonly stub: NearAccount; -} - -interface Users { - readonly oracle: NearAccount; - readonly alice: NearAccount; - readonly bob: NearAccount; - readonly long: NearAccount; -} - -interface StorageBalanceBounds { - readonly min: string; - readonly max: string | null; -} - -export async function initWorker(): Promise { - const worker = await Worker.init(); - const root = worker.rootAccount; - - const contracts = await deployContracts(root); - const users = await createUserAccounts(root); - - await initSweat(contracts.sweat, users.oracle); - await initStub(contracts.stub); - await initClaim(contracts.claim, contracts.sweat.accountId); - - await registerForFtStorage(contracts.sweat, [ - users.oracle, - users.alice, - users.long, - contracts.claim, - ]); - - return { - worker, - accounts: {root, ...contracts, ...users}, - }; -} - -async function deployContracts(root: NearAccount): Promise { - const sweat = await root.devDeploy(WASM.sweat); - const claim = await root.devDeploy(WASM.claim); - const stub = await root.devDeploy(WASM.stub); - return {sweat, claim, stub}; -} - -async function createUserAccounts(root: NearAccount): Promise { - const oracle = await root.createSubAccount('oracle'); - const alice = await root.createSubAccount('alice'); - const bob = await root.createSubAccount('bob'); - const long = await root.createSubAccount(LONG_ACCOUNT_NAME); - return {oracle, alice, bob, long}; -} - -async function initSweat(sweat: NearAccount, oracle: NearAccount): Promise { - await sweat.call(sweat, 'new', {postfix: FT_POSTFIX}); - await sweat.call(sweat, 'add_oracle', {account_id: oracle.accountId}); -} - -async function initStub(stub: NearAccount): Promise { - await stub.call(stub, 'new', {}); -} - -async function initClaim(claim: NearAccount, tokenAccountId: string): Promise { - await claim.call(claim, 'init', {token_account_id: tokenAccountId}); - await claim.call(claim, 'add_oracle', {account_id: tokenAccountId}); -} - -async function registerForFtStorage( - ft: NearAccount, - accounts: readonly NearAccount[], -): Promise { - const attachedDeposit = await ftStorageMin(ft); - await Promise.all( - accounts.map(account => - account.call( - ft, - 'storage_deposit', - {account_id: account.accountId}, - {attachedDeposit}, - ), - ), - ); -} - -async function ftStorageMin(ft: NearAccount): Promise { - const bounds = await ft.view('storage_balance_bounds'); - return BigInt(bounds.min); -} diff --git a/integration-tests-ts/tsconfig.json b/integration-tests-ts/tsconfig.json deleted file mode 100644 index 963aafa..0000000 --- a/integration-tests-ts/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "esModuleInterop": true, - "strict": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "outDir": "build", - "rootDir": "src", - "resolveJsonModule": true, - "declaration": false, - "sourceMap": true - }, - "include": ["src/**/*"] -} diff --git a/integration-tests/Cargo.lock b/integration-tests/Cargo.lock index 872ef40..74fe898 100644 --- a/integration-tests/Cargo.lock +++ b/integration-tests/Cargo.lock @@ -1,12 +1,16 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] [[package]] name = "addr2line" @@ -23,17 +27,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.10", - "once_cell", - "version_check", -] - [[package]] name = "aho-corasick" version = "1.1.1" @@ -65,87 +58,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock", - "autocfg", - "cfg-if 1.0.0", - "concurrent-queue", - "futures-lite", - "log", - "parking", - "polling", - "rustix 0.37.24", - "slab", - "socket2 0.4.9", - "waker-fn", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-process" -version = "1.7.0" +name = "arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ - "async-io", - "async-lock", - "autocfg", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "rustix 0.37.24", - "signal-hook", - "windows-sys", + "derive_arbitrary", ] -[[package]] -name = "async-task" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" - [[package]] name = "async-trait" version = "0.1.73" @@ -154,7 +74,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] @@ -177,25 +97,13 @@ checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.4" @@ -203,21 +111,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] -name = "binary-install" -version = "0.0.2" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" -dependencies = [ - "curl", - "dirs 1.0.5", - "failure", - "flate2", - "hex 0.3.2", - "is_executable", - "siphasher", - "tar", - "zip", -] +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -227,15 +124,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" [[package]] name = "bitvec" -version = "0.20.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -245,33 +142,11 @@ dependencies = [ [[package]] name = "blake2" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" -dependencies = [ - "crypto-mac", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "generic-array", + "digest", ] [[package]] @@ -283,130 +158,51 @@ dependencies = [ "generic-array", ] -[[package]] -name = "blocking" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "fastrand 2.0.1", - "futures-io", - "futures-lite", - "piper", - "tracing", -] - -[[package]] -name = "borsh" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" -dependencies = [ - "borsh-derive 0.9.3", - "hashbrown 0.11.2", -] - [[package]] name = "borsh" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" -dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.12.3", -] - -[[package]] -name = "borsh-derive" -version = "0.9.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" dependencies = [ - "borsh-derive-internal 0.9.3", - "borsh-schema-derive-internal 0.9.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", + "borsh-derive", + "bytes", + "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" dependencies = [ + "once_cell", + "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] -name = "borsh-schema-derive-internal" -version = "0.9.3" +name = "bs58" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" +name = "bs58" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "tinyvec", ] -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - [[package]] name = "bumpalo" version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - [[package]] name = "byteorder" version = "1.4.3" @@ -424,58 +220,33 @@ name = "bytesize" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "c2-chacha" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" dependencies = [ - "cipher", - "ppv-lite86", + "serde", ] [[package]] name = "cc" -version = "1.0.83" +version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ + "find-msvc-tools", + "jobserver", "libc", + "shlex", ] [[package]] name = "cfg-if" -version = "0.1.10" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "cfg-if" -version = "1.0.0" +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" @@ -489,38 +260,52 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] -name = "cipher" -version = "0.2.5" +name = "convert_case" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" [[package]] -name = "concurrent-queue" -version = "2.3.0" +name = "convert_case" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ - "crossbeam-utils", + "unicode-segmentation", ] [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "cookie" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] [[package]] -name = "convert_case" -version = "0.4.0" +name = "cookie_store" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206" +dependencies = [ + "cookie", + "document-features", + "idna 1.1.0", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] [[package]] name = "core-foundation" @@ -553,16 +338,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -582,126 +358,146 @@ dependencies = [ ] [[package]] -name = "crypto-mac" -version = "0.8.0" +name = "curve25519-dalek" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "generic-array", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "rustc_version", "subtle", + "zeroize", ] [[package]] -name = "curl" -version = "0.4.44" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2 0.4.9", - "winapi", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] -name = "curl-sys" -version = "0.4.66+curl-8.3.0" +name = "darling" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70c44a72e830f0e40ad90dda8a6ab6ed6314d39776599a58a2e5e37fbc6db5b9" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "windows-sys", + "darling_core", + "darling_macro", ] [[package]] -name = "curve25519-dalek" -version = "3.2.1" +name = "darling_core" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", ] [[package]] -name = "derive_more" -version = "0.99.17" +name = "darling_macro" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "convert_case", - "proc-macro2", + "darling_core", "quote", - "rustc_version", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] -name = "digest" -version = "0.9.0" +name = "deranged" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "generic-array", + "powerfmt", + "serde_core", ] [[package]] -name = "digest" -version = "0.10.7" +name = "derive_arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ - "block-buffer 0.10.4", - "crypto-common", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] -name = "dirs" -version = "1.0.5" +name = "derive_more" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi", + "derive_more-impl", ] [[package]] -name = "dirs" -version = "3.0.2" +name = "derive_more-impl" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "dirs-sys", + "convert_case 0.10.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", + "unicode-xid", ] [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", + "block-buffer", + "crypto-common", + "subtle", ] [[package]] -name = "dyn-clone" -version = "1.0.14" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "dyn-clone" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "easy-ext" @@ -711,105 +507,88 @@ checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "signature", ] [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", + "rand_core", + "sha2", + "subtle", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "encoding_rs" version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.4" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "enum-map-derive", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "enum-map-derive" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ - "cc", - "libc", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "failure" -version = "0.1.8" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "failure_derive" -version = "0.1.8" +name = "errno" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", + "libc", + "windows-sys 0.61.2", ] [[package]] name = "fastrand" -version = "1.9.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] -name = "fastrand" -version = "2.0.1" +name = "fiat-crypto" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "filetime" @@ -817,21 +596,24 @@ version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys", + "redox_syscall", + "windows-sys 0.48.0", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fixed-hash" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", "static_assertions", ] @@ -845,12 +627,27 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -885,11 +682,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "fs4" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + [[package]] name = "funty" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" @@ -906,27 +713,6 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-sink" version = "0.3.28" @@ -963,24 +749,38 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.16" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.2.10" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "r-efi 6.0.0", + "wasip2", + "wasip3", ] [[package]] @@ -991,17 +791,17 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "h2" -version = "0.3.21" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -1010,27 +810,24 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "ahash", + "foldhash", ] [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "heck" @@ -1039,51 +836,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "hermit-abi" -version = "0.3.3" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "hex" -version = "0.3.2" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "windows-sys", + "serde", ] [[package]] name = "http" -version = "0.2.9" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] [[package]] name = "http-body" -version = "0.4.5" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", + "futures-core", "http", + "http-body", "pin-project-lite", ] @@ -1093,47 +895,75 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" -version = "0.14.27" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", + "http-body-util", "hyper", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1159,6 +989,100 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.4.0" @@ -1170,23 +1094,24 @@ dependencies = [ ] [[package]] -name = "impl-codec" -version = "0.5.1" +name = "idna" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ - "parity-scale-codec", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "idna_adapter" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1197,25 +1122,19 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] name = "indexmap" -version = "2.0.2" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.14.1", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", + "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -1223,28 +1142,9 @@ name = "integration-tests" version = "1.0.0" dependencies = [ "anyhow", - "async-trait", - "borsh 0.10.3", - "maplit", - "near-sdk", - "near-units", - "pkg-config", + "near-workspaces", "serde_json", "tokio", - "tracing", - "tracing-subscriber", - "workspaces", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", ] [[package]] @@ -1254,12 +1154,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] -name = "is_executable" -version = "0.1.2" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "winapi", + "either", ] [[package]] @@ -1268,6 +1168,16 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "js-sys" version = "0.3.64" @@ -1278,95 +1188,123 @@ dependencies = [ ] [[package]] -name = "keccak" -version = "0.1.4" +name = "json-patch" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" dependencies = [ - "cpufeatures", + "jsonptr 0.4.7", + "serde", + "serde_json", + "thiserror 1.0.49", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "json-patch" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "7421438de105a0827e44fadd05377727847d717c80ce29a229f85fd04c427b72" dependencies = [ - "spin", + "jsonptr 0.7.1", + "serde", + "serde_json", + "thiserror 2.0.18", ] [[package]] -name = "libc" -version = "0.2.148" +name = "json_comments" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" [[package]] -name = "libz-sys" -version = "1.1.12" +name = "jsonptr" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "fluent-uri", + "serde", + "serde_json", ] [[package]] -name = "linux-raw-sys" -version = "0.3.8" +name = "jsonptr" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "a5a3cc660ba5d72bce0b3bb295bf20847ccbb40fd423f3f05b61273672e561fe" +dependencies = [ + "serde", + "serde_json", +] [[package]] -name = "linux-raw-sys" -version = "0.4.8" +name = "keccak" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] [[package]] -name = "lock_api" -version = "0.4.10" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "log" -version = "0.4.20" +name = "leb128fmt" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] -name = "maplit" -version = "1.0.2" +name = "libc" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] -name = "matchers" -version = "0.1.0" +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ - "regex-automata 0.1.10", + "autocfg", + "scopeguard", + "serde", ] [[package]] -name = "memchr" -version = "2.6.4" +name = "log" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] -name = "memory_units" -version = "0.4.0" +name = "memchr" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "mime" @@ -1390,8 +1328,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "wasi", + "windows-sys 0.48.0", ] [[package]] @@ -1414,507 +1352,477 @@ dependencies = [ [[package]] name = "near-abi" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +checksum = "2fe0c8cdaf8369d8c78f2577d95673007c7f256c85752a66672be5244e2681a6" dependencies = [ - "borsh 0.9.3", - "schemars", + "borsh", + "schemars 0.8.22", "semver", "serde", ] [[package]] -name = "near-account-id" -version = "0.14.0" +name = "near-abi-client" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" +checksum = "879ac02b2e8d6498294adce1de7a2424a5474b35a73e9262c851be39c89d7f92" dependencies = [ - "borsh 0.9.3", - "serde", + "anyhow", + "convert_case 0.5.0", + "near-abi-client-impl", + "near-abi-client-macros", + "prettyplease 0.1.25", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "near-abi-client-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1139e8a6f60fd8ed1c53c700b67bcecbf6deb4b1f47bbe9a9d5eea760d8a8e91" +dependencies = [ + "anyhow", + "near-abi", + "near_schemafy_lib", + "proc-macro2", + "quote", + "schemars 0.8.22", + "serde_json", +] + +[[package]] +name = "near-abi-client-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebaf2aae80086b310bf96e657bbee0c599c3452afd35e72999f8d6764d6b1899" +dependencies = [ + "near-abi-client-impl", + "syn 1.0.109", ] [[package]] name = "near-account-id" -version = "0.15.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d924011380de759c3dc6fdbcda37a19a5c061f56dab69d28a34ecee765e23e4" +checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" dependencies = [ - "borsh 0.9.3", + "borsh", "serde", ] [[package]] name = "near-chain-configs" -version = "0.15.0" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1faf676a95bd1718b06e5957e01a9415fedf7900f32d94d5bcf70abd678b10a2" +checksum = "b49e9e2d173d526725d4055ac2af4fa18ba0e3cfd4a6c4c6439ac63a63ad9f41" dependencies = [ "anyhow", + "bytesize", "chrono", "derive_more", - "near-crypto 0.15.0", - "near-primitives 0.15.0", + "near-config-utils", + "near-crypto", + "near-parameters", + "near-primitives", + "near-time", "num-rational", + "parking_lot", "serde", "serde_json", - "sha2 0.10.8", + "sha2", "smart-default", + "time", "tracing", ] [[package]] -name = "near-crypto" -version = "0.14.0" +name = "near-config-utils" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" +checksum = "da2ba8f7129472fc147b867e904e4b8f398aa79f263f54dff6283c4860446ef8" dependencies = [ - "arrayref", - "blake2", - "borsh 0.9.3", - "bs58", - "c2-chacha", - "curve25519-dalek", - "derive_more", - "ed25519-dalek", - "near-account-id 0.14.0", - "once_cell", - "parity-secp256k1", - "primitive-types", - "rand 0.7.3", - "rand_core 0.5.1", - "serde", - "serde_json", - "subtle", - "thiserror", + "anyhow", + "json_comments", + "thiserror 2.0.18", + "tracing", ] [[package]] name = "near-crypto" -version = "0.15.0" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7754612b47737d277fb818e9fdbb1406e90f9e57151c55c3584d714421976cb6" +checksum = "7c12a12485f8baafa85d5c413885b795bfa1d7d0ab7fd49b4f7fbe6cd270325b" dependencies = [ - "arrayref", "blake2", - "borsh 0.9.3", - "bs58", - "c2-chacha", + "borsh", + "bs58 0.4.0", "curve25519-dalek", "derive_more", "ed25519-dalek", - "near-account-id 0.15.0", - "once_cell", + "hex", + "near-account-id", + "near-config-utils", + "near-schema-checker-lib", + "near-stdx", "primitive-types", - "rand 0.7.3", + "rand", "secp256k1", "serde", "serde_json", "subtle", - "thiserror", + "thiserror 2.0.18", +] + +[[package]] +name = "near-fmt" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31b6d8fb4146cf0a7dcadf7816bf7b8efd5c081d6d2ca524bc80815b5f86812" +dependencies = [ + "near-primitives-core", +] + +[[package]] +name = "near-gas" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c33c9c86e05da946358485fa6e7e881a09726f909fbd8bcf357f998d7d03d" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", ] [[package]] name = "near-jsonrpc-client" -version = "0.4.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1335ffce1476da6516dcd22b26cece1a495fc725c0e8fec1879073752ac068d" +checksum = "94937febf6a8e8d0cfbf194007a426bed81f41d84665a5982fcb7b4e3b21eca6" dependencies = [ - "borsh 0.9.3", + "borsh", "lazy_static", "log", "near-chain-configs", - "near-crypto 0.15.0", + "near-crypto", "near-jsonrpc-primitives", - "near-primitives 0.15.0", + "near-primitives", "reqwest", "serde", "serde_json", - "thiserror", - "uuid", + "thiserror 2.0.18", ] [[package]] name = "near-jsonrpc-primitives" -version = "0.15.0" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada226c74f05508c516f109a97b9f23335120d0bfda208f0d187b6bbfe6eef5a" +checksum = "b245e3de3c64e9c908167322abb4696d7c4e4c8315d715f167661000375af691" dependencies = [ + "arbitrary", "near-chain-configs", - "near-crypto 0.15.0", - "near-primitives 0.15.0", - "near-rpc-error-macro 0.15.0", + "near-crypto", + "near-primitives", + "near-schema-checker-lib", + "near-time", "serde", "serde_json", - "thiserror", + "thiserror 2.0.18", + "time", ] [[package]] -name = "near-primitives" -version = "0.14.0" +name = "near-parameters" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" +checksum = "e7a561606a8beb563bf166c8a9ceb7f97058b376d17ea1a9b4b65ebc9bff29ac" dependencies = [ - "borsh 0.9.3", - "byteorder", - "bytesize", - "chrono", - "derive_more", - "easy-ext", - "hex 0.4.3", - "near-crypto 0.14.0", - "near-primitives-core 0.14.0", - "near-rpc-error-macro 0.14.0", - "near-vm-errors 0.14.0", + "borsh", + "enum-map", + "near-account-id", + "near-primitives-core", + "near-schema-checker-lib", "num-rational", - "once_cell", - "primitive-types", - "rand 0.7.3", - "reed-solomon-erasure", "serde", - "serde_json", - "smart-default", + "serde_repr", + "serde_yaml", "strum", - "thiserror", + "thiserror 2.0.18", ] [[package]] name = "near-primitives" -version = "0.15.0" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97670b302dce15f09bba50f24c67aa08130fd01528cc61d4415892401e88e974" +checksum = "5ccddcf4a73e19afd681faaa7e83fc4046ec71f4bbe58c58ff4ae4432f36e3aa" dependencies = [ - "borsh 0.9.3", - "byteorder", + "arbitrary", + "base64 0.21.4", + "bitvec", + "borsh", + "bytes", "bytesize", - "cfg-if 1.0.0", "chrono", "derive_more", "easy-ext", - "hex 0.4.3", - "near-crypto 0.15.0", - "near-primitives-core 0.15.0", - "near-rpc-error-macro 0.15.0", - "near-vm-errors 0.15.0", + "enum-map", + "hex", + "itertools", + "near-crypto", + "near-fmt", + "near-parameters", + "near-primitives-core", + "near-schema-checker-lib", + "near-stdx", + "near-time", "num-rational", - "once_cell", + "ordered-float", "primitive-types", - "rand 0.7.3", - "reed-solomon-erasure", + "rand", + "rand_chacha", "serde", "serde_json", + "serde_with", + "sha3", + "smallvec", "smart-default", "strum", - "thiserror", + "thiserror 2.0.18", + "tracing", + "zstd", ] [[package]] name = "near-primitives-core" -version = "0.14.0" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" +checksum = "7c93d8c5d6aecfec0aa9d60ab34408c68b13d5c1bfc0f3afeee8c99fa521cdb3" dependencies = [ - "base64 0.11.0", - "borsh 0.9.3", - "bs58", + "arbitrary", + "base64 0.21.4", + "borsh", + "bs58 0.4.0", "derive_more", - "near-account-id 0.14.0", + "enum-map", + "near-account-id", + "near-gas", + "near-schema-checker-lib", + "near-token", "num-rational", "serde", - "sha2 0.10.8", - "strum", + "serde_repr", + "serde_with", + "sha2", + "thiserror 2.0.18", ] [[package]] -name = "near-primitives-core" -version = "0.15.0" +name = "near-sandbox" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7929e19d862221949734c4a0063a8f55e7069de3a2ebc2d4f4c13497a5e953cb" +checksum = "ffb6493715a4b5d18f23abcb3d6438e466373aba66f25764516c4b32433e92e0" dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "derive_more", - "near-account-id 0.15.0", - "num-rational", + "flate2", + "fs4", + "json-patch 4.2.0", + "libc", + "near-account-id", + "near-token", "serde", - "serde_repr", - "sha2 0.10.8", - "strum", + "serde_json", + "tar", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", + "ureq", ] [[package]] -name = "near-rpc-error-core" -version = "0.14.0" +name = "near-schema-checker-core" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" -dependencies = [ - "quote", - "serde", - "syn 1.0.109", -] +checksum = "f969a965d1ea04e1f085ee4d6c7273ae1064f578711087f3beaf8d400672cc7e" [[package]] -name = "near-rpc-error-core" -version = "0.15.0" +name = "near-schema-checker-lib" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36addf90cc04bd547a627b3a292f59d7de4dd6fb5042115419ae901b93ce6c2d" +checksum = "e4ae7538880de8a8d75e150dd0f4f685211ddd654ab12a339f40458df6d191dd" dependencies = [ - "quote", - "serde", - "syn 1.0.109", + "near-schema-checker-core", + "near-schema-checker-macro", ] [[package]] -name = "near-rpc-error-macro" -version = "0.14.0" +name = "near-schema-checker-macro" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9eb7d4dc413fe39ffa7fe5591ed4c24bc8139b9de8497689178d0101ae5167" + +[[package]] +name = "near-stdx" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c5dc0456309fcb256a0609d829971fd99f343e1a7f3b72f85364e64250a4555" + +[[package]] +name = "near-time" +version = "0.34.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" +checksum = "de9ae070cbd84d16b948fcc335ea82db35919bf856e349f333143ff2894eeafd" dependencies = [ - "near-rpc-error-core 0.14.0", + "parking_lot", "serde", - "syn 1.0.109", + "time", ] [[package]] -name = "near-rpc-error-macro" -version = "0.15.0" +name = "near-token" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5beb352f3b91d8c491646c2fa4fdbbbf463c7b9c0226951c28f0197de44f99" +checksum = "2a8000d5859172ce4cd29d51ae1af18a80571939f2975ffcae2c00d241ef4507" dependencies = [ - "near-rpc-error-core 0.15.0", + "borsh", "serde", - "syn 1.0.109", ] [[package]] -name = "near-sandbox-utils" -version = "0.6.2" +name = "near-workspaces" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7479b0a2c52890000d410c6e4ba4f851334280530fa7446b78bcaf4683fe69b0" +checksum = "1052c6f22494d9fbfb671a8efbc4f4c3a1fed0c8cac07336c97680c6088fca63" dependencies = [ - "anyhow", - "async-process", - "binary-install", + "async-trait", + "base64 0.22.1", + "bs58 0.5.1", "chrono", "fs2", - "hex 0.3.2", - "home", + "json-patch 2.0.0", + "libc", + "near-abi-client", + "near-account-id", + "near-crypto", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives", + "near-sandbox", + "near-token", + "rand", + "reqwest", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror 1.0.49", + "tokio", + "tokio-retry", + "tracing", + "url", ] [[package]] -name = "near-sdk" -version = "4.1.1" +name = "near_schemafy_core" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" +checksum = "42d7a1f809a319578773329389529dbf8c8f0abfbb05a429b37f437105f7caf6" dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros", - "near-sys", - "near-vm-logic", - "once_cell", - "schemars", "serde", "serde_json", - "wee_alloc", ] [[package]] -name = "near-sdk-macros" -version = "4.1.1" +name = "near_schemafy_lib" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" +checksum = "c39ccae55df51adaa1a4e567b7a79ab4380826a695121cebf41f518076d8c3dd" dependencies = [ "Inflector", + "near_schemafy_core", "proc-macro2", "quote", + "serde", + "serde_derive", + "serde_json", "syn 1.0.109", + "uriparse", ] [[package]] -name = "near-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" - -[[package]] -name = "near-units" -version = "0.2.0" +name = "num-bigint" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" dependencies = [ - "near-units-core", - "near-units-macro", + "autocfg", + "num-integer", + "num-traits", ] [[package]] -name = "near-units-core" -version = "0.2.0" +name = "num-conv" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89aa2a7985de87a08ca35f28abd8d00f0f901e704257e6e029aadef981386bc6" -dependencies = [ - "num-format", - "regex", -] +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] -name = "near-units-macro" -version = "0.2.0" +name = "num-integer" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ab45d066220846f9bd5c21e9ab88c47c892edd36f962ada78bf8308523171a" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "near-units-core", - "proc-macro2", - "quote", - "syn 1.0.109", + "autocfg", + "num-traits", ] [[package]] -name = "near-vm-errors" -version = "0.14.0" +name = "num-rational" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" dependencies = [ - "borsh 0.9.3", - "near-account-id 0.14.0", - "near-rpc-error-macro 0.14.0", + "autocfg", + "num-bigint", + "num-integer", + "num-traits", "serde", ] [[package]] -name = "near-vm-errors" -version = "0.15.0" +name = "num-traits" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5591c9c8afa83a040cb5c3f29bc52b2efae2c32d4bcaee1bba723738da1a5cf6" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ - "borsh 0.9.3", - "near-account-id 0.15.0", - "near-rpc-error-macro 0.15.0", - "serde", - "strum", + "autocfg", ] [[package]] -name = "near-vm-logic" -version = "0.14.0" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "byteorder", - "near-account-id 0.14.0", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-vm-errors 0.14.0", - "ripemd", - "serde", - "sha2 0.10.8", - "sha3", - "zeropool-bn", + "hermit-abi", + "libc", ] [[package]] -name = "nu-ansi-term" -version = "0.46.0" +name = "object" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec 0.7.4", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-traits" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "object" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", + "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" -version = "0.3.0" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "openssl" @@ -1922,8 +1830,8 @@ version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.4.0", - "cfg-if 1.0.0", + "bitflags 2.11.1", + "cfg-if", "foreign-types", "libc", "once_cell", @@ -1939,7 +1847,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] @@ -1961,55 +1869,17 @@ dependencies = [ ] [[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parity-scale-codec" -version = "2.3.1" +name = "ordered-float" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" dependencies = [ - "arrayvec 0.7.4", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", + "borsh", + "num-traits", + "rand", "serde", ] -[[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parity-secp256k1" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" -dependencies = [ - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", - "rand 0.7.3", -] - -[[package]] -name = "parking" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" - [[package]] name = "parking_lot" version = "0.12.1" @@ -2026,18 +1896,18 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project" @@ -2056,7 +1926,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] @@ -2072,52 +1942,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "piper" -version = "0.2.1" +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "potential_utf" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ - "atomic-waker", - "fastrand 2.0.1", - "futures-io", + "zerovec", ] [[package]] -name = "pkg-config" -version = "0.3.27" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "polling" -version = "2.8.0" +name = "ppv-lite86" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if 1.0.0", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] -name = "portpicker" -version = "0.1.1" +name = "prettyplease" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "rand 0.8.5", + "proc-macro2", + "syn 1.0.109", ] [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] [[package]] name = "primitive-types" @@ -2126,65 +1995,53 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" dependencies = [ "fixed-hash", - "impl-codec", "uint", ] [[package]] name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "once_cell", "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] [[package]] -name = "radium" -version = "0.6.2" +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] -name = "rand" -version = "0.7.3" +name = "r-efi" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -2193,18 +2050,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", + "serde", ] [[package]] @@ -2214,16 +2062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -2233,30 +2072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.10", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", + "serde", ] [[package]] @@ -2269,34 +2085,23 @@ dependencies = [ ] [[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" +name = "ref-cast" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", - "thiserror", + "ref-cast-impl", ] [[package]] -name = "reed-solomon-erasure" -version = "4.0.2" +name = "ref-cast-impl" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ - "smallvec", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -2307,17 +2112,8 @@ checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.9", - "regex-syntax 0.7.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] @@ -2328,15 +2124,9 @@ checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - [[package]] name = "regex-syntax" version = "0.7.5" @@ -2345,11 +2135,11 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "reqwest" -version = "0.11.20" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ - "base64 0.21.4", + "base64 0.22.1", "bytes", "encoding_rs", "futures-core", @@ -2357,8 +2147,11 @@ dependencies = [ "h2", "http", "http-body", + "http-body-util", "hyper", + "hyper-rustls", "hyper-tls", + "hyper-util", "ipnet", "js-sys", "log", @@ -2367,9 +2160,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", + "system-configuration", "tokio", "tokio-native-tls", "tower-service", @@ -2377,28 +2173,21 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", + "windows-registry", ] [[package]] -name = "rust-argon2" -version = "0.8.3" +name = "ring" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ - "base64 0.13.1", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", + "cc", + "cfg-if", + "getrandom 0.2.10", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -2407,12 +2196,6 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - [[package]] name = "rustc_version" version = "0.4.0" @@ -2424,29 +2207,59 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.24" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.1", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] -name = "rustix" -version = "0.38.15" +name = "rustls" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys 0.4.8", - "windows-sys", + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -2467,14 +2280,14 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "schemars" -version = "0.8.15" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -2483,38 +2296,62 @@ dependencies = [ ] [[package]] -name = "schemars_derive" -version = "0.8.15" +name = "schemars" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", + "dyn-clone", + "ref-cast", + "serde", + "serde_json", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "schemars" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - +checksum = "1375ba8ef45a6f15d83fa8748f1079428295d403d6ea991d09ab100155fbc06d" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "secp256k1" -version = "0.24.3" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" dependencies = [ - "rand 0.8.5", + "rand", "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.6.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" dependencies = [ "cc", ] @@ -2550,44 +2387,56 @@ checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", - "ryu", + "memchr", "serde", + "serde_core", + "zmij", ] [[package]] @@ -2598,7 +2447,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] @@ -2614,16 +2463,48 @@ dependencies = [ ] [[package]] -name = "sha2" -version = "0.9.9" +name = "serde_with" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "base64 0.22.1", + "bs58 0.5.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.0.3", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] @@ -2632,9 +2513,9 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -2643,28 +2524,15 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.7", + "digest", "keccak", ] [[package]] -name = "sharded-slab" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook" -version = "0.3.17" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -dependencies = [ - "libc", - "signal-hook-registry", -] +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -2677,15 +2545,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.6.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" [[package]] name = "slab" @@ -2698,29 +2560,19 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smart-default" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", + "syn 2.0.117", ] [[package]] @@ -2730,14 +2582,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] -name = "spin" -version = "0.5.2" +name = "stable_deref_trait" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -2745,6 +2597,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.24.1" @@ -2760,7 +2618,7 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", @@ -2786,25 +2644,54 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + [[package]] name = "synstructure" -version = "0.12.6" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", - "unicode-xid", + "syn 2.0.117", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.11.1", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -2821,20 +2708,19 @@ checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", - "xattr", ] [[package]] name = "tempfile" -version = "3.8.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "cfg-if 1.0.0", - "fastrand 2.0.1", - "redox_syscall 0.3.5", - "rustix 0.38.15", - "windows-sys", + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", ] [[package]] @@ -2843,7 +2729,16 @@ version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.49", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", ] [[package]] @@ -2854,28 +2749,59 @@ checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] -name = "thread_local" -version = "1.1.7" +name = "thiserror-impl" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ - "cfg-if 1.0.0", - "once_cell", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] name = "time" -version = "0.1.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", ] [[package]] @@ -2907,9 +2833,9 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2920,7 +2846,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] @@ -2940,7 +2866,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project", - "rand 0.8.5", + "rand", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", "tokio", ] @@ -2959,31 +2895,56 @@ dependencies = [ ] [[package]] -name = "toml" -version = "0.5.11" +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ - "serde", + "serde_core", ] [[package]] -name = "toml_datetime" -version = "0.6.3" +name = "toml_edit" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime", + "toml_parser", + "winnow", +] [[package]] -name = "toml_edit" -version = "0.19.15" +name = "toml_parser" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "indexmap 2.0.2", - "toml_datetime", "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.2" @@ -2992,11 +2953,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ - "cfg-if 1.0.0", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3004,52 +2964,22 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", ] [[package]] @@ -3072,7 +3002,7 @@ checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", - "hex 0.4.3", + "hex", "static_assertions", ] @@ -3097,12 +3027,71 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + [[package]] name = "unicode-xid" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" +dependencies = [ + "base64 0.22.1", + "cookie_store", + "log", + "percent-encoding", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "ureq-proto", + "utf8-zero", + "webpki-roots", +] + +[[package]] +name = "ureq-proto" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" +dependencies = [ + "base64 0.22.1", + "http", + "httparse", + "log", +] + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "url" version = "2.4.1" @@ -3110,25 +3099,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", - "idna", + "idna 0.4.0", "percent-encoding", "serde", ] [[package]] -name = "uuid" -version = "1.4.1" +name = "utf8-zero" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" -dependencies = [ - "getrandom 0.2.10", -] +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" [[package]] -name = "valuable" -version = "0.1.0" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "vcpkg" @@ -3142,12 +3128,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" - [[package]] name = "want" version = "0.3.1" @@ -3159,44 +3139,38 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "wasip2" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] [[package]] -name = "wasm-bindgen" -version = "0.2.87" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", + "wit-bindgen 0.51.0", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" +name = "wasm-bindgen" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" dependencies = [ - "bumpalo", - "log", + "cfg-if", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.37", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] @@ -3206,7 +3180,7 @@ version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -3214,9 +3188,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3224,22 +3198,59 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.37", - "wasm-bindgen-backend", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] [[package]] name = "web-sys" @@ -3252,15 +3263,12 @@ dependencies = [ ] [[package]] -name = "wee_alloc" -version = "0.4.5" +name = "webpki-roots" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", + "rustls-pki-types", ] [[package]] @@ -3291,7 +3299,43 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -3300,7 +3344,34 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -3309,13 +3380,29 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3324,153 +3411,321 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" -version = "0.5.15" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" dependencies = [ "memchr", ] [[package]] -name = "winreg" -version = "0.50.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ - "cfg-if 1.0.0", - "windows-sys", + "wit-bindgen-rust-macro", ] [[package]] -name = "workspaces" -version = "0.7.0" +name = "wit-bindgen" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b13d249618f197811e3673decc81459730cf5cc09ee7246dc4bede1e9333bc" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ - "async-process", - "async-trait", - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "chrono", - "dirs 3.0.2", - "hex 0.4.3", - "libc", - "near-account-id 0.15.0", - "near-crypto 0.15.0", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.15.0", - "near-sandbox-utils", - "portpicker", - "rand 0.8.5", - "reqwest", + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.14.0", + "prettyplease 0.2.37", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease 0.2.37", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.14.0", + "log", "serde", + "serde_derive", "serde_json", - "thiserror", - "tokio", - "tokio-retry", - "tracing", - "url", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", ] +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + [[package]] name = "wyz" -version = "0.2.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] [[package]] -name = "xattr" -version = "1.0.1" +name = "yoke" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ - "libc", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", ] [[package]] name = "zeroize" -version = "1.3.0" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ - "zeroize_derive", + "displaydoc", + "yoke", + "zerofrom", ] [[package]] -name = "zeroize_derive" -version = "1.4.2" +name = "zerovec" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.117", ] [[package]] -name = "zeropool-bn" -version = "0.5.11" +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "borsh 0.9.3", - "byteorder", - "crunchy", - "lazy_static", - "rand 0.8.5", - "rustc-hex", + "zstd-safe", ] [[package]] -name = "zip" -version = "0.5.13" +name = "zstd-safe" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ - "byteorder", - "bzip2", - "crc32fast", - "flate2", - "thiserror", - "time", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index eb0b457..b43e685 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -8,21 +8,9 @@ edition = "2021" name = "integration_tests" [dev-dependencies] -near-workspaces = { workspace = true } -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } -anyhow = { workspace = true } -tokio = { workspace = true } +near-workspaces = "0.22.1" +anyhow = "1.0" +tokio = { version = "1", features = ["macros", "rt-multi-thread"] } +serde_json = "1" -near-units = { workspace = true } -borsh = "0.10.3" -maplit = "1.0" -tracing = "0.1.37" -tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } -pkg-config = "0.3.1" - -[dependencies] -async-trait = "0.1.73" - -sweat-model = { workspace = true, features = ["integration-test"] } -integration-utils = { workspace = true } +[workspace] diff --git a/integration-tests/rust-toolchain.toml b/integration-tests/rust-toolchain.toml new file mode 100644 index 0000000..d6d3381 --- /dev/null +++ b/integration-tests/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.91.1" diff --git a/integration-tests/src/helpers.rs b/integration-tests/src/helpers.rs new file mode 100644 index 0000000..b919f0c --- /dev/null +++ b/integration-tests/src/helpers.rs @@ -0,0 +1,7 @@ +macro_rules! step { + ($tag:expr, $($arg:tt)*) => { + println!("• [{}] {}", $tag, format!($($arg)*)); + }; +} + +pub(crate) use step; diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index e6d078b..1a28491 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -1,50 +1,73 @@ #![cfg(test)] -use integration_utils::misc::ToNear; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -mod callback_attack; -mod common; -mod defer; -mod formula; -mod interface; -mod measure; -mod mint; +mod helpers; mod prepare; -mod transfer; + +use serde_json::json; + +use crate::helpers::step; +use crate::prepare::prepare_contract; + +// Tests are being resurrected one by one against near-workspaces 0.22. +// Re-enable each module as it's ported off the dead sweat-model + integration-utils deps. +// +// mod callback_attack; +// mod common; +// mod defer; +// mod formula; +// mod interface; +// mod measure; +// mod mint; +// mod transfer; + +const TAG: &str = "happy_flow"; #[tokio::test] async fn happy_flow() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - - let alice = context.alice().await?; - let oracle = context.oracle().await?; + let context = prepare_contract(TAG).await?; - assert_eq!( - 99999995378125008, - context.ft_contract().formula(100_000.into(), 100).await?.0 - ); + step!(TAG, "view formula(steps_since_tge=100000, steps=100)"); + let formula: String = context + .sweat + .view("formula") + .args_json(json!({ "steps_since_tge": "100000", "steps": 100 })) + .await? + .json()?; + step!(TAG, " = {}", formula); + assert_eq!(99_999_995_378_125_008_u128, formula.parse::()?); + step!(TAG, "call tge_mint(alice, 100_000_000) [signer=sweat]"); context - .ft_contract() - .tge_mint(&alice.to_near(), 100_000_000.into()) - .await?; + .sweat + .call("tge_mint") + .args_json(json!({ "account_id": context.alice.id(), "amount": "100000000" })) + .transact() + .await? + .into_result()?; - assert_eq!( - 100_000_000, - context.ft_contract().ft_balance_of(alice.to_near()).await?.0 - ); + step!(TAG, "view ft_balance_of(alice)"); + let balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", balance); + assert_eq!(100_000_000_u128, balance.parse::()?); + step!(TAG, "call defer_batch([(alice, 1000)], holding=claim) [signer=oracle]"); context - .ft_contract() - .defer_batch( - vec![(alice.to_near(), 1000)], - context.claim_contract().as_account().to_near(), - ) - .with_user(&oracle) - .await?; + .oracle + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": [[context.alice.id(), 1000]], + "holding_account_id": context.claim.id(), + })) + .max_gas() + .transact() + .await? + .into_result()?; + step!(TAG, "done"); Ok(()) } diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs index 430dccc..eaa29e0 100644 --- a/integration-tests/src/prepare.rs +++ b/integration-tests/src/prepare.rs @@ -1,115 +1,130 @@ -use anyhow::Result; -use async_trait::async_trait; -use integration_utils::misc::ToNear; -use near_sdk::serde_json::json; -use near_workspaces::{Account, Contract}; -use sweat_model::{StorageManagementIntegration, SweatApiIntegration, SweatContract}; - -const CLAIM_CONTRACT: &str = "sweat_claim"; -const HOLDING_STUB_CONTRACT: &str = "exploit_stub"; -const FT_CONTRACT: &str = "sweat"; - -pub type Context = integration_utils::context::Context; - -#[async_trait] -pub trait IntegrationContext { - async fn oracle(&mut self) -> Result; - async fn alice(&mut self) -> Result; - async fn bob(&mut self) -> Result; - async fn long_account_name(&mut self) -> Result; - - fn ft_contract(&self) -> SweatContract; - fn claim_contract(&self) -> &Contract; - fn stub_contract(&self) -> &Contract; +use std::path::PathBuf; + +use anyhow::{anyhow, Result}; +use near_workspaces::{network::Sandbox, types::NearToken, Account, AccountId, Contract, Worker}; +use serde_json::{json, Value}; + +use crate::helpers::step; + +const FT_POSTFIX: &str = ".u.sweat.testnet"; +const LONG_ACCOUNT_NAME: &str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; +const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); + +const SWEAT_WASM: &str = "sweat.wasm"; +const CLAIM_WASM: &str = "sweat_claim.wasm"; +const STUB_WASM: &str = "exploit_stub.wasm"; + +pub struct Context { + pub worker: Worker, + pub sweat: Contract, + pub claim: Contract, + pub stub: Contract, + pub oracle: Account, + pub alice: Account, + pub bob: Account, + pub long: Account, } -#[async_trait] -impl IntegrationContext for Context { - async fn oracle(&mut self) -> Result { - self.account("oracle").await - } - - async fn alice(&mut self) -> Result { - self.account("alice").await - } - - async fn bob(&mut self) -> Result { - self.account("bob").await - } - - async fn long_account_name(&mut self) -> Result { - self.account("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").await - } - - fn ft_contract(&self) -> SweatContract { - SweatContract { - contract: &self.contracts[FT_CONTRACT], - } - } - - fn claim_contract(&self) -> &Contract { - &self.contracts[CLAIM_CONTRACT] - } - - fn stub_contract(&self) -> &Contract { - &self.contracts[HOLDING_STUB_CONTRACT] - } +pub async fn prepare_contract(caller: &str) -> Result { + let tag = format!("{caller}/prepare"); + + step!(&tag, "booting sandbox"); + let worker = near_workspaces::sandbox().await?; + let root = worker.root_account()?; + + step!(&tag, "deploying contracts"); + let sweat = deploy(&worker, SWEAT_WASM).await?; + step!(&tag, " sweat → {}", sweat.id()); + let claim = deploy(&worker, CLAIM_WASM).await?; + step!(&tag, " claim → {}", claim.id()); + let stub = deploy(&worker, STUB_WASM).await?; + step!(&tag, " stub → {}", stub.id()); + + step!(&tag, "creating user accounts"); + let oracle = create_user(&root, "oracle").await?; + let alice = create_user(&root, "alice").await?; + let bob = create_user(&root, "bob").await?; + let long = create_user(&root, LONG_ACCOUNT_NAME).await?; + + step!(&tag, "initializing sweat (new + add_oracle)"); + init_sweat(&sweat, oracle.id()).await?; + step!(&tag, "initializing stub (new)"); + init_stub(&stub).await?; + step!(&tag, "initializing claim (init + add_oracle)"); + init_claim(&claim, sweat.id()).await?; + + step!(&tag, "registering accounts for FT storage"); + let min = storage_balance_min(&sweat).await?; + storage_deposit(&sweat, oracle.id(), min).await?; + storage_deposit(&sweat, alice.id(), min).await?; + storage_deposit(&sweat, long.id(), min).await?; + storage_deposit(&sweat, claim.id(), min).await?; + + step!(&tag, "ready"); + Ok(Context { + worker, + sweat, + claim, + stub, + oracle, + alice, + bob, + long, + }) } -pub async fn prepare_contract() -> Result { - let mut context = Context::new( - &[FT_CONTRACT, CLAIM_CONTRACT, HOLDING_STUB_CONTRACT], - true, - "build-integration".into(), - ) - .await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; - let long = context.long_account_name().await?; - let token_account_id = context.ft_contract().contract.as_account().to_near(); - - context.ft_contract().new(".u.sweat.testnet".to_string().into()).await?; - - context - .ft_contract() - .storage_deposit(oracle.to_near().into(), None) - .await?; - - context - .ft_contract() - .storage_deposit(alice.to_near().into(), None) - .await?; - - context - .ft_contract() - .storage_deposit(long.to_near().into(), None) - .await?; - - context.ft_contract().add_oracle(&oracle.to_near()).await?; - - let claim_contract_result = context - .claim_contract() - .call("init") - .args_json(json!({ "token_account_id": token_account_id })) - .max_gas() +async fn deploy(worker: &Worker, wasm_name: &str) -> Result { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("..") + .join("res") + .join(wasm_name); + let bytes = std::fs::read(&path) + .map_err(|e| anyhow!("failed to read {}: {e}", path.display()))?; + Ok(worker.dev_deploy(&bytes).await?) +} + +async fn create_user(root: &Account, name: &str) -> Result { + Ok(root + .create_subaccount(name) + .initial_balance(INITIAL_USER_BALANCE) + .transact() + .await? + .into_result()?) +} + +async fn init_sweat(sweat: &Contract, oracle_id: &AccountId) -> Result<()> { + sweat + .call("new") + .args_json(json!({ "postfix": FT_POSTFIX })) + .transact() + .await? + .into_result()?; + + sweat + .call("add_oracle") + .args_json(json!({ "account_id": oracle_id })) .transact() .await? .into_result()?; - println!("Initialized claim contract: {:?}", claim_contract_result); + Ok(()) +} - let exploit_stup_contract_result = context - .stub_contract() - .call("new") +async fn init_stub(stub: &Contract) -> Result<()> { + stub.call("new").transact().await?.into_result()?; + Ok(()) +} + +async fn init_claim(claim: &Contract, token_account_id: &AccountId) -> Result<()> { + claim + .call("init") + .args_json(json!({ "token_account_id": token_account_id })) .max_gas() .transact() .await? .into_result()?; - println!("Initialized exploit stub contract: {:?}", exploit_stup_contract_result); - - context - .claim_contract() + claim .call("add_oracle") .args_json(json!({ "account_id": token_account_id })) .max_gas() @@ -117,10 +132,24 @@ pub async fn prepare_contract() -> Result { .await? .into_result()?; - context - .ft_contract() - .storage_deposit(context.claim_contract().as_account().to_near().into(), None) - .await?; + Ok(()) +} + +async fn storage_balance_min(ft: &Contract) -> Result { + let bounds: Value = ft.view("storage_balance_bounds").await?.json()?; + let min_str = bounds + .get("min") + .and_then(Value::as_str) + .ok_or_else(|| anyhow!("storage_balance_bounds.min missing"))?; + Ok(NearToken::from_yoctonear(min_str.parse()?)) +} - Ok(context) +async fn storage_deposit(ft: &Contract, account_id: &AccountId, deposit: NearToken) -> Result<()> { + ft.call("storage_deposit") + .args_json(json!({ "account_id": account_id })) + .deposit(deposit) + .transact() + .await? + .into_result()?; + Ok(()) } diff --git a/res/sweat.wasm b/res/sweat.wasm old mode 100755 new mode 100644 index 9372a93a07536fbb0ef45d10efdf85efeea7772b..f4552c772429ec74125f2de5ff136bcd41b9280e GIT binary patch literal 273524 zcmeFa3z%KkRp)sg_f>UoRb4%7%a%gUy%bQ2r9{w*qy%?Tr|>J7v<>ZHGCj=5ilxM^ zl5JTkC+5SkDzWUS6Vo_NCKxb8u?;qpm=*+P3}5K3gpg4~(x~asxQRoQV1fgNcp&s- zJ_4EFf31DaJ@?iv#f0YT?r$O|b?(_`pS{;!d+qh!`$Pwh-4aJp6n`*z$qmWzZ~mUg17bp$hJ%fEymGVp&V=a8D&Q z=NH|@s?yXG{zW&m{D*!{6hHZ0x8Kxk=w)@$zg`nI&k=oL;H^&TE64xtgb^Z2YLL)n~yCYI_edsj~u=2mYa|1tz&l_UXEr|@xmiV4;?&o zPQFcE_#D`)@uNb*z`7f&GUM-5On>q6>x_Ikw;4h$i){Oh>k`(tlxa=kvl@AsbkBx9X;^I zL;LSI#^16BAHsoK4?6st3wU0CVEM+I_TR|3mk;@)jl++YZ(#@46jTaUe=nA%Im);YF(VChh_QH|^zTj9XLgZq~b{owvL-@JU&{x{rl_^?I~ zDfl}tdm-;shqpyNy?E?f2M--Sw0uaNIkv`6L8uj|!fRf-PJ1>5Z#;b4>kk|rnTc2Y z9p2dg`X4N2TvTssXKw8Kcd&5AcDLt+Rv*__Wlh>jwq-YYr-?;ydQlBMj=z~9wj~Z{ zzlA?h^sV0(&&Av0xYmr1#2@6pI)H9yT$~<{^Ocp=sC_)jANb{8A6%Q~(r;?qa_E-Z zj{aa0P46$4!u|uVzd6dc6g+DGvD@xAdgGz}w;WnNaPYwLfoLJU_0XH6D<;JPV6!(K zJ``Pv&=8>%_gA&wcxXA?9E+}QEyIg%x%t-R=rz;D&;7=AqwlW0USjB)O?m-=bL80m zV>jPQchrl%r*rhsjkg^=80x;Z`G(t$-g3v`1JOU3y7`!7(elxoZ(KffFuHd77_V0f zu4}(xc>wYE>aJva-`}m=?Y~jn^?#gE(QV5xgkyIcIdb?1qt{JQ0)sdpSZ;em^gor< zUx=fB)-Be9c;LaK2i_e0&l`)PJ8muHU-SbP7KKG~uSZfIJQn>gW$oet{rs<+=$C=q zb{K4yAn$J=lnBC)0he`lsKw5gOlp{}BIv{M+%Py7_ecbo^BOpW@HN|1mxn z|5g0u_&>*Avg?WDp5(7%{r9%yZ{oKmE6G>m_azS{55eof zWS@HbSp0Ch?>CZ*vz5@k;!uWZzTC z?ndH;S9{~2gKTp1xJd^xUaw5GaeJK7H@U_29-k-h; z4)@Ro5-;_W*(jOMqVBi!BgYD>LV7U%WFUaYdw|I$#B#aUyqU(f4HJEN$d<`YZP-x9~I z7XKUl7q=RNqKT-TrTM3#rRiS7IH&!og`crqQ@?98+gSuCwWU4D=1f4vi~V>puU|D4 zcV^nf!+xsAX~vj3RzF?pHz;Drb>0QM{I8;`7;i(B^#5zN_R}k;rmS+Z)UWCNdY)R< z=d3D~iVCsyUeA;8_{ynPJ4^D3J;^ecGtpw!?0z8O=a=}I%q3Ur&-ZlSoAlz&^cWZ? z*Madb#=+?CkHYA~F&MqVFpPf$#{+dGj8CnB@pXdn2OP$!F)%_DV0$edKRXV_*4M(L zSAZ}Bq8*ceIY6{k@JWab%NjwWGJg8sDBzzGf;0)00jO`$P;+RES}pz`V@CoTz}=W~uI4>c?8C`p>%P*L5it zClm>}8*N893pFg^PQQ`W7q#Z<`K~J&5oB=fRLZ5H(kfh?v`r)5?tr$g0Z^-(qHm@36%MOlVpa7`f&YAnHo&QF3<LV1|$| zfMl_k+W1(%+%rrYRWB9BS{3ZThHSvjTk`BE9n+I0CR^&)XPI@Mlv;_DavH#u=BWV_ zW$IcYveaO?bZHv(3C)L>YrtaD*R}};6yv#$WLpU|(&Bg2TmI`~)pn4vJ-kqU{m z&Qw_|RMb>;=(MhB5-YQ50{8WN^I}%lH1Wr#$w(qwWO%7h8G!PR-YzG(J2J^#&D>_2 zIn~;wx9iB3W;>62br#QjHrY$n1S4woQ|65!#2sVbY0kojidjcmU^duZ3Qn>lIqt;I zZ=O|Tlc>5k85*o1j)bXRgGID|A0yBcFHt(3`#u>&0lbK(9 z4UNK0mh&H7S*hJF#*$ww3G1j4&YTTTbq35W)-1x@#D$wInO;LpR~nxFjz|`e44UD8 zV~RqB8suD=4jMDICCLHF31QhN!ZIOj))9tyPI6QQRfJ;=v+gabX#6Vf1Q}V(x{0O@ z{vJzh_`R0iv$YnR2pUk!81PtX!*6%>wym|e(`x4}pZAeUkt)@E3=J*92{nx*f<`r@ zx`TFZjnuqBFCO$4L0wt%?3$X_spj=w6UJWFoL>T#s=70;ikEvuI6zr(E=YhUD$;OH zb$3`@)m(|iN#gc%aa@<~3g4ALG_K$r0Zu2HNlkJ~2-Z~4>DAMDNC*CAoDtO%(y7&C zppN_-Qxs}oR6{z6R&pYOg%gO4iou!8HCbmej1k1*qg8PyVdro2ZXP-Nl+vk*Z~^IW zFg~9uH7vf{ezuXek0*B}cQfL7czB@#6ufY7HMZMt>eB7Egadv_{x^-?)$^CKhT-wZ zO8z1@k4|Z-u9!*|;@*Z1`bI3Ai8z`XCuD(e$XZet>a6G9r0$krtW7S|=$Tkf=8-z} zY|=XENKKg%Z|qO!lh*=6U1GTo40@pslh2U`YNS&L(K@n^br%b#S)==Hf@C_cUz4Q^ zKmNhbe_a2+`1_7>_h51N{o)}EMXe^%vv@dpcQ*CJ!dK&a?m`+$wrK>5Oi|W=3rn{d z^kN`%S7UMRYH9b|vf5mdT>*bb&av)I4lSg6(+Hpz5Q1;%Z(NA}X>EQX>21h1BE=9| z>979U!b0TK#N zo%z#y|MKIXJ^n~Vx_sNjYbz3C5vct-xh=~ z*h0B(_(GdBtu6_Aol8CGb@=iUtq(0L)|2KDLUrX1^}&`Wa|V?*jSpz4c7oJ&W1-&& zE6BC!y5_N^d8|vDMnmiBk28NnG?Qo&bx%?gx)I{85H_=pvAxh}n?@nDu*R+LMy^E` zU4{1CyyhrC{g!UO`*y8dU^t9MX^VbRhIHzNv=-}iOvtatA~o!K%|Tt0Gz8)nf#_0k z1Vm?5Jw&WT^OK#d*h_k6|`jOt0(YThJ z@K9*f@VYQrrB1E+VFDRv zpG%X*@mTT#UYtr~ie&5JMlK=(<+_M)8Z^_u$`KgG$(v>_@=A?$3n2*QsG${;$kq~E zdm-w6s~fqj)C}E@!Pm96Q?d0_<^+FS#mR8EvJP2!S6d zjjq}#Xnk!PyOxai_a+=*)+8Ku05WV>BB?3b7v&>dCWeGdEqn^n4^}4PX5qaf%8v9*s(zvWiVAmm<*G^3{EVFUN2Gv&9GI}a}ZOtpE zW~@pYG>=B8;2t)XYf+(Q62Ex=IZQA_7slM4Y~vPtumLOMb>^#5;w$wf`f9zOA~A|v*XPp zX5O$7n+#P4t8DfKSY=p4%vK`ag4!oLEST_Shsoy%$OU=}Ut;Nzl9+1X!NCxcwR53_ zwOMZISTCh8w#IC`z+ZyT54}|SE7h=Z=69vena_)tHMVLa6{p2t8QAjIjhE6sHT8JJ zJ{@t#nzJgGhpU2@!ZP)`NITa-#vr9KAqIQu^0zt&WbZ}S}nL=1#vSb5+b{Q76qCht-no-}Kyk@_me6#=h zrCQw5lEI+2=$lDb@M~>u?!#M38@?vxt)YTWZvv$zb$1~6#J5&=q}EHMqS?c*v^vZy zkruj&Ik(};R)gZN@KWLi>eqVlMCkp&V3c#sUOFgmDf7RV@~%X9DikuyB%5Pcl@ZH7+Usw6A_=NC(YyL+B+NBq|z*87k6K()t1a>$5pUQ3Q|(KBm7M zBY_*2l4hQ0-sOleeu1d{l<0xhiKlH*M1#TOwUIFfvxTx`Ga2U1U@RIh@$QYoUi06M z7V{?+ci4{Dy`6Fxs{?IXfVjvuiI6=aOke~ZB3wh{@!%s4$aJ*!#Dk2GyN}p4BSd9C zX7S(UBBHX-+vFV6(uZ)Y@p@?7=7;rT)5F`8vog9r;SJ`oB1TDm+2YF+96?#KJ=u*D zl`6Y>jiO0d4xDkQGlr(lV21`HoKw=H-K#;lHf+b{qHvjZFO_MZ#Z)DD!`z8Xn0iAJ z?2Hn7zbs?6>Z;P+Vf?m0W|U3tWf_q6pgDm|h1W=Cde_Mfs>>!`mFy7aeUkk#M403# ztJtFNt(O`P49ajcOv_sY9LT!ZXc^-cN_jy<+%O_8JQIIsB8Dd5a0La!dciO7xdf2`?F5Rj0l0cBWDKe8Z zRqX=m+cfRe+}4&d!YmeaC80~S&jf(2n(~c*XnKWEJ5H!_??R}WIc&G*qNuk>MwJkkIEUf=a|Fmz=ZH zQDS7Z5ZVQal>(B{GTfpoq zMJz1G_&K1 zQ@#%e7(?xm5CzI8-_@TmPKZ~;rSUfW{giK(s*(`8%}=}sdOcuMyhYyPWpQJ?H{z+d z86z%@?J2HVocbDO%Wfz(t)7x_&vLT?0qOuebw!8~a}lW!l%{lmYKpe?k>n^2s1lx? z6zt6g@S)NnqFp0kax>6Gw+bxMqBJoY-JWblu=11%PQWCuh%5TTH9gueu^)ouK&4>7 zdDjfqAlTtUKG&vl#Hbtzgn&u94b)nU#;hPyKNy^hLb~ZUfww+1f>tqt*6;{G(^9|b zF_tSl+*|-5zCvpm<4i6Ll7T*}6 z)_Sl7_%p3!x(u7tXQP2!ShEC8Pz*1@mNe@%J`QGa>=Lwi*)}GwvIOf|f|zV&plIwe zu_f3FT1hc2m=4BwizNshYJC`Onn$E)dpKffGgn#OLrYMv^cwEgb7gMb6}XBXS6zX- zjIMiWbs^f~gT`V#+d(H-GucJ#>LER1jls)-F(jvqq zA}*Meifmg3hsL;t*lOpn9J<7}V6qv3J}LwWz(eu9Dw`;9sF$5vkdCZ(!h%ybhP&De zWffS2=pkBYwZJM+{Q|2HgB)QMm43YEF?^zPI5@UkhK*+vkn~zML1Bg#!DY5DrcfJV z6Ji|3=$LZjL(<)Wo|(XW9k2;uBfub@V2z%KP1MJ*iMrUtvoC~Agy`yr>Mp09Fy*pnXEcx#KSz7-R2GAv0QeE zaC3=4B31t3nuLg=G(Mo0-2Iq^e#nxT$Ul#-Ar*@AY4Podc}wzFFXkuTX7)8&iob|M z&S5B=iS=u-I8;Qcw=xH4tr1e@JzmyC{9t=#byjGd0GL%K9o?LfM9(c-yGTbbD|kA3 zBc#kL0wsp6fS!hkf@~=TqA_1eqI<6~D11dqKk#`4h%O9Z zI2FC9AdLl)T&AK|p`ROp9vd%&{iFy6=cjC7IF~s>U601`qOs#^85(=0x8;B|YfK?$ z)shC{Np_B*u4-9~#^#YYoM^*xT;7p-tOhPSkLJQbp~Y@RugYC5C!vS1a-<#lP9LHh%xcX)l<@DVu=r&u3$F*_rLV((atEkgnKm_ zcb|);l8MEDiMV?@rJ+c=s4P!o%XSwm&&qi9OtdUPK=@g$J@8{Fml99Yyp#XiM^=ee zb$>E#zdMd&+g5OOU(OsN5#M8dD}=z!zM}N9YH7D9C6h4lO6qD@2E>&N%L6U&+iHy? z#e2)u(i@7>gGFikk^odxJaUA{AN9_WU`n5!|Eon*-XF(l8F|c!E68XHSUA>~7p{Ko z*6BLg4Y5*Xc$`_JM%dzEvYfXU^E+?vr%R}c>0&;yn0xdlVtIAn03Olhs4P4;mhG7o zYD&P2)Ea&js8OClcd2|970-4Z_BPvHX5JaE&zY0LbMJr@>LP`w6T(#JLfx=R>2oDk zdQ5^KVF4ybMaUxdjwm-@>FObD@2JH;R#s|WxhtUwN6a_ADStjb`pO8?N$|fZfA#IO zNC65M1)V{`R8}|ZyC^?5_O+=jmGs8`msbd&^7tqPq48CF$Em&Oh-G3GVWox`{n0j? zYa9<+vEbtMR&1MW44qO+ItsL&PRT;o!bVMMsZ)F1o08cU#wJ)nyT)=3Ob0w#l@aVFyBhLJ(G`s9Q6GL*RUth{o84t?4M4d7!wMp{l z3e(vm^YxjSs^L_vL$!M%Q9T)BMqeQ^TfASxkE-_N5K^LAHW|oV^GVVUl7q%bi3Fr= zftwpz)wdv~o}gLN9%L)OkkkpMek~VB`vtyc%f{Lc1ET*~$4pjW1`lwF6m--95bV+@ z2gP_H3}ulAq=1MLDIh2y1&KO%zosaOkOES1wG5DgjQ_7 zm+~2(r!?;lnp8;GnglNzR(E)w$e&8H_TGpDoUF4KjM3;EZR5gN%FSrhI50fc;F)=Y zc1*WY4RHmZNLqv3jIv}m(%?!=ivrUi>61JkT5eTaZuP{aXw=)HKKALNfOG1FcC|G# zfp{x~8yO7J8mWa}SRoa0!SaULFK_S(g8(8mY{+^4Pp(G!i@RD$r!G!r-1YH1x^6tH zwPY)$A9YU-F}H-3vOV3UKl@Hxr*#8=?!Mjl0-MtUooduFlRLhiP{1Us_Q6Ks9J{%6 zq`1cUDq8|3+{HlZB9ns$Bx3krN*pFdM!ho1xEiZS-Ala}Jj3|6C+2lXiIMc0-bN7= zm*dNW;$~rn%@7t8$1W?Jry)BO(+j0`%I&YIs{I8C$nju-urle>EU(N~eBr_OfT+!_ z(${;Mt+%3n-KjA&GhkP6yc7_nmI5v(apXu9on-5lZO(wxVUIp}0v@)#7j?*pt7rA# zW^KsF(~yscHyk)w9!U}VWThz-MeGw;EcU7356SR!#E%|t8IW7LZ+7@3v9-9ZG{Yb@ zsFj2>(JpG>PkHuU2<0mR={7(TjmmX1nJMOjiAYx-#f4U*u_0m^YJ*|4G>n$Hs?5_T zB#$45k7B1|&c=d@ZZP(w0~9|~AD;Hw0ofMxBT%ljh^r>-!!@)po#+y^U<(w(&PnV8 zL&6cm%A1%X(BMa;mN&bb~xEE3HqP^^2~EMqMm z^@e5OBMJ-(4XC694ALP=7#O5u7sn_}1uQwMwR>s5u~h&8Ny9?c1y*5l>~YXc`x@iI zQZ?pRbNB+7?&EMUZ6sodbwV*?7ODmzRYmTnIX~qPPa7^Q)uR zn0WF0RP1FN9MV!5vC_2w#S>N0KnpBs!r>Q7nlP5cybaGKI4Gjy%%Dpz6hle!`g5l2t+!-QH3fpkt@HbiN=H&a5B z%;&3`JdI3CYvHpWx%Zv#`M^`BKO0HP58r3N+gcp0g8W`nv}JA4+}fgDYm4@c7NsPs z^qLqQ5D6Y5+jQK>BE@^;!ABiUc0^<;vULXdEs;n16=WcM@#t|Uc--9F6D1}&Fy^|A@%$-kv2Q-T*{Nzh->C4Rv4@b7M)FAc{C?viHVj_ z2!X3e78QH1wG9#tok3N+LB-S=F9JWSkvu`9((}vtkgZwJ=X?lSz}N80Axj{+mm@IIqJZOnKxR}TUmGzMEA4uZ;8e7?y1u_lb(nZ z-rE^nrVt+O%=g*yXumF(U(#emtIPJjx5%{86!#mvJt~fXy#8;Pcb^{efQq`hQO5tYhlA$AV{!RU}P! zT8j#P!3yOr&d#`FLY(2FT=NyONmum)-NTH}R`Fqq4i-*fht;1WxJom_h2FiM#LA{(KtJaC|bmpoIm$b zD_qIDrH$hDNw8Aj;BKMRf`tO(l!bEU9wuo!t|`m`_9q7mWsu!z1SznFG<(=%uux)} z@$5{~c%>pM!_@*VQsT>;Ov0N6F)j!*Hl*UFL&_$4hHb=1Op6v*q5MkuG%d`^I^5IDkuq;MQ4`2SJ>0$1eOs0pmIhSi| zEsXJZWp+%;>>#E>pU=zmn(Q8d9-3E7q2PjX)bJRyBW06%q9MlvTsauCy`}|`992|r z@_KEmA()F6Zvlzc&@2t1Nn1-JCP)}9!dw`mYeNBWP#+J3a~qWn&}=3}qx%vjC?7T) zQ^|&^fiN^@6$4?ED%H}ME-r2N3`Opkx5NV5h#@;t<-F1Df(Cekg| zpatWC;pmZ9q~*}1HBxjbHO#CaIODU4;v1MMbIEfFgft0eb&8G48sn82%7np(vp88S z6#Dz^ou_!cV7Owj;@Mp1lBbhCn*CgIF6q8e*Ry3cDf|R7)BFKN+AguVtOaDitks0o zD4s{$ZG+K#k`B>}y7yVfU0|iz%^*c;boX8>#ofw0QQqle=_{JYz1ABTW?)4(lsod( zA7a#c=-vY&BxX%KM)|3STs%fD9tFlHlOP|>jr}ZLQi$}Bgf!&v7g6+_!2$*h6fp1( zD*#st%Zm{hb_ZHZp<@6*lO~vB+7r%qb0-aBSJ`}l9kdK$m`^3HW-#Jin#T!^9S@vS z7HKU0pqQaj$51Vwr+ubj2su@p&|e@kckh8FVQgBJ4mH?)v%XdyCh$Epb5&_c%S^!tVuf?Dw3 zwH9(>SPOaJr@ow1x6(o`b=h8ZdHlDbg`Ae=@d}6T3;KQW*V01%bRwRVFJ!gq z3n4c&IMVM=g58QXRAYy@c{?lylAl8PHl>@K7b!~}SH1CO4O}AfEY=Fux^8M8`wPs6 zh{|iKFs{f_IhT@#|J?Ts;&C~PyKM_998NOr8zeJCIpieE#yC#waE7$|qj7)`E19Ed zV(4>P$GV8IX*WGK_KsNVQwGcI^&rO@t^8B%WNF!!Cj zrlqSe0H6leG4EI_&Zk#;sC9)8uCMT9|B6k^4^AJm)s}7HZiWZqr zRL+!Wj-ObwhLRs?*h_*f0>nfJL5H5j6lZ%2j2$pa2sB(;ATh$zrR9j)rd=VH>K&sx zyL%Sn*fK+9Gz&ow{&eAeD>1hsYXP)brg@}^VuHi|(0m2FG10Q4Ka?=jA=?J;RSN@* zOATj!lz%8;3<3u?iTQI{{e~y8;Gouj446kPBAMp15=D91h*DWTB{!{7m}Su_rfzZl zVE5i<*$|MLXqKYeL+4T!S#HWRboM?fkaWG(3F*_D5 zN(R9P%hB?Q^&rIfl*k;tT+>FKe)3vBYdzbOS=Pw{NrLH`# zbFe#@h^MAt^z~a~T)&Wr`TX@aIDd&ABt?qK*@UQH$?I4jpG??_!u6@7$C`4(I+pKV zSt@MR*rkpM2>Gq@2`AcerI0ve|rbs@ezMb~bc73j0O;UlL#0OY@+O1vCmLEoTKIboCU_spV zXt21g^W?!sfpE{73NGMg#RaUb@n_ylVCHc7hou7zRAyd?qh7{iG z&n#s3X+QHW+rxE&Q&lNB$=Rpf$1M0SALC>2#<%VD4Xaiq7t8@Yd<@pGP;72;`5QcB#}cXX(U8OvyLFClQdy93L`>VzntTl#}*3CA4?^eV~oNd~ho&~OK>TN*aX@ zJvMb#_hy%swg~K}ctW*ck|-eq>)8r;V(j}pkIj)PoupjZKR!oQEXYE#(2 zMk>M#5E#~jAQGfp6fy8HL!c43%6BP?;cSR6FpIlHmy?=L1tn~?pcwdrf^;S-ISjj< z&OE-Ld9F?`G^7*;{P}%7;s?MNG>t0g>g1yjuNI#DylUBlR^?9oLnJe-qrpNVEdmP+ zfxyD!*iiYmyBYrr_w&2!zaP@?3%-_l|7RDC)p$>fn~l|Y;X;t#X`{?1J>g+Q=bb9> zZ-_zXofd-7c{Q6%?~{~^1^$w*>`Yc$Vz>Ib3G`Tl9&3`76}=bBg52y`%6Xpy8w$Ob z4bnmH)n4k|92!p>zSqQrfO2rPt9vusE4YLM%P^7`;RzIY&Vy`TslA-)x`f7VCkJ+_ zYA+wf5PQd3XX|A)5lpH=?NxJCk!uQ5NQ4aOAL7Tzh)UkWyx`-%BJ)9CosvnJ2DMk# zv2wHTF|D_$3>^|{L*|1W0Fs8>YzJ;g>BV|~fw|e=;d8~*xY#$1sXS(Z+-y$JH-6nq zM?&nTrt#7oxoeHJNfJXDxuwXKvNvuR5>@9L2gp#qvg54Kb{#G|OhYO(9-L5;7RW_? z^h|W%{CX5#Q}^feNiRf1{zs3npz4woQhI_Ei}NqtXT?%n2gs^a$dnLKx2LR~QN{K< z9P#EA$S}ODS*2(2Mlqlw7X?%+sXKHiwGxkktI?M3u&#btHdFx%Jq&WIlTbKeyWxXp zp)ZMUu7*OWH?%g*2qD8%?wx`llq7=YK%3v_6zLQ zecMM?@Kd#YC+HMV;YixY5EYiHaGS-yc3}e5 z`ruy*_^3frc~P4!)uWgyOg=0Diof15Atnc7k_WD3dh=Qc>4O6)WVAUi(Izg_;}XlC z(CW}Ggxvu$5URsQ_;Xp29f>QGQ{nI-dd&=-mlwAAAykt8Of&^s%qhd%o=@l1k|=dv zlqg)8ZT{1j5ajve^DydqSJ}0kKFDl*3@~E78?sH{;PQgjq~YpA4R%gt@#zSIFYwYp zc;cm)7)mRtnI?uxXJVUCVSuILp-xf_FhHTaX0D&6B4vY{ygnl-V3`wCXs$?qpbDg{ z`D84l>ZzYW&sJvRFvyB=P;APL1YOpj@Cndyd{QOADHjsSvMB(X&Pe_?JMIPO#}dQj zikN3R@Q<6odqr2 zbnp#92ghi^5mGAQ8%zb?aDB!XRZzjvJlCk;w9Gs5<9$A~e>(2d=EjURp}HqHu!T;a zLB` z5vvUg(C%nwV zfDsT(f!MjL_dB?9%RxzndXJ`GxV1wQIvYwtrQdSRnHwD2I5hBM$P*IIQ?%WemVVgj zb;L#dt28LK>+Zf}5-@qBMn`KL+r@drQp%-diE{WOxiqTM!|7a+Zv;gi&CZW@eH+xQ zU6$x<#hy46D*3MqP2QO5u=|>I?3z5SD1+H_U*wAPT6aRGBYJsb;A>4}v1NF)Lawcrv{=5~)+i+HW=I||g3u(ctR^K5&(@l|`ybJa=B zYUfje12;9OwCDnAX0BbSG{>?-IiOq)Y|DcV?&WB3?5@7xGT{Au>}^5RLpL% zSwmSa_F1ZiHt7Qf)UApY0K`$`bRyM6jyZbW@Zho`y>7SmLu<_>7%>2K>tA{l`buhD}RE= z)!(8SUIDW_2>w)l75zvzG=zwMpY;k#6dhroB+LzAZTFKMFZl)je%wuJf~`raXA0xH(3*MJ}VS8 zlTCO35Z+F6g)XS(aIQ+F6t>0snSyyrY2iBVXo1f>?MZ&Xf49`y>)_{A-=j$cea;B9 zNR2TEWI9NOfGmqA4C)0qAm0ievUQ!1rV=y@yP#B42ZCMOyGJCMNp=m3uNW8t`8&Vl zf_-s%QnI{!q;BV_Wh3AIY1yn{+w=q2#H{M7HSQYe=D_Svnb#YVf;ls(mf_c1)|f>Z`07FOERaG8#iysJ$NCv=_Jlc+6y zNviNWH$i1nGF$v5D5m)1%bvUFxbGj41vwePI+WpSc!+vK}6!JDq$?-2~OPWAW8FW+loofObfrDo3 zIw{J}kn;%FOu64~J|ML4JI6s?jZ43?9cBCY+n}E9oKH98cLo<2b*0}~zzH-gPJIsn zh(z=Phb1g;68dUwXE+mtA5!9YAhq-#`D8IS+)7*HlJyfW)tMlrE0uLSbS8*J`l&6q zO2P&;^iMkj8jLV+xI>?iwd@!vMfI@Xc`yt)e#iq{cN{*7osKgb3xR(lGh8PQxfWk2 zNekqn?f7V^GJcz$K{(i^=S>+Ba#U7x!p-Gv`JL1JPaau~^0xb(LxLq6$Mb)4pB1xP zuYxQL+Hw`t!7jdCo+hvWDX*@Fft$Gdj~smR5{398ZxeLzMlm4!NIK6!wKUYwp*Hh@ z^jNyFHs?9AUC-5QUm<^k52$RY0+yTO6F7Jpy_iKnNKdP+KP@&RB1U~SvsP!ZQ41c9 z9FguE(2P@sF31$XDl1Ne9dg_TCFrW${mymsJJ;Rs?5=>M(y#1%>la6JwO@#$a0S>t zC^%!$pZv}~zyc)c$|V(|fe%q(c@lYh?7|%NI}d?>X}>PNGb2VbwU1~Nk10*<{K(+m z_`8n@ooX;9SsU^@k7pftnqflnJBycak+Q5IYu}!8ydl3cpY!B9H3Pr15+w`2GoM$_ z;168b;3&1f3GFb^6m02DFf&+F>#P0JGLe697)9Y=!$6YBS4$@5!0)X73l=WviV`JK~>_m^&L{7pr)t=^p3hpNm0;U#@AR{%7| zc}$rBgQSrYyb$C~cOE0Ijtr705l?f;ojMw0jf^B=0EPmZyzA_l) zr{(S9fIjKXg0~+tvHUnvwq+4i4)0S6^+f)+U;XNJ;C~BVQ@0700_d}xFdfCv6uVJ@wnLn&^z(Nb=X0{ei>rKSw2SN*vLt{!Gm|)7N zALS3A^ffh}m6Yt3C_jk{n#nc}g^JXAviBlNw=5=i<$T{K+wiOXt(Qkp^zgecxn<#z zhx*%e!@uYA8?)kf6uqIJ=S1qe{zv9dbpd$mIuG7gmOmo1RZaA_Wn16Ze^I70M$=_lKl`~=`(Sr} z+rt!{{p)b|O{e-VemGOTtq*74bSiuC`$C`5xmQ1Ys(pEM=AXRrmJh%GyB_Xu?LGm@ zWV$bKTI}|8%R&S|K3E&zR&JFK&w#Ev2(#*MQbpu1<{EVwFl84n)Vsf+cF1t2k*oVc zF*Y%E`Ww6dN>A_#@?>8h_Zy2r4=!1FCi1sX(l8BJ>hkw%jyM&=h)eE%n!hmHlx@bJ z&!f5i1#ihV(#9?|{uT-^xc-T^oLGpy?}@wm8~C33UHuEP3$Mp&ZaaYX`o-BL)ZBbM zbuQLBo4)^vxAZsN1uzYYF5!jj!t4@@7DU+vWY_>PJ#Ne{`2HvEBGCqClfa`}X{4Wb zAQN7vy9;R-=#wV|-bod1B4}^{rL=H?1r0W27v0srh~UB#qP^_Gy{6}?Bk8PY;%VQ4 z1`nlI*5*-~aq7zt8s!h^d#vy|Y}Mn@WEgG{<@x}vnO?rF`6jh{`20Z|YQXd9 zo}kSa?q7}ams$NxjQ62}%<^@EHsIt#s`YC{vE<6{+*y&;lN`8fS5_ zfH!2rtwH#a8WY;pn6KFnA&gxFGNOSzbw?Sv>mUZXC0l=1)s?*`|F+!F5GScits32B%%OZ&&*%y#KF3vDqvd|88WO=wu_QkScUco%J8$xw zJTV05Vrzr!)`>E@26waQ8mv)%4BIwh(KUFvs94c8@xYzMwvlmX25B#pRCYNFm|)MJ zgXApZQ&xKsU?YGo9YGqG{>aNd#&-e2K-uU<5vi@(D01>1b6uozT@>LBoJ{3L5wPp< z2pU%ADSyDr<1He9w?M2Ub3=blDA9BV_F|4l+odCXI}jTM64t^)z8>Cs=8*IsI9%C`!sv!fU3GN)J| zRYH!}W_|ZZ7PksDQx$-fkcZn!CI9bz2C_;p@13S0ssh*YW&}7?UDl{Ug`1H#I7yWY zD%*ovQoR9O)}#`f|-JrXlDvqnmTE_Agqgy zJmThg>_TOdi^7um40p)Ofpn^d1T)wxt^y*17$Ud|lzb+Dt*wxv=C9BOi^k)D)`?Xq zI+5GN{q{IQTx;H?JxOzne>e=7z}_oiK!iaCUl0C0Nf9x6Q($NNv1G*@_C1&9D{cS_ z#=eH%k^RJC78M+7Ok2fyK4GT|1Z(atmH4D%-fOMLR8vHo-_uT)|(!;~2(j61=MK`XmEZ;koLWjMDE& zYqJ1LB8EBVqI#B2R^*`KHeoU)actK3i|zEFG(?}(VryYRh;WVJ=|**Xxtg_Lc@dUj zRR*=orWw^G;mkr;U8?axdgncfl0>$`GYlx$3g6c5GsjuMX=%zJWI5DX)zjo>(06Zigo}y`|V07WK88+QQ<#f3_{p zW%cmH$_dQ)@YdN#U?KQ2%?SU#2?7u3kpCDq62y>-7;>aPfwNcy3b&zg7I>~9$%8mW zC}-{AiLtg2oIGLrkfpE`TL;O-l0IZ7>S`RKBco2!hh$*jZj*sQCTA&OzJh6cYe6 zMFt-2-OKY<9-b(`87_~;ClVQ4d>{#nL)%}y30<<>4o~FQ3pqTor3`?Y%YIK9Y8WbM z^^w?`>&qyz=36G29acpGaP*EpJkfHI>@Y;54o!(^ZXR!OP!TP{7+q`7oZ+te<~UJg zLuCUrn`mGE@I+Gf}M(83@rOf{5;NKgFmMEL_y zP5i8M7HEaup?r6}hr<)4qZexv>={BaNGgXX!U8nUEiF_#JP{?I1^hy`b1J?szF{E- z;v(4G@M8x6!7spQimY?30)BM@AJ$yfwL&Y0Cz`IX_VC2O!MNCpUW*piWc;RG)lho%{@%suyl{J^jW6jCWNW<9Tdj8yB`9h`l1K-`*0(2xeN+0!g)#~VeUCNKGBy@)DHS* zu~V)TmEz8jkkK}{)t6Al3CVFM3`d1lpJ=5Of|8va@)%fVp9xA>xjY6F={zd5@3^yr zCdPRTh=6Ma%JVGekqb&pMd?zoh#)AnP7#&3bD$a*mB3#}$Dl|gc7;`WUhd#r3H+9e z`GXa2!9W5HrR6#-=DYAj2LR9_Qs4cUi%Ula4+UEeD^~<$obeE16w~LL5ycie7O#(U zeV!cqpUa4$XNMeHC1kyNNXs6qePpaRZ`O{Q-)-e`NBARJR<>#>QvlG=#>}|oGC&)@ z3NMS?5fvFcz<_w%`B32C?KB`v_5!etQ8@!iPpQ0VI`7z#^yT6Bucm0UOgrn!zMA5V zsJcsEpGW;w8FF}Ox)vu%1Wwt6_vmVrPq`yuLc%)DfB5ZIbc7rc&=Ke5X~)bAf|B%w zc*;y~tl7co6L#XUKD44wqA@gqR8FAmUIVKce2mPb&7mFspqDJ7YVQ=YVjc+1m~Gzk z*JHh|Zkc{Kbb`~j0QZ(22Mp0QShM3LwAIi|QpCd*TuHKH}0UTU54`Ju97-m)zdMaKzFl+qJ{l#%TYsmkd96V?Kw)$nm- zG)e@m$_a9vGJokiMdfK6MR-d%7nE3I4i%q zGT}aniGfdofEu(Xt{#*LSO?0)q_l{UeS9w9384p_!sVOm6hL3mDeSu|Yjuj4pdR0R zP_r7XWpRTM7s^6L`51XnC=~P;6bkQepiu0Lt|l>vwPbSUatIT-GS9ROeNhFeLT5W% z$Y7u%nTCB9yQ^6V*r|nPv9FKv>L`f8ih+E2@xb3 z(J9PabP96u#`LK&*%Dw^jGYbezbcF7P9`(Z}0t?)#znW^qo<}{ad+l{WjMIG+ako^@BHJz41;e zp%H6~kjVe-{tn5+5qglnmEhqYyrqzKX0@>$RO^d6`-R3~+6n{QPYaakD>CBe8($eQ zOX1A6J<@n<3tv1T?;`(>+m1imRPm%9+)LT>pWvj#)7&Wt`GKPJEQOD%5K2F#!uzPI z!Ut8zDtI^79Ip4kc#oM>3u--%U8UNO%CWklwp38dnMgWQE;eWVwJkpN0Y!yn?O^nR z8MBHMHf4s8aauU9w^Dh?c}la3B)1BS$UuD($12inD`RzWN#=Qi+B%W{?paWzZbcBC z?mJ>_6Gra-CodGHTS&G(O{9eakz5kCa2>QA_gD%4`&rfPOzJuuU&~R0;D>qM$~a2H|vdKTU2q z1D%4TJa#%2K4Q}%rwm?sD#2kvvk?E++5Ia)F+FILP^iZxf6s3rfrsiuJO4$qa! zY(T}V{rR8#!XL`&1Fqz_8m^Jl&BdbTy)HUZB<&Jp;`HpA@R+rut^ED<7JHP8Hh2(+2=ti^%QbivO%KuZ+UW+kV7GFc3@)kz5 z0h(6q8-ZmO8tMqF?2B>VeK3vWIDjSvzy{gY*GTZ@muM$sl=1VmTYJ;Vdu+9o<;lnLfA!(j zNO4)`AMl1vN?-r-%smUO`}!9w^w(5Du#%m$u=2O*JqvU9ouHZB)Zv@T!z~etw`wb2 zY2LH2<-Y8K6RP^saaD=kZ(f)i_k>T-Zdz!a3=r{qi+MTu5mwqbyn_0iH^ z7cCe+<7Q^c`+1@GT4&(XU}Zg2&a8(@`Tt;h=f&2B7ly5kUmvzMt&1)8n~%fRh5sdJ z>!S4#a>4m%i+F#UZ#+M?E`DLyy5#G_*4A~g#Tmfku=OJE=kG~d-(<9vj$NiN7E;zO zQ#d!LVMvASC)W~KPPIK2#s^b;u3&Ka4Y)^)-Mxbkw-t<-YY2J-#!S3APmlB`m-;mL zT8SNOGX@%Pjt+}t zuU)qnMr#D_E&&^4?5Qiu*b}BcP`$er{KnN*)6rJh(jj!#uLb+aeCgUGVWLOstyJS@ zM^?bqI6Qz&Ugs5N8KMzF^UH4MV~jRY+z*L`EJX)E^|NFTfPL<>1?ZBuUn%bZBEP>J zhz9vkafhhoGrc4-10cN+A6t?+n9NI3qr%)Sof;IIyFLHMlCY^e;254cVpXWjGR$X9 z1(z5&DOCD|6ponEXU~<8;l+Fn*wIPL43%8b?tQ*vLG5XK^4ucfZ7YvaBkUCFIalQD z6l#w3!_Oiuj<%HqV%wU`WY%T~6iscF%2)sOYLxHH&;Fa$sQber9MqKjobLWu>V%MR znkwDrxyv8?H7dU(KcxbzY}+_Cqhn+zUxg#KnQeL%ZVC3$%24FoBKb(|uA8r{@-Ext z7*GB@?dSJXU|(NErM6fU-A(Zn$k4G}g;Q3u>BD@Dz0`;CvqXKVkm_?sv|@YR9ZktRpg$8yxznoA?^{s-pNS4HX_C-3;?^1(!Q$1R56oar~!F%(qnxnaRB?0_#MDI z4#8jvyn|e}?jOXmni^6bDdd+pHOVe&^Ib`rYBK?vBe%q4av6H!3VQTNa2JaGCp7`# zdt0ie=GzRGD(yfMG)!_0hB`4V%gMnq)H`J9;1mguO0P&(W7{egqgn8Akso0o*c#x$ z16X6;C>E)=WbHgumY*6bf4nTm)~(e4CCWp;c-ZXY*tGuSP@UDWb%--n+WGj{I=ENL zIz+W<+FA28_Squ1-oe_^0)`&z=effnP_4SM&Ia9Sk;bW?U&YVR{mHcbbQ0H;tAPQ| z0yP3&iH(5K3(0jzjv7zKVCwk8t{&F%RA0@N|D@)XNo|LBQ?l_*`SUS!OQ4FohUxDs zDnNKs&>0j=Wp&)Ru*^_?ZtQDQSt^IE=b|Yvm&Zpb2#v4WJ4`iAW6M}aEMo|{v&aD~ z;vWTTv6aE##mvn#EqRM`6nlr9I(;Y3s)=rmONcXhQ^ub1$H89r^B(TOi-J#FY`~<1 z(K;=O_2p69kp1Hy1lb)S`VdJ) zs(|P&Mm<%X3u6Mxwo))}fH}Nq%9lVk%h?*UGw5rhZzm+Bk%BnBZC)VHK@8p|=_DJg zPt$p$L}7-7p+RZwYT?CN`^5?UMmgGK!RjPMiF&)WL>aYo%vzOTRJxBXNz<*Q88`VC zky4)IC&X*Cot$8rhMMF*q7pl}zn)D~TAW361m0o+h$zbcH|oqqWW*5GFR+{BKXor} z*7#ypX#eG6#D=A3j9LLlF2Nv@R!fYcJuk4)2u2VS$*9sAy6^ z@6&d=dE8h!y-Kc{>?8zp!DGbJV-B!VnuwtWrI*R@CYfQaySN*u#qlfmWC?VV zw!@G>iOu7N0xh?I@JTN-@F!%MNiRXaW|^$qiM>$ZXls!rK2czXw-wUU_IWt1=L=4b$#jGtL`s%=1?%1ddZK!9yx*BBiZm1z}u62iasfM`T z0KvZ^J@##1fs2ei|0vCLvkB6|vcARB*ruRQ9$@h(6N9LIZ9 z*{|z#M3enGVjo061b*2z@Lo*4va3Z6JcCxJ>p5*!nPI-kg%1!*4a+}=riMDt zo=_^0F6pCCaKRKT1UTh$eKIIK+0U9PD(MswG0r07u4GPZva)?NH0Z)qGV=d}*{Ia( zUfm7*m{B6Wg;cl)^IB@2$$ZXkUqvZxDgi1h~Y%OGZnY z3GRMDmRqTcSMmrdDluyUmDutKq!aTkVpMT9L#8{US$6|5W4lCT1dEV-1^EMnKPcw1 z9!SAz`Lz2-5iBKncv3My)4WI(_+wF!??gs7r_r;(1iff-1lmV`ag`MfaLNw2OjSVR z6AM}`r{fbk#Y#m=pG3u%0wa3q{ts%&EP%}x>hE3-E*?}@{tab>+)(KMU+a-)5q$1t z$%X#0E^VzWZH}ky`&(5-NWaw$pTNd3#lJg)?Qt$ao#VkXi58EvEdj}RSW?*r@txGD zcp55x9&@3_)Y-P5l&Qx8D6Nn49blRS>qEPK?5wG<)6$@_<4eu(U=O(rk16q0GdwtY zS%!x;SQ2Co-cdMf`k_DUSy>%yBz1&n zwV5y(vO45sA9A!C%t^33lG5_24BKf@uTHsfJ?T=?*~U!{d?SxJ?7%7Md^3b`C}V}{}J&L<$@o{;`!5-diz!QkjHR(`PcfV3``%aNgt%rODm=i^O58~ zBO@wRS{a8?6%&<$(?)*gUVEfAH=rU6TS)-cD6AwO=75$(5Jt*2w}w_(Nl;~Y2?IC0 zQ_`|oNt&Ni9;?vth5UqOLB5E^vCg+l;A2GgIY>N6Q^ z-fw>+mQ;aPaqmg$&2a4Dy@pzuWTOTLPWvEs2dcBSfxlWLLr*7VBeB~63~1r4~88C{WW zyn?|8yU#2(6lQ<_y#$#^N6$61fiY0Ctyt3mkOagEqFA}S{;0b3SFoY>? z%a=zG>9&I#oq|)ZgL??30N3tm1xGzjsO}CMSHXx-k%kyiW&6-L;Uk^N;S37)aQ72! zPICzoVFc=WPom4$OH|ZZgNRElEvSMDe5nS%+^P&M@%_^FA=kePR%oR_hoIm{8@Km3 zXHxba9zfZ97AG?!P-Y*SF=Y0kUKX;Ky9>?q%Pz_$o`pY^Kd(huozYHWrTLl+TTv@?$()z#6#^hi>>V>_ zLyghVyxD;ToKY1{pwxjksFu=1QFkRq-41-*?7(wzu`wsjpR|%^gwTQZiC!&(aBq4F zD~=$htVHrODLfOSuW((BVf!@CH~Yv0mFf-^bQ#_T4r%h?r8$c8u$hRyoD|?lKgOWz z8e3pD^1!_%k0DIX-Xu{R!(o#Hyr3k$FX|8Rz7$?97M?7lc z@hLI!rGb=`7Nh280yM~CB)Y4avsW^|+on_5TfK{r0~2hwmc^)FZZS@9S`L&!CvGtk zcHYsq2BG)CoXd`56P+wZ#SB(3H0nTR9)(#hK$gj5tV_`Z4D+b4_SLfD6yU2aJ#mr) z#LygNDC&$SbiO~O@&Xg}I3>C=cXceM^!afAtgbbiNNcp~-xCoDNA@z-6U(rk3wcnf zBCNb3lR=Q4CRjpr128xoh`mZWRg7qZJRuz}X1d{*!eA>AOR-L4(sI&uaSTHeIHiWI~KdYNCCqj<`^>yR6%{2rcovZU>ZgCiEmrQ{g$F`H4~rz zmvORI4}oL_bZx7gn<7J2{#IOy4bPC3ee^Mbl6F6+ga8zHeA?omv9u?qMh+gRjL&w0sUL7WCw6V% z$Sba2N{TYpl;5Y>+3RPFMLCfF0No%cUgwwVvdFv)e0C_k+Kc8XV&b$4CpokbpQbgw zj9{bXJA2KN=yM%6E84dGdZdNsfBW!N%=O<5vJ2W$P$gJf; zV9vPE%Bes4m5;m&p7iVpFQNkZ4t1?#FbdC^>ly0_`=&DY3D4TmROewtMKGD6Bkvio zw1ZYTHQYNtA~?V=@uMC3^$*IH;{5j?A7M*z{)Z}pg2b4NQ^on8Q$ztCEODy;pDoBo zgpdC+3lfV#3vw{)`KF--IkT9*m)_&)k_vEvX;uyCq99r6}0fe(@D>a zCmpHFEuADbP`NEi4bn8mb4d>k^5uA3Sx%&Bm5W_oUSq^|Xm2X^ZZM+(I?PO%U{k*$(#SLCjXWvP>t7(DY*{4baiwaSc zSQlLue2PfRTSvR^1|}p7&X)B1YV$n5a3T3#Jue~<{1`+axY=c4-^}6(s7g3UWojhW zB;4d#RE!k2S@&i&u}_r^#g_pBM_qM8oGBIOIjkz7J$~(`%D%(I6BMR06q*0NI1p%! z|9%xR&_DnHe|PZT$pz$_kKA^efdO~l8?rm=y6@xsii`+IKcgS&`=20~OB27GKGwpFPlj7WS_A}?M?xpX zNfWVHUZG}}hrRI5xUo=Yea7hT7u&Rc?>fB(8IdtO7Z(}`d$6*CuTKCWifhC|I z3XhbS_eg*+U=M771+0|}-oeG94*aS{Lp)1eF5X(PZNk<77ggR=mfR*Y^OvRMw z2rw7NMBD-rtsw&G=XVWbd@%=b@E(IB0aGU!00Aban>LgU&|Dn1phTYGkDgc#Y&mE6 z4~FKf;!~BIw@Q_2X-pTFDwA6SMnk|GW)Pau=vfSrp2!ng>&Zw&|Im?4!!09Yu&d=% zf&H6zYxGDawQsgTjd|t=$Mfj2#odVKIg+X6Zp7BG8_}1kxe*DC;uw?%+5kYa&_bl` z*5B_)Ci3mo(1fk%wP>*qO3rD>UJ<`;=+ZjxXjPc-9URF-R{%As|p6eOyOIO9xPpCv@=vZ5pJug{gTtf2yvG+F6npJ0k=K1;V z|4)5Y6i}(Eg!6q?!7WmyH(G(3gf{n-Bq1wANH02z<;t2>V>3!up##XUm|jJwNEHnR zBPy+^(J5oJ=n<5(i9v^HFNW4q(@WB36qQ!uM4Q;epeECF8$0tn?>^^z-@SE|$ZRPx7m{*fKQn9ag@S)$b#SO5GrxO%VU>Rn{SV+bDOY`s`vJ`o%rD~64OwvnM% z3%uvNcp{{A0sbH)On`sLD?w~0xiXM8i&PJVq$hVTHAjwf_Y@gX@s_VS2`4NyoTZf$8txul(_WvlPlu6#V+d2w8By73!3_#HJf6Sc@Y8bmxkNhV#z{xG0lVOc zsdXHFJoWTC9uF-@Z2im_i0Ov0Pd70T`1fV(r;i6?FI0T6+BU)0YeFDWZ`LsOuyV_d zhOqCkh=r2rk+Hi#fe@l?&-9ZN-?9Mw#pvs>PBwS(eFmNQd)&}3|Weg8FBlqfC+m<V>5AB7_&K7@sHJU_$6R2af zCoQLgf#%i_WJ1JrsG$;-W0L~oj#e^ zR0%eQft0J()y^$*%)&gpE%{{*0bT0BxPk|fVGR+z=+vhE54cSKaP8JK4qAxt;Ewj9v*SMw^uI^p%pQD> z!;LG4P0zoYF=It)#w^^x1c1NjxC_QD^GL`cyv8wY{bXZxq9aarvKh^#3C34sP( zl=fn_WqaX3Y$|L6{PA82egglaj-3%HO=WH5gxx@l!+`{OCWfy*{_~ANx<2s>k7xBD zSE>E6WL1Pngh&q^s81uKzF*rG zq(EBHm~#1~p?b-bJ5EOU?DbK15Rs`3t;#G8Q((27U}>jLzys`r&GMH)^H(uBtjecH zR^`-{hETO#A$}|M5*;K3ZA^|?mC-taEJDz|!x@@)^DjX;@K(jfZHki2cHVAbr6pq4a0vAOU!}1}=WY=|a2ATj3pHBJ)?oqX= zGt~|D7Fh?3u~j!Xq!yGfVjHL|Y%tZ-l<&$U(R{FV?MXK?>vatSvCAe9d-817#B|(B zI_ZWSTxZcW@*w4n)4t)*u})c;2k~N~l{@%8YJ%_U ztr&6kO{)Tw{bquQopXY$g*vcU8N$AH3ivhwE(Ys(D!9tHZUFa3RA@Rf%yuwMbgbfr zc)e~435K8BaQZG@H+>7S(QwP9tm>(1afIgl+ME)JY(nUWF@@&T9$v#3mEH#|3z^ya zMG`pH#J#ubMvD=hvZ29qqpyVlF)fJ-NC!NGGKD7&K}vw<#P>V_(})i&7<HX-rxKN9?jxYlY2%b_7e;Rt`E zwRP1xfa|zgAn|7vkEsRWmuGZn+i`$7G0bFR9Y3f=#F;Y&NI>s{Qdq%79@Uk=f#On~?E zrFufqs;ob*O*T#%G;~VKRsG?+;?a!&M6)d-mA<-2Nq|k3L-f+@W*r1?g8ACDfmZRD z_zfi|H~%z{o(lmu0Ug;`GpLR42n(j59zn0Qp0aiz_=ydqbNn*rvN<4Uy=`^f)O6yG zQ-f^KPE99Ik5%qi^+k`@js-$~Gkq(`>uNa-KUqiJIer8UGjapZ8W8u`ejEbQzHIj( zBCk7>Xd@M25)GRv`=Oax+Ha+zGrhbUNkw>hF~{337I9PRA^l8ua?rfXw2^~2a*6rY zYKl#h5435905oPFjjc$!n=BhLO{;yyC$s^sF?($zQKW4|vB#mCGH#m1#ASxqfc3Hs z7N{;bNg`Q|8$1)G3(02fnSD==nL7)b0cFSJn!Fh&94bhqtaaJQ>{JF?xH=}+$Q(4w zDPiDhLji36F#->ppf*Gagq%`YN9vMnO_@l|Y;~UAW38R(c-{#-81~wo|E$QWaZ%9J zGW8r#@C$RJiy$?lrbRQFJI0zJZN!Gnv=&sFX+!XuW^|^6uyb5+Bx&auxAM$;x$^L_ zd|ckC;+ey3&*jC6Qszs5opl0~(Ng-i zD?hr=p1DLZ!B~5{8XI<9UntBQ#!~g9_hF~$h9-lo@^dI;6nt~V_Y2@ zX4)|7uE4QvIV9WOL9$~K5uYr=D;NYe9n6mox4dguK75p4rgq)*F8{o9N9+0LlP!(s zU-=qXSOp`d9!;POZj4nRgSyN**HZiIr@$&$J4brEfmkOWDTvA~PR+fzyg78vRgeo4nc24_2L?rj=Y289;0H#e=^gPo!>~4 zp@dJI=LIJ=gbn6F{YDn-2x(qPse(cd@=8AEDo6r*SHXyavegL15R`8X=%A&Wj`)-{ zFk}^ol~aM0E)T>YfX6b+E8Z=ocNHzTM`sLYoFq1wFz@tJO7dWMbs|obzM=@6^g)b# zbku>eac-#S5Q|bab{;_F){KE*n)j#!&|_LxDOXlid(;60C?!~A#7v^$7KZo$%!sPU z>ia*r%1#s7AlCDJIa{1FxCk)7cq^qdSdB$OHBC%Nrc@m=_4F`yJB2I1=>xB(lQ4tq z63y`hcjRctRUAg3rTvGa-EDmf4H||I z88l4jE~Iv(O&U!5BImd^v45zOCQt;C;8*#$9Y{2-7LctjF#%d1@$hL!Pn@KUi82O@&EmqJNgZayq;s4)^Ek1sr*nY>9u6{E; zPb9J3y*RO#I0UFzN?`7URtQ(ipqB*swSN(MdD)B9AYc<@*{DjyUI5CE01VI54Yn-x zzu}yrTx5J)E=&3CnZ| z#>1D$SS1b`Y75&+w?oNb71Jb_e$URhQBVOw)}A7Q3QDuP%}|r!3CPe6l@ACiK&rrn zrf|`um5wb+Z0dA*&jt}oX{B?63Z{~;aBAc$B;Zjj>5S1$TInJkhHE%v$|+p{0}%~$ z2C8Ov%hNsuGic~;*uXA5J|O@)*{DtAU}T@pGb0P0`tA@sa+bD$lW4wi^J#64sPb=$cpGsua$X5>EU7J5QjPOw@sYk~vZ8{BRrar5!QEprR zM^m3uz;w~1iF-Ag3}Frg{NNvncADX6Rd1R0TJWKM;89MqyfFw90QVIuO<#~x0xBf_ zh#p7oQ3BNt56dHoX~StX4JOBV$p7`^HIX-9(k@P&}ChVoWgLt`WNqt zTAR~*-Le%2@}|y?uq6$QOar!@x-P=Z2K_zDM^o)b^V<5`k8wY< zb2PiX+O%qDtINX+BCXo?iYIpuUR_;qigd%|(9t28}GilAl1#&kBo@I!h$_2$859^;a$aVm1ThRNabZuzq}q@4G%D{ZAM!5-$B2i5rT2Xd*6!r4i?DVIv; z91|!P5iQ6%tQ4g;%oswEehNiqSSW%nLUB$*H3biZm?ytPPNc({*%SMBO~Gu9W+|1( z<*j@ZX`E%fmL;YFmYNtJ6P}up@r7y<rZG6k!0(FB$7Y`c=dEXATLuS+d9`P$+pgql*|~z8)(2jYDC{*Fh zX`&9WUxlc{)wu{MW(nhFRMi&3v!^K9Zs`l53C7gbudK8+NiwsIjT4FI+(@D@QJv2T zz0_Mj#WBa{A++3w_b9|4r)?fc2b+lD4mS^Sh)f|bDOL_<2XF6}2lLy9+YjdNTF8RK zY$t#PDug<=i<*@x~$QHy0l0A~w^FdLg zPxgNpJMV&InbIFxZNiSRvs|;Vr{j~Rk}H;0Erz@0g_82 zK=zRM2H~WfA1un{D}snxw`x(p>K($jYELFnOJenmTZtk}vPi~xWv#wiYJ>0Nce>LjX!iL>y z`%Sk}fwkTG({`2zYo~&%j`G01AFsLY?WZWSfBiHR`<_sJcu(?F6$n4va_Zy+ZVZ!<( z0-B^c)J3dM>@Oh7YL8@XF`m2`&(#}`$Fc|v;mTI4v;}y}+NoT&%zmd5!IEC5V#t?k zi&YleWic3QR}9H*ZLz+^6x}RzOuw$ZMjUCBceyqjqafM}RbiT1uK>^32L!QkU`XK1 z);R5-Cb0F)8bhj%c}{bucAcu?Yg%*aQp!g!TkAp&!5yJ3o~8vWL_Q53w*Js(rz5<5 zh?+<&B1YyRTD>$F0(<2^&9Crqt?8Zbq|z1e5Pnv7-;cCRkd%W5MwS#a5bj413!#Ay zHguY&mko=>Vj^Rd`2dbL!~mDouRXF@_VON;;+^8Bo;0Z25lb+9AYar&kW3`#`3tr- z;ABt3Z#)CDWXyhu4Umo29;i*_&dpS{z1nebw*O&-hNdF4q-si4X-73pFaYnbdHCpH zhtdh$5*@@wwwNX|BOt&*`(O%&>Q?2nsatQUheuL(mTI2@EU@I}SKFDnQD;VOJt zQC!p|O;*tgx?9Xo*r!xfw54KS9}10HQCrGsSUJ*4Alj&w)zZjep5ouP8``|WT=GV3 zfeSkkjDMeGVBk3qs+hq%$qF0Ww7`{dZ2{Rlw1v&~sLzSG(Z9|1cAGUe`T%#WEH1)e zGGPfg(9MBMt{B8DCuUL|VVR4BQYxv?WpSe0IvpW>MKuD8Pn&i!@7i{F+^AKNA?=XB zKvB6d#Kg3pj%J&+ht_c2P>*wSP9L`ss+Q}74H~AamR=G>$nl7ZGO0+INSVY)2^#+5 zi2eqeo5cXM++O>@A1T8ZCL0b;`JC0&TjQ>JHQl;kj@jAf%x~-FJ)RGCL_fjnSNs2K zsvXq@@rMANe21&Fx}f6bHEGL368^JlD=5iCt8TgRHIyw7F2!!K4fv4g6C+0-io5F> zNiu4yPhm|@FuR&XSQ=v=lp%HvL0u>^KY;zuYTPGlpBMHERIgSQoUJY}&LV6g6y&ZO zQprNyp8oG3Uh^*hFp`Xs5d37YJrDRl4|d#c(RUdXW!Tm;g!u#cGls+i0_S35?MscT ztK+-`6X?{-gvkh1%!!g9Q%RnV4y$VCHFPX{n2y9Y0Uqx-dK3b+^BP9V=$O>9V(Fv9 zSFZ`Betkz)j@S_@AoS?Wk%adJKwjS|il{u(1Cza-ryaXIW&=AfEpMX+H1k`y{0sqX z@_Lk@OUpxCSfbbS9OiosmnX^Cdr5IMcdVi-tMcG`VMqiWu23>S9jX*GrTS?ebG zf-0uw)iE{hP6soMTyu5D5eBb;Y=eATK|ZktcsSWR-?_texRv>h;@t7(_9}OV$1+Lo z23t~US2g2TAFiKaEPLA2uIvo{!|~rx-rpJj&CcN88vp(A@gKVl70hc}_#7~6p_pLP zLh3Ald{NNBG&TlZBG$8sf;S5zEfb(sKgZsW`rNc-;~_d)pP%mS;_;tvB?uQ=a>2!F zf*%L{(8U*KjpisV@?U$0*`}(_1<>bL=cbY)b^Vy%CfE|5F1;T4RgmW-zR5z-7#d*R zVQok`d9Y+G+mBgo8v7e$jI<%~qP210I(@zMD(D!%GS++(h!o&=ulE*7jh!-On3+2un-~#mlH8341|+`PFNN(KxDb zYBU~hcG@B8vRCo2v@qb42pi-J&u28g>d zy&mgRM#m3j3uJ-*Uug7(S5*aUVtY50Kv6`ROKG6giKYQmc<8eb0{|b=XnHK8w%T|D z%ZATruKSHVpYVWUj3;gM+R%6~qI$X9!Ui&8d)`hMYK=|mP0FrRK(l6~ELLiq$dIbu zJ1j6k>H2w!O}&Hk5P&rO<+=78W}IQ7D%5?Vq}kBob{yyg=X-Ip^>F`Cu;+B35RAHy zK*VLTg`GoM<$B5%VbUAogZNk z<&m2nPTk57*kh~+JB*cn8P@ZIv*HcH~t#Q57-rI7hEU$1#%|BL~A+mF_a(&Quy)NP4D*P}KK- zbhSBRKAt*y_)9l>?V*hR$4e&Cmi7;GmJ~M!+EtbKCbJbi=`+6QvPYY9&ec^r7AG`A zF`<4{wV!jqRE-^M?r?n@`N!mq<>7jU#H~U1D7h7JrO(Y}Ekhb_l7i`nXcKZqM>}H+>Oy0K&LEiuG6(2E3t{H5M zEQxchvE?SG?A))H`E*PVaU5xSwE1`NErc)8yW{Zf;b@>X4$k8PjtxbPEU?Ro!!BUG!W}!LBy%v6& zI{2`eW$xNpmI(PXRZL)NTk*PSjw1@%iS}HmH51+IUuO%<8D|-cPteFUF+M?K9c?=$ zDPa2Aq`!q|tKQ6rreZ{CCWSo{*zWtR^Z47i7*r|LKrBNmV@$O z3*oSlb%>KS>n>4%VC16*v;m{n6eqI`zLBFC&(a!OkK~S=)x26Py%=c(IJ@3JcfX0R}aL zWw!XR8oVaVUW0R~v2zirat!)B!4w3C(lZd@1}*A0*E@XCgDLf{q6rsHk8~8N!&3~{ zQ_?XLEj1gp9I`3Jw8-^rmAVRDKTX!x%bO@jf+Ir^W3EV3sH z(JpbH`MF^@+}S&ck+zdH81X7ivOc`I3MSeAd_Kff2g?$c%Dp&uccoud8i*9DTF_iJ zftceGfXgmgOSK4}U37Gd&go)BJXFLQRoo$E&_TprjmJ*>x5^I*RPeGikg!zP)z0B< zaTQ2U+=d0Iq5lizcDO3v!R-%EROjHHWILM;AD%N?_)^m2>6L9;>ky}jb;;is?8IcX z_%`~M*zq~q8=?vf3O3Qq0=-J07F!pn|Ix=_($C97`Gl-QkI)f5sTN0{*r}K}&k6S{ zelJv0Zv#acE^4rc-hdF!E#fGKsv&bV&5?6Bjou5(j+2cR67G4L97X1t;_B{GEI1CP zi- zbOxR+luAHlaO`Rl2yXy2umq+BRLPS$ogDpvlnO&w>mnR3A?3C}N@|SV$4tDK`llm}8E8-6`bO$#OPddh z9^EUVL_T+aeZZc_uLf?MS+0z2MoLcDV`;oJ1iu1sz~``_Azr$e0v&dV*}zP6X;2J; z5LIUgIE0I+MzE<&Qq!CS%Ln$bdlze?Z;I2vXoE@{f(AmU&m2Ov2+>oLfZ~7M;5;kf zjoIb6TsK(oiz=)i#d}6ykM61xQj*AH;1`o}WC$`#041l2@~CkM#i+f0@PA3P@Vtf= z8XVz?PKRhE+|bZusUUW%r9=g}+cP)JHC9KE-eOVY%yn7MMx@0O2NsAjne|+jsRErB zn4_+AUSQ6I`7VRF7xerNY;O%E=cel|>U2X8JSsEhx~1eK18gbz`rebU`9*sV-VlTU zJCcqsj9GNfM!-Wf=Zq=pWohEccd8F1fR`&!#krWR5dr74T?pG0L~>Fh8W|y>o)Eg2 zZiJa!FVY1C_iX2&;Qbn%Cdg|?!6y?1@2{ue*S8dW&c>}33O)x{ ztq47==IjMW{=!|TPnHJCb`%^FXa{}KWGFe7g43V+{)btLLBZWRIoVKfVogV%uqi7( zVUbF~Cuw)cA_@ww*$@=rSf7T3gJyfccrb0LI`7o5If35b(B_EFI6!<4N2h_A27KHJ z^0+!~yz{tD-4X{!{lY^nA!nqAlKp8!$a%I5RV-hR@Nu4*2}T)5Hl*TW{@5JT1XTR` zGgk=Iy`$o>8%yKy2n<4QM8$E{B`O|xxkRN1Q~X_OSJl-m84tW<_FZc4G`*^0N@P5+ zr9S<0Oo4RVX_b!S)^?Q@4IRI}70(TIq?E@=#o2s7ra^{|$$4HYd{IX;<(3qM0?3}> z+Por$CaBS1j^!G}`B}g{BF>N69f>oeVNI|!>IZ&)6_7zXv?Sd?*Gha*5684UQh4ZO zJo1=4))PschiJ{U1cuGh*hw&T_n(jnwE)IGALM?X2XjFJUJ}#+omU99HS`{I0l1!E zdVJVGuK~nc7mDpvF9E>V?|GVASse$lFoD21=m|&>{O)4d%p5%*m1QM)@HZ&G6_ke> zclaJzapTQ(V7gI32Gmja{`9p5dA{Du1>1=D1B9;y!p;rWaP8xdKn3Fzuu=yh7Iqzk z*wq7n(}g+V2GsKqqA|+;xq^sP()k5W;z1c-omXF4G6cEp}L+|#a8%^O|xo)H;)1e+EK;%KBG}LXww|)>Ap!waX`e%*9>lh zp&9G;iaHR;V*miigQx=foxLmYm$obTwx0rja1lGp^=a?F^s_AOdvp+P@(4KtCK7J$ z;ttwYaRD25a$%>#HZBn=waE;_0t0`}5*K#Y6VTH7076MTuN75P|0<-BATgmTGFK>- zm$fKJJ`O6gT*4Sjh_S?LRw^X0oK!CDD)zL~@`@O_OJqh;qP)mBw?YWk!nr|Fz7|DuAU@*O zMS{}UA-Gz1(`=kEH^pdf)=wtg`KqeUM^!VUYx)n6SQ0bIZSS5k_$%T#SOnEGq?bNozX!O1M zsnH|9KTS`9GCyI4C@NmfG3IgoNRCpB1A3T~vT3M$e4@6hwVLeG0Kx>hQ z2@!eX9Li}fvEb-{aoM16CdIvy3z&8V7f@`43+P9bi#SQJAL3rMDbPLR$Nt0B=7v=v z8mFW5K>Zsj4!ydb3k2ypE)b+cl!vp~+LE{t?c(abI^B_B;WkPTDOU9Z?ACubzZTOk zsYOIXfW1hC+dWk9&lfAO&!l7)U)=B=&^3{j{?AqF3X{+)$j$z35;2*CG-?0hbjn@!;5 zMiMYEHB)(f_Z#IxX5OF#)dZEr)I|vv5Qzw=UOd89X{ZJOsn3UutIHr0aJL_|&8%Vd z$sc+g_+^_jQZNX%{q?6(|G7WVfH0Ig$ckBbAoivWQ-4)OWHR_7THl}1~@#W6F$F~uy- z%^l6ljVIJe4aX#NKNL+8@%b+N&v=x_eUo`|nAlL`IZVTD`W=)+mz?pp;NMvH|If0R zgo?0=`M3$f{_ttA>~kr`nS&Nk#2RmKnN*Ed+!ZA@^fIf;kZ`7Y;@qOBq;7z+5^7;ITn?qGbkc zKP&X=G&BZyk7^{HaUMhO$80|CTrlh&#R(LmPqtXd{A5y7d(>>+U@b z-;+!hYV?LF6p)Oh(H|>AqxX>-y#WgZxqT-WO`CI{%G3Fpu%;$-g3yGP9;K^@)oUXf zNt=k6QD+0Xh{c3;>5w%&VHe1-5CkI*pep4v7sN})m>m{m)X)4JR3BM-a@ZXew!vBw zQ%V~+ou{!nWLTeG5eA9|YkU2lc2ttv2(cj${?XNB>$oie4UU*LH3gVLL+_8+W=KFK zsdR-MrULROBjvbc+qjzhgq@1MJT`&zq>t40HI*qzIj?|ItqgF!tl4_t7r)ZkI+Dhf z;#^#>kOJvevR%nr0b{3m0IOiV-~|uCY&HzA*F})Iz5phl6M_$rS>sJCX~9Yb(ek<9 z=@paj(Hm2U3%l4d<9hC$Kk|Dc)0~q#ha0ignd2R0bYJJTP-Sla&7a^_(=% z?9U^U=QryYgS{XAh73`(E^m4GuBtrF+nKt!*}R%Ghc}W9m7M1Jo+$ac@sg0OIFIR; z`oK*OWBVzc4cgU?8lN(eCnScX>^h1Wm1}=Ead6=tsU9@o=y2l1aO&vL9O9erIbonE z0`0--9))SB6(`Lh`6)HG2#(MAM+1MQNpfVB!K@DD7lvC;58AeodU9 zLiH5aK;q7fdEN%oh(Lv_^|WUm2SMpOn$;8iA1mjcF2<=(0cIfK zJCy~vO7sT}XgFnk&Zn1sUlKZfGh?OfvG7QU(3a!LmRsxR^P5xRGsy3)^_y;@Mjqgt z<@NmN0ah0d@ud6B^Jg~vj8pIgE*WBj#^IIBZ{~sDQ2Ar#~d8$em21*am3;S|>S+cIRFVid% zEZ;~PC5d%5_p^B-7w%oiUDHaax`Tk{QnO(a+hoO)2ZJPC$zAMS$Tdw~mP#5N$p_dG zxk-B$a`!Ie-QI;K`542L!ASM0_h0xJUA#vvTv?qzA^Zj3tjL#vR)<7SX$g3feShvJ z@_bT82P5jySA;$`oiOPMd}-sTBL?M71W=>gGJE4J1p1y>$b<~ZU(f%?Uu|sPCB`02R@4;OMHsp?mADhVALmXEDNDn!Q!&8U_=SOZ{DT;RX;0)eqfsz4C)$=G#PFg2 zug&9rGdFA%Cm7+r>|ApogJdlF^%Ex{_`5Y}y*K7Bf5uumHa=TFKbkEhx%I0KtXse8 zU`o)9Ggh6R+LyKJSoO`S<4*7GMyt+3>sMWPU~&_aWT^c(Uf4|?bH*(Tiv(*@bAJr@ z9HSZQP$OLEwz+p3Ei>#s>z7&d>#WPn@o%uq$aC-0CT9XdU~(8K1kxpiz*uH%&qzxQ zwKdA8CDs;ZDM1-yi9szR_PQB_{)1RvzdBvaq?2dSSRmxnXiOrMbv7trIBtax)vA6P^J7Cd4-F>hIsbzE52re6 z4`q7y*r5kaA)a10oa{DTBF7DLiQH(@B|$&@l!Hr0p-?EV2Hj59?WW5Ke+|oK)1^#2 zGTcQyz_QzP8QJB7UXtS^?Tm!)MP10Z5czU?h`EzJjJ$W>r6xkgSfWl!9WZ^0e5BtN z`GPQFYXA?TIfDWqm2mC(cBf?l`>y8NUu}P2T?W#l41zgz8QDVd9 zV&7%kMF&ruh0g57Y9>0lc+GGITk1mmoPQVA*~MnxC2|(x$eZX70?4&hG4iGs^;6HN zL>=WFMQ-685({PnOJ0{Q@8e!1vQF&wqV9wE1`aj~2DS%0LL9#2qd8^~Q@du>%w9~t1f4hji~p}<&Vm19 z%$X7|%A84ms#PJ*4GLbXETk1V{0`$(L*)tLfpP?Y?nylOED?|P8^+lZ4``%?{U#1O z%fj*ChhdX=XA)bJNg~-$v)IHO>%IQ+W5BeB`VcaC1s#Io%|r6<|KC=@f8?$DICuRY z2iaXlsO4`PuMxnQ?J9lqtd%X)U-W{8SfBRhKc`<&)l=N}KOn+HO(-x~eeww!%KLv? zBz@-oU-#p`*JlW!`3m%zhk)M8(`PmV`$nTeW$OQAIrrgl*UFSC4kmepZmjf>G{|y> zTCFrW>^140-S*G24js(*QX}3EB!s@=I0V%L@R`mJv--!kE#dA4cD6+m|os;h}62_bu>DXUR zAdCq}L5CQ24LXGKGV}0Gom*1jiKWy|sHna|TuQI%2YzE!gAXU*jfIcT>C!0D(E^2h z&1J149Lc%~oMfzwn}R$~Y0#JwRG5L-v>~jCC`>a!-}nNC-A)F_N?QO!l7V}KkCT%u1s~3! zcBc5?Cisx=5T6JiC(ohELMUEy2FPwp!H4uJEG7^B9jcsS(S%i;ImMczwHOK63 z05z(C9RgL@I;1BtvKXivqNq7VFoBc@+PFhT6%#L}{x@!zcT`m*;unYOCw{9TqdZ5; zMt)1{lm3GTB4^_+N#Wx{t~@a8UzUMU9Pwx@ur{)O1OY>-xHEhlD_}rR{Iz0HQL9J; za$R*%)lyg0DS|8vANK`LTf)a@y3!FoK3RW>rP)R(PSzi>=S}!{z^&4}jC5{*;k>YU zX$XEL;HW%w6Qb>63Ut^iX2$~SgKZH%5aHtt9P$U>k4F|^HA#tB5lm#v9#b$_q`y7> zKa>15D6AETlgL}L7Bw~_5F?1&Y~lbN@j{%0mg2|w-8H0(@HyKco`+DWAtIUCv)y74 z6c7_K$wM)vza7kLz8v)H=>d6>&^nva)Qr*H$h(Z$7^8@W$^&pc9&$ z!;gd}o11S_)B%Hq6wS7SZ9>T<_|x6yp44~Lk2YjDkzD3!RRyQp=F^i-&w#>Mt(-o* z4b~gKGREIfgmM9r2%X;4&}qr)oJ4Xu(P_FQowio=qzUUHtO#j@ z9?Vt?M6gqzLE>0;p(w6;F@+`?;IU-W#7n1<6zXG7vEYJE^GUT3blPAsb`G_l*r~vk zg`m?D{)S;SLE^-DD3~yO(aDKLtO0wrIju7zI^85El1@`(XG5pidT|QlEsR(PX#JVr zYw5J`Omx~r?hNp#T<43Y8Mpd@t5K$tqikD(p!pR}7S8MzN5iC;ES$ z(^@jf&ksW<>JO*-_v)BY9B3gK;;k-DTpB4pQX2}J+NS%Sl}ep`d>~x#fiNP<;7~?L zW6fFcfCXs^Cn0Bu$%UwVc^DT1>?fiYN0in#a(_VA35e(nUX2nq@nd?J0Y(^fGYOLc zR7E*umoz1;k~Dk>FSp}|+&}hjRdKmVn@Rkp2>Ii zAueLYPkBk0L5Iu?66Tg>uaIU;6eTSkjt(Gv;oPs6D~p_zt|<)rSEegks$*TrjhT;ik0+_ zJYxaSE!QxtEfvr@`VYAaD1xa%5fwZg0B)iNSv55iQHBuZFeudj=ebDJC$6Re95S}( z&X-i+AC);S+Zd%MU-bI#k0Q-(N3y`uZ+x)$eHlTRCPo^Uiv~K@j!FzB2?Xn}c@{=T zmC~*wZ8xChXRB57@UQ$nz&j`9xp_oD?umPbr_+FCycWDn7^|PoICEWp!s0r15DEj1 zLJ*dw$BKB9h{9`@c@rD{)=j4I!;qfA4Df&|AOtn{7bI2&@X$ksp8^3xfwuA*JL7oV z&ytTG4l8uT0aZ~%pLpLY*~1Ir=zj@o$3H7lMw(>9TthS_ij@~9_E5+m6<9nZ;F5}% z*|o%;1TbreeJ}=*s4>?Bu}2MTiG90iHSiSd0^!Dp{p8_hp+Gr>`h5TUf;zy2#8Cy5 z!1M`zfe#&oHR-%4{rtY3nI=F;A{0Xq5?k}PP)&#_jmWG?Sp!o%Yb|gg$sDeSh)CrM zGD%*dHdUqHCMFpbYL&Ax0!_v%L-5kvEW3k)2D=mUF%D_o3ptqXq<%1*b)Pct3TAwc zU?xU1bwy_g`C+XCS>6p44zUsZi@$n2)2;1xRdh;T>2l|S?7C4u zr<;Ca;Udt4>Lk?0Myp_L)w@at737}o=;6G6n3$g8=fFnt~+Uv&I>V* z8AO$1X0W3KAaJ{c>p`bR|70lEA)!aR_QozXC<=Y(+V!a@8qcC#o`A3Eq(Qjj1L7~l z5qHClLAq3)Ggs zazwI42yjs0-YWpe5B!}32umiW_e{719ajWt7j`T#xK=zHEwHj#U;!6|x4U3yFS?v- zu&!B$fBbik)_k?=5JK}~BSQ1d>;0O6d$Hhjh@SrKRWjYzpY#G?>j%AgIvyfd;3s{Q z`!VO{*Hc}RAu%b(4xys1;>t?zzppg688@feo9`paMDL=0pHF5gcek_; z%XI3hgkURY7$??KDyPj~7nFfN0b6A2wbt3U9+)8M>L-j6zD!8C7x z;^?1`+Bo^5i<1Yv*}xB87ZE2f{GKZmA?zay-3&>@$iu66Ae&E)r=rfn-ZT;&b8Jdf zrjaXEgsHtr|VA?ampI-{Y24bSkWQFgC`5JpK$$DL4U&T z{3y?jYvQmvtTdOfACc#n$!F+*A*tyQ4Qz>u&J13oOFBPe7gv7b#%Loxa4(@f6@({| z51QS_19J^zNuUSs>@d$U5<`8rqGfU+dmLftNDjERf-0k5Awgnj4M8mqTkEIL%YGMn ziKTMNLt4n0W&7;Y)?OtpAi-1s-0I9HU81>!#VW{~LG)ON5{Gmg^RZ0<#U?ByihOvhSW z7R~8zi7jmLtI%6V9cd#4A)v)LY_TDz zi4dC>NhDiPFk+28fP&rMtS;=*F9MI$#eIPxLIe|MGrBZ>CBXJc8LPR4mm_d-D*xvd z>vd}o3!~_md*gapew-ALMv@x9eo_|*n#~mRYN?((vN)X=@m~hfDe7aAk}YAoFpQ{I z|E56R(!Y^OCofb{fALfNo=YdHK`Hv20mM+}^wMCx=fB%%qW%@Xnv1V^k#pEtp`krG z*Z+p5TV5(G2=P@I;?w+ruc6KR6%?oateY?&i5_!Ch@}zE>BVVl3I{oO$1+*s0+4ob zK~=4)*@fA5MBl;6vqP8+$ZsfR;?#;8VyB5l>1G6!()iL$i(ZNtMBvuGz^qWJnqE*p zg)y}IO}+*}mOuV@pjz^ena*Yh|qXeC3a%F}QN?P67 zp(3E$7z7oxAP$k9b!=$eP%5B2TEuZ6+EoAIfM|>JKxPfjho2+P#n_ObFau3DA!ThB zRneo1t(M+&5jw^Wce~g^Bl1lk61S58vTe{q&iOSIrbRS4SFu5}+5)0kK+%}NAhp1+ zYu59W$LHLsfLpY4;CvL6C_FSc8@M)z8t@R1jVLKJ6-&Gsl4doC%!_)&Ed-(E0_p+l zWbBW%h+25rXbh7WnTLj3exeKbOGg55j#Rrrnc$2)#btyWfE#>WK}xyo92WACNhlpO zlLy-dn*cue5^?MV@J}QzGBM6Y;K_0k!}QfvVS^QM`yQUKq~$GAPzXGkMVw$_Z&XeB zO&eIYB%|DESrWXiR(PNbEDkrgj9<;k2A9Rj2Ju}S`)Q3ac~N-+kf&9FYgD)tMl){q zQggEysTwP@Z33c^&CLm-&%i^mVpM4qk1j@|Z5MgmBwaub=nRfZ1LR8JZx`7?B2+Dq zuSN3*meQA@}!JzqRo!1cL)s^FkB zuB)weAF89&0Y2ZSu!J*$Hax(iZA0-Vm7(gk3>=jrQOkjYi z{F35^MCJSU6bFy3{_!8Y|Fe_tqV9?M8G=kb_*T{PI(Nc;rulJ5pXxKNt!2!+NMW3r z8#_i_1-Zg#GP22Yjt7jQ>?rJL2Utq^tUTeVwsH_m#S_zrI>N zd3o=e&;Q=Xo}T~452n^uzHjAZ|Dm#4KFf=r?4JLW7-<#5*Hz0uIsE$SbqHi7@l^Gb zf3lh#el7lr*L{#jPyS8w>l;oE_kWNtDE`6f8%|dHf3j&ad*)3aJUMrHcKVyY{W~82 z*>C#baJm05=0WlIAbGF%l!P+Vp$-~D2DE&+*|!+bTdx}~?ilW|Aj^tXOIhCY?4pAc z9)vT2)6Yt-9$v_ObL7Rv{h#-ZQ@^KN8Io+&7-W4cUw7~`nV@S@wRi}~b$U);{ai>`V2b`Q~@{Dtr05AQFm_HdHIfSQ-Unb5E&%vV!C z_#z4?*He5+ixvR*#p+9aZ#9J$m87riu$kY`m~~?a|?D zs|&ArxVos?d-UjFF9r7<9qz04@Mx*}S{{8Z%Zfu_vcNO8K}LX$Z2IwgS;I?>%^!OI z#`?29`MUH3@_3}4|4#6gPq6!lvgoi-#~@WIM%{W%7z~|QwIK+a+GM}+au8k$20Yq$A7i%yyEWY&qvvQSKsxCkC zqzM?-Dpw8lmie4-H2g)wY{4$srAJ%N+p~qU8Mn_Aa|6-gQ`ih2c;9MLX9V(vm!fAy z@2U$M|7WBoJ&lx+XaH5N@}r_Ew5o~vzV`D^|KPGBahUcslV)Lw(^7}JhAxndKAf%4gljMm)p{g>oJtw$?xBvn*{HfvW!v~k& zGu%y@I@soJBk=&s3oMhVx8EEzhd(twZoZk-7t}(WXOg^WdpoJS-(S!F<>N_PWrpdO zUc`vBVlxOh>JT*@R3pBw88{~faw#rkR!KT8TH^9G*6ok zoqHO(J=VSh#qtoHz=I|OEZlAn2)Yi)gG|p;t#6rBkPI$}HdS1)&=BiMIwQHR-8BKF z>_CwRC}QF`McHhB$_(oEVaVTx)0S5I+QKz$^?w;zi3j-K8P@U*dRgy;RYbZQR?!;3 zr9M**K1aG8vT!+tPKSA-SNN7W4rrsUES7o44hv*`K~kj)VPM=C zO20p*##JyREJda8he{_OS&E}8lYxW#e#($KKj;IACL6%aI!J`%;*h;JGy6&#}ozRS#5gZfgu)ryzLyqPVhV~phaM$tSo)g0*vPtm!;-kZ*69|VS zmAI(dU0sOC7MUe3Ix)Q15*Jfuw@E54JTcszUJ|2wBEGuVuP#RZ+HEd~;cjZ!!<$qA zOw$;J19+j=AAE@d?4z1u6QA zTd4as?>Ue5aLV;@PT*%W|27^sk`K|PEqAxR#LpCjU}m3HrX&jPFbIs@?iWh(^_@c> z2a5%?Rj@JY3^@qng#M+O5?I6HX9iG#=9``yRyzVGDfu{-Vr*BQjF!O+W+ zc?DroF!&OQ49h(iPgoz&D(eGU!+kOSJ(D@Ajhs(&%>C%WiNWrB?z(w+#0 zuQ?(epQ*N8McCLvHN-kFdCOtrc6L>ZHw|aZY%*5Gox=<12O{4V`Z7~(akt49yRpT6 zpJ)3bcR|Z|7>G#mZiiH3xZ_S;X9+4*<{#QdbrwEzv|ZE7NZd= zZ7oOm_;3}!X`8_u0j^b6eT`Q|81b8%F^X9<2BoP!KTjm~vm#H9CzWHvS63pn@4C{t%|B{?_N zPpy`6fVuj=fWRfGX37;Rr7Rm~CA+)Dh^e~|wm6aB$rOJ1zx?gr{KwD#@vnS2J04M$ zBGW7SK!J`f0wnew1T^ReX7?<$&E@5`4IJG=&8Vg|10X_SJqJhF%N7ifp82r*bdc5#FZ=b^> z^Yk3}?#qhydGUr!dP#XOcwbhw&k^>KzI?8Z!n{F&c^7>`bCu^dJv2&x`bhM!c}&YL zpk_`PTN+e!Eh<>Up&#nM$Si4xXmcDgzGCVcVY{UuT#V8WK(>qfo#g z;YIrl*R0Q`c?J=MOx1UP5%KCTrM%}SrQv+d$#5jZO+t2H=ntaz;uIs?nUD7zeAV4> z?=NR}j+WGW1{d*~C8T1?F3q1INmxdN!1u0Lj4W-kJblU`BG!WU3W^>^VpXGOCyPK zyAJLMC1$*~Aj%WfR=|$BqFxWTu9i;KU(RlNLl!&Qwf%nJanvy>YSv6 zOQ7eFEVQ^dyBVibGAZYRMuD&jWrLX!&>N{DsiF>tJ2o~2koAoi+=M2JulK1vg5URvg8xY2(3CdukjB2V38%OqXIkjU*Xty=21F0-2~jEjZmqGa}-BW7#%XZK_e^0 zV3uZah3*{2$pjDqKjEn4w3O3%1uQ`p9IG%QV*|%oD)~(=L1(0)M9GL)s`RquEabl6 zpCws(@z$4>fK_AVLI8?n;344%#5OuI9CB~F8S%}X;n-5x^37imBTONI zC+x?lr?Jq1$m~w2pF#JSrm{&)u1qi|Ap-3~IMOw z$zU)QR8n>PS(dyr%nbhDHe>8_sxB?ZW=vR34_N)cK`SoCL$ru0g>MHk$vB2axa1!2 z2?8Vd_ngrS%uAB-@3D4h#Y&A%0giaar-%D7*&(NU#wUv~{f#*$Cc2s9t?e8ecR_5o z)+YA|F~3s$1W@kScob_zgkXtujmATO%|aGz#1TrqqzAGahM>(R=#9I)mR-zQ^&0p3 zFw1+&LzhPAI}58lGdoJ~IS)`?8_FQX;laq>BvIl)XK%9a{0_H4ssVT5_z^EmbS!fZ z*FKSqN82DPdIy~S=NmowSaG=0me829>laX`Ms|d|c{{Q`+{dqxec}OrVX`jUE{Bcb zS!@i?W1>1WZryl3Kiq%A9EU(p)Q@(_&iRz4Lf>x2JW)RoPfm}O!BN^cFKtewCM~m8%mN9-3 zN3LymfjtE@iwugO%y01U)cEiJdGsS%)H~4HaEZ5?sPDgfm5$tJ+X!}d+csw0V@+RP zun6y&3A&&`=aK?PYqE6A4tgv(48(aDN|>A>K3`3L*uy0f^KDk7me+zwDX};f8tkK# zG78csh^KJdHk# zEC=g5RQjRc^nW2zYw_)p5MgL=LkBl3>wD}+PCuGXycK@}knP=3=M%7wvi_bk3NT%8 z?fv#;8`LAF!iJ<9JPWgI6+VXO;C`YA7*_xk%@kXEB%gjWCpqTD@NSNMlmx5RDylC;9-838EIpW}2 zJQop`1%fgfI0ai^n;_E%5RevT=Ya1B&D+n{p?UjwgyvnfsB9Zl%eb9J{`A*kdG}pJ zz@5<@^OwfZbsnT#NXQ7b_m}P@Fv-u=Y!QU?XJh zdcy0oj6j8QuWuPeIxx{iG9;r}IMG-dRLGKPcae=h5PjIfdg)medHh)j4g zPKi}TvpnhLTQPMZfAxPcm2Oa{Fa*;>;GmR~Vi8)^MqLCtA{XAfe!U-{i&0YJJy!-O{{oIuSugjL$rIq2D$gr;wwmVFuG40p@+UNstgS|)$7wK}dJf8<7VM-7Dk&Y23CLx71(#2Gb5SBhtQwr&6^J~{J z3R8unQBTx3X!wh)LqiIQ$^pblBO1x55fUE2)8O?!Jr0}&^c>HP^?lZ_`E6v8g!CDo zcOnhjaF4O~l~>3uth$LBpFU~zzu(dz;0dnQYAs&<+OUO3Z0*>|KmDa&{eFHu=r3|c z+ZSag0=8b@R*GzN(^7E*(k+)8ffyHD{9ZWm9dvn8=N8^#Nk+;CCR+ahGsLZo?tygc*pwDT*L8+C z+P??eFqM4PXQ~DF^X#9cXP@^OK5K>4w%p(P3@%fDpe+aD-J9D-4+av=pj9v>k?8KuwSyu-t2_-r`9_YlYD~wx={uRxlxUyXo^(mopX_C4#`Rh@d zW*rcs@igYgsdUie1oT}`It@<+UhwL zDm|;EX1CI=Ow~_+&!{Koj{SNJt%Hb*pgZ+L{&?n|MsMntwj+rNL-yiaW{?z}tml?^ z!Z%kIrU<}fQC{wf`-?yS@c%K1Rrw&|-oyP-&=%XIQx)Krf>%NMY>~00yh0isS8FC zJGwvN7KF4*zy4z|tiCv{Q$lyqGVH{((NON~sUM?k+TH^bDIVhy>1Si+1!Qkdp*A2{{Tk(6L4Z*jA!ilMZeh<-#mCh zvGtCr_rQeQ<%H|rT~1}g_Tbry>s+=DRA&+|laseepjx`mH8Fik!i~RTVL-MexT{ zcS2wGAo{ZHZKGXNZ(hLo8{M>%P@XqrSFm8A?w9im8@=qDtpNS6wPEGbDohFc+|QJQ z3iSDM_cL*=hO=?(nI89o37T}v6qlMX@e`}vcB#VcQWR$s&AKL{`h_C3GXR~M>VGs< zpG=GKrFDSoYpW%(TaIhT;1-6$@tYhlNaqnToZX6*g^x>{4W zD^>zf0y@PR-48)L^^gO4qli>xW_es~>!xmJ znmQG6aSFktzb^(G`VSK^m`wvqo1D;f23vgSES1df=wFP1832CUM&X|580}`SXu+ss z6hAh5#jM11Rdo?+x>z$fXWYVNp{2S!vN&J%dU=okvR=<42(m_ql#Y~j%HQ9}kUnA& zg|t*B5z=CCla)Q61S7))>-&ZZX38RI{7H+KCG<-K@LT7O`E$ zhYJZ`_|c(rY$4u)oHg8<@PTmlbBPo_4&w6UZqWGLQv>9;!J;;p1Y`Fj?wp+BJZ{&~;wiS+}g+D;Si^fG1!;RN|W% z32`eoy9=)EukCU+{F~XKSS_SiZKp;{wcXMN<#7TK!zLo->8PYfgIC%+nAf)I_|1Y3 zsg2EF$#4{#K*O9g?4HVT~{?D%-q7}FcHYi z`8w*r+AcyW(+;<_L*Xlkn2o5okhN+I0Fllqj_Fe7f={;W(r;kuyRzU|sD!r-)hN>; zwwg}S;=pO0KE@vpXSqBxdZaDpTGjC|k6x`tP8~O*Fmlnb%;l(lbZ?Lwz3duJDj@V& zLohWSRD=0a_BG$`g+FH$QC^VnI%))l4qU0h(z zRahG=h?NZMh`ui5=NOWPj8U94D5CIN+9&;WvEo>v2tWd?SD&YvAI7RVfg9qGg+rHa zpc}3bd!R595`D0pP<#kRhrr^^jhdOSt}vBcP5A&vbRr zCBh>A5y5UOiy~==y9b7BFW1!h?OvWid`^Xo++I0S5q><{9ft?FtG}s0{9y}MltG5X z)S0Y1Xup6sc{qt|N%kC*{fsy)cTIwb33kYwW^2yA3<{~{g*M4g4H|l%wBpQ10e&Dd z{v{r9-!tKngH9HEFgtjAza(Y_{*hk`LFOFjQ|Lttq^8T~B&5zv6B$y!@G%UVuM4e! zqOG^BUd2bMr66*JX5cb$jL9g%zzJgL_5UfCFF zXeR*iFaF%9v!}lmz+!es(0>yx@4ZOPB5uQ9d9E9Nw-EsjP&|{mWS10tVW{c zAEpmsKH>4Y%HXV422NU;(At_VaY8frx~JfLWHUSi%zm_$Z9Imp6=!l#|3+ijTAj}r z&f_H~te?jioY`~J7-%Ssfw}IwKdOvV;78p*qaK#D_1JytvHP6yvc!{)0wId- zFLNpSm|#E-=jn4yg<9AI_`(feH@L|Ul82_J(gqi%B9_KgS=*!U=lithtnORaGdxHM zPd|KbRQ;tKg!zE?=O%6QY|lH)LFa5u76gX~?UA|`)&|^8o_dWog^ht2oBheez>-^$ zJ`p*N8c{X$2?my4w2N`7wJ%sIt=lWYx*&@IqsCVy+Im?x+Bz_t>A%qu?5sQWy9{VY z8qhKCFG~00T0A6(Ewe0M2#sny+GeB0GXRzND^Wk)#xthIFU2Dbu#B0+z5L;j6jXSs zs{E7G?~PRWvuNrc-rVNatOzene5_be0?P>b<}y9p@-2*<*g&ucc_cQ8kRq|!Bu5$K z1GgY#6zkrr;^S%36b->n2^D8FI%tM-<2A<5NT|qL5DGI6mw7iBbM24RbDq2DhTPh4 z7yppYGkQ}t^I%=EQ_ejCp`FvU>TbjWmip#zET*B9D(;?gAnO^tFz1G+6$8-VtMS?Dl!X7yf?&3mFCh8$_Zcb*mf)< zmlU40!>?=87!V2Au=f^`mSKoV5u-zrx@wBZ{YfK$<8W>k5f%m8y_P!@`NfGme9~sC zrbEgQGi zq1o1{i#6#1o>1Uwnh+xD(;b9r0GqN3Eo?N=KpwRrfmaXJEcGA%b*Reo@_#I#;ljqJH+*Sohoe#GeS-lv5k|s=-^HEwMt_9kXk&SyDNo zZ&jLV6Kad)iAhq+_#D#&xOV7F{DL61`>d*Ipu7R(K$R>Yi-JCp)^p%wMWx!u#mojL zuLzu^O6<8Y`<{I8HnZA0rnI{`u%-TlQ(#tYUc4LhuV$S$5Yo8{9A)!k%Bnqy;u_}v z%?)H4Wawby0zSp=Ox&}StA<+|AVUVWG_N9?HbGgyII$C!T>Y4R`1hbe3xmr2FZQ1Q z&xTrXCLXPW##b^j_8n<%tES?-nAbc0hc&K1Kn2q%uTQa^>RqGcz?L}8gTM##xgj_v zMP<}1?YqDVz6zbKEeqxnWGVt^+ygo1jesyK^bi`$&bk5$4f3*{xUeJGZ98R}+bLm? zLx%N1wvuz)!yx}6cZWrd5w6`4gUFA|RDU3m%EF(GiM=|VAZW|)2Ir-(p7_fU_HtoB zxKI3K7Z*AyCV`$;S4C?Ey@Ds6*ra1AP7Aw{cLYIQpGqD|7pNjP;NT_2E!=1%2m<-J zLQOHr$Y@*RtMm%Br(_y3LgR^C;8kh0akr~OD#s$&2#Z0X1T~XN09Mqe=~x^VMh@&p zy?^dsgGl#a;!dPg9pwt=11$|jLpoBW`zu9lti5JihTZjlJv6o@=*1IQMpbc$qUy2F zr0KG1Ua>3GJX!vgy!*oaj{}t}uox57a*fsEOGqsL*LYRRtoUZp?CzjO8V4g zAVIZAMl(JoO?WO4=w|>S?y%H#6CXXelFYg&MTxUw8WA4zuqDo-Lww^~_w(aVKU|;u z;m6I21QBbBMXC&j+Es|9N#y~rmxx1<1C^<8Js&ZPa&uAu01EE5LGa|`;Nm8Y2CW7K zi%2R=bYzBk5BJA-w&(ia{yy`vJ*2363v<6AdS(OYm|7=_Lzs_1nYi+}e>Vy88s4v1 zpu#iAN>&BCUWj%-T(LooW1{Qjn?Z$3#kASC?P%ClL?iL8cPlLv^(G>L<^6g6pMUV< zSq;Kl2O4Ef&yVzv@iQUQD`@feg3x~TP0sx;*2FtY+%r#ED!R^Bdl?#I{Kq@GYq8Tn3GZDk>5c#N&b)MnY;o{ zdq^h(BB{PnPnT$ha_lD23`ePiHdw^gOz!v(K6U<6!oL@uUNv^`?@y^7s8#_;0uBHW zhVYkjO7*dS2N{zm$CvPA94^dH@MP93yePEvI-C2ACP^nY1qJ28RSZ_N)En;KWg-ab zz05nPH&ow}Rl2~CxKVdECf{0!@SkXs5Qsx8CI%3Al+dYfCQ&2`eR&Jk^wb`%%e@vfg|Z;wEHAN!AUxW!)Uv z85w|}De>XM93emZo}-FcN=XIuCV3%(BBEJCAAJB&s0;4{w4P70gR`crY3rUE)y)bk zXx~sT($g&DQm@oSIt;y%LU3*wDQl*ynQx&v>hAxK^qLhaH-LgllEX~Px!oPL&w{@5 znrTA5mWsEpCHk>)|IA}HN-0u@PN?I}p{@tUW&oVnf94GE^s*s2JSQ?(Gf6sLdKi8aM;Ml^un>v5Dw_mCkZSkCUO~v4dq}<{-p`)_9Ps8<|j4_}M?ojLnW8I)&NIh^knMBrJg0Ry_ircIm=m0* zRj?hLv21DWw|D*S*>ro?zFN}g42VL26!Z22uKOTcaombVkjr@8r2Bt<0@>#Zizg9L zxsRyEBs6LhIm83>>G~sov}z9s$@tqi6L(*B?I26*yIJLt7X?InHyENFls~<9+{7}$ zgpv)UkSX;MF*rnp$w;eS1RwICOUEApcVX}<$Ab@zfkauxus@tkT0iS=u7*|`Zd4wL z>i1lwtIpm!zE)&bqSS>m}Ew8-5Bk!r!3wDDP_Aw@6z&W9sXZ1jEK`bLUvA)<*`XXnE*!@4D+(xp-{6*M9HjwYijlC6q-q2t}*Hy?NVSV z&_-(SfDX%SEp&J=f({w(y3kBJU%We}@kRQH29WxBpZ#P^sqbg)r^`DT_;W%JusGJo z8GQe*ltc?L`8F;MSU&W}Em(S&#<&@9eg88Q_soc`{}+4j0&Qtk-FtqI{W@o#Q)d^H zvE-EU?QLb`(4tg&5FzM@XKe-K6^x-7X}d?aozb^%k2;KuTVYrfW8us((c2DD}(@T_Kk>~(oocS0uwzgi#Jc>z~lOl8a9w-bLC%~T}c*$X!D zb~6dB=zkiH+Zqn*PI_D#8e6N^C?-6Z8a$ZhXeIIbp(?5}2bZm4I_LoCkuRppW)9dF zxUi8RsFDt#0D)S@$N8rktIHEc*o+&E0Sips^Bx%<*={J&5Izs35WyS-p4tWEh7Uxt z06DR!W@+FeW4u787FhCF?`jt?o$|9yFh>Fv0aZyejf#LDwHpBeaknR{Ic_|*7w8xP zf!d;ph{*uxv>XhQ5)+^Ab`AEW(r?SriRTFLwuW2VgwQ9 zWTatvNo{#aN-2Z>BFD(`Z;B#UQ_Na3R!My+i=kM^LJ>rV*Z&!WBx4_S9+a)2Jq0fi zKTA7{F<<Df4!(U-qjbihRxm)Knf(T>%tciyWb)Yo6 z^}~kT$p`USjo1uquo{&-dqVo)u%WANArjQ=t+%`x*qvzBnLBf&!t!isB0q-)EcZ$^ zXw9EogU0nGi&4A_m(kt@TZ@)Oz7Qv%?5rCzg`VZ2ml{UBGS#%FDvj*r4O z-w9Y{eQSrm5QP0WJXkQ4Qvu%+JXhU@GO1NAZz<9kmr+LS5tBnwHzdF)kxzY;v@V?* zjd}=$pCnMuQHa7?8$+Q+U!k#1Z8b+D>_}(?U^rbma4H!j9fvhU0mmVWy5Z2bgOxZ` zQgywk+$*;FbHui3>D^{UL{+=QEkWE0)v#T;A{XEHkPuBWgnRs5;2dj<>yScf)cCdF97bKi)BhiO0}WjS`Pw)R%E(K3(4V-_7z(gx4c zodnk#ZL}0`)rvkN`&rCfO=lE|^2r#TwD1fu98ie@66vHCi6q{yj7XNyOt=bi>Re^p zsf_4Z*WGomwnRPB`$RniTzT^)^*9E;g;9hLIS(*?D692SI{J3S3S{_LhK?$19)lT- za)L-jHeFdNY*JU8fT%pjXE~oMh_!u1vA#R!-~73Lp@ZwNL2H!u3D;-)A*w&KRK{}JnKeV&T4uXLy=iGu1x-VpheuN2Sst& zvuPentAhsPxC_S3@WsG>7Q^3pJwuxs8h&_Pd?F|e!308%FtO0k@Maa8W>f@gmoO2u z#5@N8!~I*n90gd|a~*8s-AG`Gg#R2u1kY*vO<4s1smC^Q13+gS0G1J(6?_Q)D7%LL zyu?4m;b#$1%D`_DZ3`}*(a~NWmf{~}WeEQoYd#n&Kq!aflrcQkAwVEq$?t_Q#D^xcy_J${XnNSu=Pu-z z(}S6B53DT%6ekm&j45A|v2EZdq7>KY4NkJVXA2 zM(1xT+_!&}AMHw+ ziv}0y-rku99vZT%>L3cmw)rgb4;Z_F0O?xj))|Njpb%K*W4%dcR88~{P^WB!Z0Rtk!5YN^4gh;&(Z zAwv^0MSwNYLp`S$i3;5F(P6V4pJW_z&g3#LC? z@`XKFw+yL}m(ix0DXULLZg8-u`vbZ<7D$)lHnJhnfzGE=_LNCOjoZoDHC`-;F)$iI zs0*6p%@d_!`B8%c6!U#Zx&cu3V8ERspkM&1O)Q(1s4Me!P{ri;<}*zIb43hlhRs!T zLzc3m@jXf0zHgvN+64L3maZ&68?mV=RIfyA5)%-8L3K;yC(~(cT*n@$AzH#3%z22h z0)K2)vSbXnq0F4XBR3Jd{o{cUS=sHdeq`gjL9I|{=J*O%qAlQF;!nCg=j;J*BJnCi+DlqJx7 zLURjT3~MK^8jwv?%zsw8SA9iHL=?J09zQHkR%`=AmfVGqs^a7Pt(EnkrW9lVx=q%P=R@YFv$t zir1{_W*7{iLyNZh#1`pW=YaXvn!X>Qu3QOg;5dXYPH2B(UH&tuk?l^H`nCHtMd8L( zm8foaMNx>9^n5k?iHW9`USY{6;%F8mbwkFsj7;YMN5teGlBIsIg&pYC!im4%YrI0+ z7#iUN?6wdBnlDP?fBy&O&lfM6ozo{ zukN&y+A!~04a(ur;!`;T>w#SR5e_1b&Mhbp8l8Bv zdG57DVI+{o^sI$dc}nDh%vRdk4wV2OVcR#Pun9#wYSnR3k48@`Q$1i|-)~qjIDK0TRe;M8l>+of2#k7oRhQUIGDr+$fwgwyb}m;Dg;oZ-Z97ZKGEml2q|O#s7I zV`D2M(lOA43GHBr81Z>2ty2SpBRNCCy*V_?X;8604h_VMkEQLuZj^zD?tgGzSBE%~ zv7KJ?>L72Ny!6xQwVWypIp(1>vjR>(>newSAvwp-@X^?&Y!po>4yR!p#^gEL4;`K( zS8OeOA~}n{Uro*;w>5T;eced{0p+r=|8_73raEHWgb1cZ)=xsx`G_f=#dKXsAx7SO z%-@_jjXhV&>3Ul-`Z>NLC1A-#rUgHcL0#<3KBk=cLrZpM#RWA!RtwGWs}cSRKB(%z zomv;QmvvaW97_n0;#O3XBXw+8FqX{zBH(i2wCyU$A5PU3W#O zGJ2r;tb7ixd(Z-N7yjWar z-8+|nlYz%uv2O&4n7f*jyUTrAP_aHOC2ikFd_%EYhg9I=WJ1cb z+2lI}Iyk)kddgT-e@(cMvShHHGr{R&fSGe)x!c8se2XVnF&7xX*Fu?v1E>lf*uzV0 z9|maynaidPWY`Brj$IGPWQ|zI$M^BES~Q2z8V$!cG7tjG;OIu@vkcdlrPqvU2R|!! z<=5#|m;w`cn@aCo_+I%CcU$=om)?g{^Ju!K>LHc+H}PTq+xc$)Mq`4l3z3YcuRo8|aM zcJg3gj5sRClP3@bT-3X@GOCy8;G;zT7C9PL-6L4kz)v3GS(&gTUCBuLM7A6~2iH zK1Rc~wu>q-yReMz+TY9Q1RyLSM4UrzRg3~*T&ObusC1m8z{qi)+6OF_5(&{3_@Qs6 z*^1#xj6ioLK0$xhb^a6}X!({sZb}K^xuQWaU9uMwG5{pd18=ut*}VTVPy~()$dZ&^ z)Wb&=TX2{^ojX)8_YtAEsWRDJsGU``@_CO8jL9=RFqx3;fsH^TRB%Y?76dEmnYq4+ z?+ORiaRC|aQ~pf zZ|Fd0e`*%{R$$|hn91BFVGbL64xFufjCEkK_l~>8J`w`8n#tYl&jv4RC&CMspxT&K zYKgjXZ)enE&pdlVzJTb*>mn9%c)5Z=5(`0g`+-ryRc|RNL8q8P+y71pFdWN;a5PGI zUr7o0ZbS*gz8ewSPfQ8syAdV4&ndy$`592cv_-K-mT+&y64HMsghAlYu~@>bB_XVJ zLRfoASo>3D398Ll!mUmS*3Qp@5Tqo*_F;8e1o+>Q5VGj+Gee-Qm|9cc__%B8>#fAf z)>K*kZB4~`KDMS3ZlyIp*S*IQ}e-^ zI_w2s*_vAaw_a11iMf&1q&4-=%L&9W<}&1SSowydP9X2Nuc?s`Y)v))Lx#M927NY;v*28>#6tjcJH56UnTMJxbF zq+>Jjttk(#;%e!JLDT|D9z}vI?gt6Yoe4(d)5>D zz_i7SBE4`{`|&JA2S~+{hgAkiPNFnFGPcPyd-^5F#W{~iaj&XJQ9V=JseWiQR+h00D&$I;b*h1AZ=1M)29jtXZcTXf z-FNRAaA+18Jd9mO>Go?imAkz5>y`kpd2w0~Xp7@?54$i!YgsnTo6y~1=%JA2EE*X2X|E^o-&uUB#= zw$3C(&FlzO#C3pi%eZ`-3;kv7>EZ4DYPo)sFXpRoLt3S0z?W z3$-dYY4T#H+ytY6!pZcBK802*dneB%xtPJztC9q%t;$-lH2*XWk*Jx5y3=+DeXvX8 zlGyaiJl3p9ICPpt`Hl|~Kw|tp+!8OfRr;J^-ZfxMM?_ew!>jl6qj`=u=m9-?tv}EL z5)P@Q>$RH5p49$)?(v_b5Rw9?p)vw~*kB-_83bMa^iA`|vv3hw+<+z#!7)V6Y(z%4 z;~E&xzM{U5)YYs?N_N5)UHPqL59?*+HIhv&Uh8LV|56H&g14h}{b_jlWKvAv0AV$I zl&hNw}nU|qIyeXNEeg_%;h-{7DOnRO@AJvgwXD0M674I5^}v?*N4QXUoFQm*s~1< zw$r%%<>;4HzFuJ#jBEAE!@Y@Omh9k2m~ZFrgeGm{CYIxt6ojL_oG%d)$(j_5@#-QY z>TfYMcub~2bNZvkDl=jp9(CE5+u?aB@)v?-%ogd{x$= z&R6I~bwZ_bRT~2GLX<;SpdFzdFL^wqx&3Wrt+4Iy2N__E0cvL~ZgS>N=kGNR2xUVL zXXHgaC{)KSk}XQDH-F0<(|Eg!jKc#Z|MKQiXqG#9)v=-ywL~?5Mw@?S*#|iLtWweg z2_z^&r#f)B(y66!TQ9xzHlZMp<-O2IGb`<>1Rp;4B4p&wTROa#b(z_jIx0><9R4Wd=T(b zD$@~pJtH9p9`kQQZ@S30^=69cix@+5pXTK0Jgbp7eH9PM0ldmVNt#K)k>r>HAhig9 zBw!W*?U0Km4^szV8UaXOPsP^`D7lib=m13C5X`1yyST*nRe&68dI>l$6F57T9071z zmq@LuE}@nRh_a0-xZM0Cc84e<+&bPZyoPf-q*fFAD7BjSFNs7AW&0;Rm!{Afe$tT8 zD+Lq1^6XhTz8eaqQr|wHknp#<_M^hi_mB$$b!=wCpfsZ$;KIXTCfkV|nzBk_VRO3N#m!6x=d1v~ zSykqyaA!9T8n!GdNL@hbm#8ybzQDIr{X+a?>Qrl^XiO7m`lAnDjZq5@< zaxCw~=OE7NK8AF}durY&!4ry{l3!U>L&h`@U!ene*@0T@fGmSc`l0@LzH*HSQ$qc@ z38W^X@tog)w!XCgYE!wK+2(J)SBh+GvkbF}i=$H~0BRph31ziBaIUlP9Pu(iN?_;h z)h3hcyuG{>dGpc~VKxI(*(JL&6R&0c;&Se&3OlL2Tw&LNq@Ba5N^huy-ctc$V+*yI zl&+$0u&%`VD0?y`PQOI$K=Mi0LF{zFKTsC!9FVIXkzmd`lQ9HH@uP$77Z7$fA2K2z z6LN6R#S0tRfK?`As`fx&P*$kI*jm!doD2do`1pejc&H5-J?bq7tC=1wCgG~(M z=t`^)?%TU^ZB&9_OVi7}-m&tpuU7`atDz=K!i{Di{dr;}lgj+ClCJyzKX%AyxnWv3gXw{;~%sopMA zljYFvrS@iS`TjI$Lq_{*D3(G#c3)$K1{kKb&Z6V@^t3SlNw&X2K3tjW4R*0|r%md|-Le<*y5sE9h;onq@n!Y1l z4Um$lBB z)k1a_XPQt{FB|)|_a@3P+KIjF#6l8Zd?mFh0yjbMN5aD?Em^mAiKKkgV(4w?Qsq@dKI<(xf$$G1ZT3>dx0A^v&9Z?SOr_5T({Lr@BUF$Y6+h_YSrQv8y zBLR6MSa_VEyl-nd0=bN>NwzVG{g3|I-mDoUAJZiYC<FmYOpUJOb+ z*e)dQ!l`s$71Mou+`dl%@u;lMQ=J@8ClG7k_QPS+ikChSNhwfmxccJ}C)s?E2!)lK z5bF&2m9Wyo3aq}sA`^1|%X5)Js_I1wp@S%9q@a`xLD|;QND5L9oD{f<5zSL74Y5?M ziqlOQ!?uA#%+8Co__VLCdC(-{Jc1JABsieS2%{}77kHK!wDz;ctk|GMRj7!tu#n1_ z2bgd?Ho{eh??U9ljEDqIxKrWbc?_BXfqwip>SGoT{KH+sPk{|x)-PN$JDZx3+)eRo8vw z4d4FcC;oKDZ-K@dx)}XADKGlp`p~`)e){tJzyDD3TRIq)PNLy?ZG6tGX5y-X`~LW* zkN@FUzIEU<<$AL(A3FHCxBuXVH@@X!o&*lSrl+-yqO`h%kS>~R($)U3YXzJP;7C?i zeJF0wKKGK%fukCg-V8kJnqnAh%utBghOq-5ld-eVfogQEJ6MHU3MyT(F zs>KNkok&4Xb40LeUUDx^X?hcf@7fd#Hy(&{BizpwXZxCHEmN%Quu`1i!kLn0gQvBT zpO{D?GFJF2M7^FL_DFEz%N(DW*0p|P=N?<*Yi@3`6Z;sM!Hwx{AFPwyWHqQF>O^V zvEj&VL#KwO;V`#8IYi1#J1YQsP@2CdQ-zi2e8VRk5(%hdeux1<<368^tVdhfHLR7V z;nA^HRA9Ijl~_S5SII7)Zih)tR&%E2%&Jy0D;Vlt`P0O#YR;^5O2;s>Vns(7M=;5z zEoM3$Fe}zcljIoT3_JpMm6_XU8RuI2cVHl_g3b#n)yo2U(#jG+OAc8dE|v(Ih_(n> zhTUc{$|Ei?SF=~0u)y9v49+C%=T=Aq2N7v1zzs;#QLlPWg*-6SOaf_R`zN;l$CP*_ ziFNh>PR!`~+dBpBGD~jB;<*>GxHVf!HPe%<+Z?2tg&m?M*{8WSYp(<=6F^}Jyg`hU-#Yy@1V;XJI@78R zw-<|Y^=wtU=k5^Pbdo*b6LT;OW}*TLxhs%V`B{%yJ2f}zVkQ~ROom9t8+FQ~EQq#R z^Hki$e&95k%k*y_hX-;3wWYeqF?nJZ>$Srw+l_+jm~!qI;a~WPInxoHKKYto##5X1TT}%g#fKrzGj~QYvuUes@M6ce6+)ILgjJKPhP+e-kE3dlRY>26@K#PCeP$&=CtIr zVpX3rNjtMrmCNq1@ztV3Xvc=rK)}b|&?@sK=-x6|%WN-ZiCB+~gdbv`Gz0i>ft`ce z{tSs4$6k(973sE&F*#!?k>txrqcIs})}OdBxw@sPSl9q1mBo$8d>W0(D=Hg}$yHf5 zCJ%1Sm|Wd1)2bVjl`}2FO+@F%`xA}HRV~wg9_e7L(U?3aV8-O?wlpSZBh`Zl%s|Zc zGSn4bX&hCG9-T4wmF+D@_-~a=xZ_M%N-SKF7!?lDF{?2O&f4y(k}1MHp-k5)YVt6{ zlZ0wf2jpY;hD9ny+pyn~J4%?t6NK%fp)ljR!iX($n=+z(%d@I2{XMK#{&Kxlz&Lou zmt0&J-<%A6ui4mbA%I{Gi8eGA4sqa~WlppNibMmL+ts$M!i{C5I^DKL(GN%hI=CD&_ZBc15SKv*NJgXXbhDf}1FR;!Ki2(R-6tShyLV)d(I`CFk0bH6oW&HM;zG9#-XJXo)ytJNr96RcV^2%c#KzvVgxW+j z+16QF_3&fFLQWBt^@k7+2=hEZIwhz~^Cy5>4 zCpsM}yfR>4(A||1JSO)+WBWQ&OsNL_(oPbsl@>sPQ9$B}$utDV@|vZJVOoirJk2(h zm}>?(b=5u1l3X@;t^`g8WM*JCK{Q9kHp)uEuGdGQTv1BIE%4@)(pdErGgj%5b|90O zpW%kP@210Y=wJXU+m+dY4#-O3&Gr+RhC2W3x7538`TAWW8H8ESq>$HqFobYP4c1`!>MOF_a|ENC%DUmYIHwY4&y zqcZps4`cQPr%GmIF*<+?8HTH4TBS+8XVP*5ie z2+09hkXbl~Q8P3-oXiH3!>Bh?mrGQRP7WjBp~+zcJTy6So75oLVEPX*j%=P0>D*|o z{uY77wBTBTiB^~*fs3Wu8WTPtB0u0J*x6yT1vp5w&PD6ws}u-WMgb8ANE0$2dnk{L zRIG(+qK7|4%Q#$;Wr4qvI%o`vK&(iJnZ!wk%S&=8KMUwwd?>-Ao7lRcMpZe$=(S3H zwN=Ix`SvCYkAMbfFUrKW8HoiOKejluX{k0`)^%=q)EsPX$`o1z;;b;kgoLan7thSi z2toBSao@5SV~Km4D#jmoHo=sTg-n29h}zl24`a6Br*UT!TRDAP$^$z#u4uit$spQR zZ#-Ped?&W@SV(LtUSs1j7nOpUYBsJM^68}-m*Jek3P$j84Mj~^b*aWx7SnVe?Ada4 z$t4@778@6*9LaHXU5$i&4iWcL$f&LrUlIU6+T4+Cu`EmG3*_CV+77VF#1GpyNy3t= z5FvEire0FpVGy#Q^K{d!Tv$vb`3Eu5QJ{GyUuBy%%ThrgC?AG=Q;}?zgl1kuMp)L? zWwA^s2bKgM%Bc#9GCa{HM8ynKzvH=`lndtmLJK6q4<^qTyP!IO zxT++&1;Zn?A&>$yz>bg?vaNy|FELL3F$)2-Ovko_Ma3}!VnzzxD2OWjS3P55Y@HWv z>_9j{T(zpohj-odk>ltM-v3UOiVtWXM9Ou`fJWQvKW^!5oBXX$c(HuxRxN4 zdDaqs=y1k+q*78_4w1S|RN_FX4-fzp_<3r_8xpZ6fv>?sN#suMDhDgpS3(?9r6h7e z*YIi>hd)FnX#g_Js{;}8rc=rupiZZP8nb|gL@}ab5d(Ibx?=%RUJ!J6iZiv_ZyBU> zkA}!X`ndYlZRLPT{}`+kz|{PlM*TzpRPusKgo#jP@kzrUe3Hd#f~XL5mdaKf6Q~)> zOO=F2_%|D&-AU!d$`}^^1zGqDia|hcng|E~nOp6AA(X?Du33j_>@$O&Ov?h4tZ(>j zAHDld=BNVNq@tToTWoJto@6yWWV2a#=GoJh6c_ki0Kf#sZ+?O%4%38?H>F*K&peC0 z+}M>;!cEX-Kof^s3-sQU6*(Jwl0gaaGTK=z6HOE7kw(+DBJ-fuiw`haj%`K8#qKeG z*ez8(FmQ24BQRF}<2;+zrZsD8Z4XQ?^jZq@q-m6IS|a7`IkT8J@!u|BT;+Muoz@Qq zPZL?YYaERQc@YY9z2km0Np|_s?~#Ljy+F7Y3!u901!6WxaU($C-bx}$*lFZy!{K78jVHdCl5yJd>A(-v*}3%qTLKISLSzp;V~ky zsxCZE6xR9FF<^m8Jn&7{VrZ7-TZRPYwd`7m)=|%q$O7`slnVhAZ19Eit+8~I^LUu5 z%Iu3SYM0lUP-h~6WD07-fKk$XA+55k-~({NYHqLe%0)HU=-Ls-$f}vn>f?@I^ORqD z>RP5js#3Hm9`|P3lx(pcoiExh$*}t`py0LsCJlRZH(TC)Sa&CscYmY1rft7^GtGJETu97#=D>b@9`r8{D@VkA})6{GivSzr_v`xMKZD7<8iU^bgDoo& zLTn%zoq0BM;*MiUF@$CzHM3$Nv%y^?FA3&^P9F3irYof-pQS(@m`?EnBa)cMo!PYsvU;azKw=29PZeA()+t%+ zpPrg^+{mEahEt$^igK*)Vgg7XVgrbNDQ0VRhY^hq+3)gsYHj0?2ouWun|GBRF%5S> zy7J}rWWTO%nr5Lc6!a_0a~my|VOmOS%3-BYYnZrM!393HZ<5{_7)V;RFYpqd)k|lk zy7DlcMFP+fQCNadW5R?MU#cj<&qpRm0*1AQm(1 z^aM;3#moYN^FFDwX0gHSi65oii?oNa zpWUb6$hu!!pf@{SVOYBmZ*+~Dz|QXpnu(k+{ zz18YFBKJ_=+spR7Io|hn+4uHX-%YfJln}3(T67~uxaL5^9HG)r4JYa&SQj$zN6`p( z+cp`sXNLDIQc`O`Nv#1TX$F*()WS(**P*lAHD3obN>p7IQxT*vRz4Qsq!YhE!f=EZjP!Hcx(+c&39k|j)Ayr9{QCnrgm zfAKV0mhPDN=>m_i`Xw)>fqHnsCIk&^ZVO_@^#i?D_}Gqf?ahgsg!WchA|Ed?QI@L;-z|wdeUol zQ|qKnR17()mY-N{I#R8V%U)BeVQiJV@vdqOr;>A~iMP^mFogX~(oX~uEkI_(lFD6n z`CQ(yhG%*wkaJ1>Z4tJh14*cC30u{O2Vhk;nTS{fCLKvLnNC)>vL?t+02I7Z?gT@% zQfHZy9Ke!ohbdSE2;`Ht+Lq;I517PBBI7g6NfsW7Y#1=iRB*>%AwumzFpQNDaRY)J zV_p;9(|w$f(OXT}*k0E6*bmi4uO^Gtdwa-Cxa2vwMT~hsGf<59_jIBQc~>}TPP3k$ zvpqLqvx1xfN2?gQ3(lUUtX{F?u?)ab0Z|$|O^xB+s?#Em3UCwY#0cQTKn8$I9dHsh z9dMF$x|2C%9fxaTN(JZ?Q;`5SIRv=slMyi4cg*@@fGHK2G_MLUW?-UiQ8r{<2RyAa zb$x;PELx*LF^dt#-EIT>Q@CBGmkr^NB;QBi>zW`UN8uAf4Y!n_u_sKcaQ(;=MHyXH zKGDY!Uwn>`ob(b+n`yVs#{J*Siy|=M=Wr!J5}fI!1d8UwJR?edsPA-oY$`Jw}Ps1S5yQ{*FOFkLJ*^ z*AD5}($7(|r&bGpcp-foZ&~M|qt|)h@$2MNqbFA9eUD$K$mLnYC(G#)2fq8^v4PLU zfge$0~Pwsq4uQuC7bqMgE*?@XHYqB>L$o!oNtx^kj!L!_4#Z-|oB4hIV zR5^TX+l+W5i5U6bprkpkZFTLd1{_OXn%CxL2v>XmbrjUoVxq>)$8J++rTH{AnM-A!Vd=0v)+7SD>x=ILU7AwqQ8ZE%x^ zDBL&|1(!S*u#AEon)@ z3x&|xt!wQ0whvm>2d&W$kWe*A<&eTovHVa?<5l~EB3Ob(pg|qj0RWGLPYK?HlxWr| zQa6?7OYsZrl#nc#>OBV*(@S}A!`-`IumAU!JmCOc0fOSk z?}l+;%kQStCI`OBX%eo)8*K`|wAuqWUPli(jE@WyppfC8GrNK+|GMtSdb&*K?5O+; zj#MRdop#=1_GK~#SciK}`A>0|%6Uo|f~1%x&@eIR4_dTX15C*XX(Zstfe*ZnV@A?aX$A5e`dT<R6;8^I>_2v1v!*E1YU;*|oOX4GlY8VL?@l~EiS%O0ZD2@e4!?h(j8*pwf zfs=`a)#2Yu@Xe462Le?&D)2ZwC@uI}+XU>J%lhbO93rumV?!ix6JOLaL(~9m+5e+e zX(MKVQ1IhX_RxsEh@kl)%FXzhQ)}G0X57tALJhrzRTt&y(0}!z>&LyUS&0UJo3U(* z--&cGWASbXC)%Y3PSm0xA)K(~1>&WL`Xii3sB8p+pOjpX(0XDNhl)Xi3`4~vY6HhLV<1N@HnRf$viQbGW9W z%}`?w>bP|eE5G$F35)X>wqhS7q1YU>35v}M;YAs~*mY4(MLR`AbCFiVw@i4_#so$) z$egbD9gb@|g>j{u&q&}5s#V5o^)u;0wWDK~ML|r%`+?Dt4PX^x(qix3KrJ7112|bX ztTz9!b0Hw%H1@4wo@45QZzUXsqBsuHVFVc<7PlQh6kC(?VTW6f8706DAPU$-0s}Zg zI>PcO9I>)#I2C?{Yit2NzDc%qnh91?$cl%F$WW^e*@K${Oj;Pg94ScyFCVbNP@dEE z$_Et^lu@n~5^b|&>YuK&UkSoBR%W4g`eX5+wuqKX3T!4$2@qAWK6sKq$PD7VjlueZ zA%cvAasE_=Bm1cjm#o;2^f>Dd3S8M8&0?#5*&bE=)s;L^04vaclTgWu#!{qZCl5~@ zStduiSuK+mm}bba8UT**_xNdC8AkeDtqi6mI?W9r4dxFrse%5>MTfbfd%=$s4X}bc zb72H^K0A2fh;hP}@FwDr{S-0u5KE_WJ&EKMQf~WlT@bXdG*nA|B6GHr{Lt503#zZ7 z!=9q!d~p|x8I;^T(hembR6~N~Sf$r4EqaPdqEe5Qym@KKmP!KRv68nhEy3ybc0jd+=%5?$$XtGg!{f1>p&JtbW)<2x_sY}68<0r3!| zZT%>F;Y&ZWY8Z_6xz=>`R?#*n72;SAXl_WUxGnP>bZqaG1r)3>)uJNMv(ru)S4>HZ zLLkVZJ4%Acgf~jVBVCTjByNag^`{a6*+37axE!utz^Jr{I*Rmpk6Tk&(=B25KM=BU z3Lls=5-{>+&T#zpo|J6W%nQw=jpbD zF6mwplGxwprRIB+t>ln^WpTZk&x22;%IF5aOHE)E3>XQBsQ?9xv}WsRSECmH%Ftsq zS>%)yvBnjf(0vyq>rJd`T@9uW-ZK)FXL{4ujUk_de{3OQ1 z;_|{;HQ{pXthSUx{aqSH?qAsEfS)`GzNqa|mYh!~X)-Y&26`&*TJr z1@kHobv9RHr>mRs-x#fs6&5wf8W5&Skf?;+nl{Uhw{6RfzUii5L%s?}1E)KvjyiQ1 zqX$N>E-RJGY*4F=mrKE8OB49-d^AHG*W$xm6-U>fR_FH7e)0V>HQ4-4I=86?z{ZDj z07wQxgOEEdpOv0Q7&Oti4J$L2eYPAj|Lp9$EwS_8N_ zgK&${1-s(}F(wf9T3yv+4=FYNF7|nh@^F7@B6_6`BANm?Wmn~Awc&<$l%oJgj!n!; ze4L8x6MC43M-w4a=`m?rETU|Zz`0IkRb#)-Ue0q#7f%VsG0T9 zZQYSMY1<)HwwU|y>N66&V!}0tt{Fd*$)8&VpA4}q(OZOrh55T#gjGz%>jQ33mND2a z9i~MO&^U(=YST*EO+lU7GK+Vr2oMpfiSOZ^!hTlHM1OW;NfGU`KbV+B6xM&+&cYS` zVm+vN)S!KdqS2r#_0GN!%f$AocqN!8Vi%5>Za8E*d|cp+9EWpi^ddc-6S`_>SK|WxL4IlsLVU5jUXU( zq?1N4OP39kV`D+>IdAQCHiqL;H)3I_1*0%gMEv6jT9!Q3KBdk5DeQFiWacJUbrrFt z?XNdVVkcQZblbTQwpRj zrfxMY;p_fvgtZUqR=%C_x}_f3XGU836FK_eLzy+lKa^t;2KNDV(E00}v^tx4OaWPE z8R!(#&9YBeE51QqKAno;iz*m8?32O8jIoG-Q!+!1@_Q>q{R*jt*XpEJIGUtIIt{Ov z+y!fgk&6qPWj{0Gb+!&uFh<|`6Ui3J=m08AjWT@fEvIGGAtqaqYPP5}2CoHbhH%AL zYBGP-G+XHX6b!j7>YL8gIa4E-ftL&*)W;fX>17-`ng^Iv*xN4r0yBW2olTZiba=wq zbX)72(O}O2TKvF%kj7v){sllUry7N|CMDK{_(93I*Y+Uzj^>b_kW{4P5Wi(hRQa-; zF-vIiD33Lf1kij5&NMaia%v{a5t2T%BqVwJ$7wmy+=D56A{_`cawS6guyU>Wwu7ZH z%1Yz2ibu5vleEYqdxSKMBoz_GmCn|XDMh;wW1TVxi&vFj$chAx>XD%;SfV#kGE@mN zevU3HKcLUF-twi%XRuYw>xwjyiOiUb*bOn_!%q}`BvXZXV6G*byvMx5XxJ(Voke!R zEP8FZM!1LsJn))|X@~*m^T1hTK&x8E5Oy(-iuxrc<{A;DSsG2{MBfl4E|oK#m6wF~@*Ftifk0s}z&-`=&;qx&Pyxmyx#W1VGRTGn>L6#M;hCPP9k0 ztwWEV;bW3P{)CM|YnM1V*8ejSrO%dig^D!nSVSu&1Gmu*-NnY;!tv#JG5C zFGE!MrO$*ad!}?i&~RKX6jaTNA?TXyr;;s7Qjx25FJ$UMhLCEuWg&WhQzuW5Evd1W zxrZVPyT2b5XnRjf$eF*EZBR~r9R-Wb0(Mg}Hri6DbrtI?NE*o?O-srWO}^s|+wm(F zyOkg+AlHP$A3ET%S3&}*-og!~LlIJDD zceVh#U{7swN%Z?HDS;JD_5{L~?)>~I7Z=U0A{*c#gWf3F*bDw^uW@)BM5Q9UQ3QDCxQ%r8GN|aPkuXo zXK%u@-4yLT7PASY9ku={Uis(VUk5LfWzaEJdWnm3lJi;QOs1Zb0+S)-OA3+^wtY<} zo7mozfB7&2ZOiUvV=a=8^s*A4&7Hmk_Fu4jFI&sYIa6f)Q+M|to7ve@0`?+*iR7HA zu;GkEDb)5qXaqlnqfC-t-gkOfZ0$mhBzJo!+@@3(;qn`fzl42umW&tERClJo1Ct0n zY=?uOM2!Eo`|fgqVH$VZzAJippOvXt71sQ|ws>sm&0y^$d&k=-g#^@_=)5oI>-z{_ z;Z!_(w>!S;!{>R6^fJ@mj%kBT^{IW+DB36G2h(lT9s9YsXqkiC;Q+m8heKA5g`siL zzHQ99r2nSdzIN|*{Qqg*+&xyHzm@f~Xl(00{|bg&+r6vDhIur#=>>ItcW*-3h$ z=#>KAMzI0B{F0vwFtgKYpRKFy$XGyl{cP zU0?F-r2HlNG8=r!tvGDk#QO2U(B<)wSf({Tu|RFFwgYmkS}pngY&XyWt1P+O`so$D z=F7Al)kHRSB=8G`H0fi*I{#9eDE->bm$c!)CS)TeQq7|=`jZIKqW-ekc9(5jmr_JC zWap1>`pVy}zSu$r#7FEgyB#u+w#(lAwoCINWgjV-upuWv*3UrPwn96yW?&|wRKo8cG&GRf+H+X%CDvtR1{&UHHP12iQn7HPjB{54Zr*CQ$w(SN==Sn_81Ge zR{)}_GY5I5TXn{0?MO*8hlXh8Kb17IEOHx69$?MnRxaa6j}4GY&EQmtDTLE$$LY46 zMeAjnOsro`h(Tf~Dt>?QuFszW?e1kasxE&IMzvw1f+)!Dv5|8?2RQ$qdaKDO$+l0d z>Xf`>VIRcy;qQF#)b0Jb-TlMwBjGq{PQ+6Fb#8nAcvvNq{qW4r{`HUL@x|AZ?fuE! z{nsttv3U5h1I?ZNA1E`5J~>_dWAVrN&i>pLyL7quD6iMrQ&v@KXU}oU`>g7Hwrua&;KH02LZ`zgVd+fme!A=b-OCKw zN*>aM?sPUEI)N0`vjs>?1Foty+Bh`L1T9jw3NfY3I|ot~@;bv;#dPPr1huh%v9b6z zQeA$Q#3tK zB%|g}{Qch4D~c&Ln}>;W^(nM975;VZl5qT1Xiqf98porDl5_QLCfvUL5^mEi8^huQ zEOmG%B~ea?uYN8GU;U!EMDm-ndbA4Pv&dRq)u4I|U?an#k3eXnPW|Irr_c<#&vPxg zhf_%fXLx)kien=0y0+OUe+#TtSLs!~Dm7xs{Jt|8leL|n&T9e9h1kIv(a~Lly8L8ZiNxS;V zOBqY;;>~Ozw|yA;>ZH7250D8vF6Nk~b?{4fsUv7w+_ES6%Xh^bG=G*YO(7QCp_*yr z$UBr??3lu>t(zuMD(y?Y8Bs>E<#Ag99Fn7%2#1}gunS%fg#k@-P#`2C6^Hy_@pIlE zT=w(nU^$wsbXt}s%IJWV4p|$yOaf9F`odH&6-IvuV6i|>hKkJd=cW{6kwI9OD-GVi zVm0e-0JSnT>xIw_BbJ8dUEu67W}Ui~Rb9XwVqGAB3baNw5B1r@Z`ya}9vG}V4ARpu z!?hTup`s91;XhJv$Y3pm>J;Kkn+smVJ5q2w-%FnAKPS^0Px|rVY<}<$O#~$`&yy4h z;GJKA4(2F!GU+)u%u>46r}d1F<1;ym!(q`2g0w%AdzXh-s^Dz-Q0ASC>A;_2B(=v{ zXi?4E$T7hzF5YdC#SSZNsR95V%RtPCvVa_^ak3XEcYj zi(Zrsw$z2)4>I)AtP|k~m3%Ks`N6%ge**Uh+l5I`wkCTy;L|aO;h~6%XP$DyJOKJ}f&QdU<+!E*;IMe6{6Tk}a z>)Q?ygRpcFGy$-E!<`5OOOZXoNC~qwnkgS$=C9lD&C>~>D5El)MR@3WN%VxxPju5Z z#+Zy#7Y=Ik1_pvOx)Y#bk`85th)jrRI3gN`2u(Rh1X`pa0=*`H2vi_Pguu-%83VW@ zf|7=arXfP*4G~Q+BSff5M?^kA1m74U>>Dp5L}Z4DyhKD^BBCM01|cFJAR^?*abRJR zNilKOX5RxJG9H>2VnQ2aJQW5J$lXby04!T@2~$9{A})$?Pn%NN$WCcP31FAqPTotf zq4+ix3Xd}B%l)Vznl;hmk!+)_xjJRH1P6)vwy8W$qV_L__43Hymg75?_0lu9CC<## z4w>6*mA#6MgTBf>k~$}MK>&bjt7>UeSk^{_fUyP|+0QOND8{#R zkEuipR(70S;4YI_a0*(Wz7}L|r2GV{78?&XmRPma2)u7{t*7C3?L*X|d5{YFhP+fJ zXyBRyEHHq$0&1IM`wO{mOTo)z>5G9x7R-bWW0o|aczLlz|7YBa9aWe*$xN@c69JVW z@Q;k7b_lqdWL))}zOZmUJ4wQGl*Ar2mpR+BeM8(Z2IW@to$|UNK@LFz?eJdq3<0Zr zerQ|T1YPzQuV7PCQD=*p_Qg%OzhUG}+z}Ul#PH<%>5-x60#sdKQPgmoh35=)(l*r4 zNli77B!KY|eO256$xetffr+}MpBQ@0AMF<)1Gb|ScC9fA4m{foSa_0_PqOk!RzAtg zCwcj#Rz9hfPwM59dikVLK56hoSQYf;2Sm1W_X+S8+CiDQ&`yHpiW43G_e&!w4{2*h(NzdNdR;C#G{tyLv$cUMOncv z2~VL%_k4|c`~~H!6D{1VJNYEoT<>{D-(B{pvgirStj7|Ll2loH|R}>85ln9^fM8sMHp8*bGVDe;CpP?!$_2}5@&(IgL?AYd(feMrYDh*eE zhR+sGJNHMWXGr5Pr6*m1Z|S~6fPO`%JHPN)O3yM~@aaq*Wrk8JJ!ewK*z{I-N;OxR z!X_HR;x*49NSo&cF5BXYK1a_ou~D7u^uL%yVm_<>iAN!WFs%vplpJrAKt+Q_adnF6 zShR;SHiVnMdso7a=;tOtR*T^t?oUeW_!LeH9NeIVxB|nP&7!M2baS1ldon+d{FByl z)GO&R=p{U=MWy9x9jjZ|qcY>cp7Nw!SK2UH3^Fyc=4*uqY{D~&3u^%`SIEH>7a^G? zLGNX#P}_&?JYTiV9(-?mZEV|)^rf2&E!)yVcVRrPv2o@V5AXk8dGA`44x(JPH(I|n ztBk?f6|?Z|c@=jWUl@rJ{GqkL6)Ei&u~eo?c>2iK<3#_D39c9fChRWZK2n#1HceaY zU!3CSj>CecOfQT`C%V{3g`ks1l|wxmI@sl5zVm}!s9hGGdlWeCu>mwCLJ5aFQ@XP< zveJid`U8nL50;nVVZVYy>MGpGnV%41I2a$Jcj__SqS7KGz(Xh`>VQ!|?#AkEJs@NR zOcktdU^DW1Irv@U8L>Cr{GD>pWVs;BQpC8QXAFq#`|ru@{7uH0bL*xq^^5upm4jPMbM3${fI+ z3lK{URyW3{Y+bLekSFcb)@%g?MP2jLmPxe0wCsTDL2v>H`VpY4v~{zZnY2%Jz7jG) z(-E$a%GgDYT-vbKViid^U_e7?5s9cB+e~^F)8B(aqIFJfE(5GJHZgIau_Eu4`D+P?;osisn0>J1;}Zx z4G`YLJ-Nxy$LK+cR$)$@uDnM-5t>KR!%|!ZLmNBO=0aA?0b&3i`m+%n(isu4o{rSG zcFXb`gL!7I#4@7;=JW_!+Q)02E_pV^GZ(1f)PJ1$8qH|yumsJ~a-yQH+nGd6UM0>$ zc}J`~A&_r{LhudU=+ZK5*kmqew0{@SX0f6KNG-gfPO*!`wdk8_-himvyKCUy8r}Kk}WF0@ifwb&?Y7qMnBEz6LmYT>^{L8XI zmMdb)i6g={tzn?kA&$c~5@x-rn!CP#7wri@X3%}~k-MTnci(`!K_kd=q7kOQbR(%9 zTW~!RfQ&YkGtm_nl$$#s&aUkP*NnyHweqHgg`8L$fA7V@x|AgxS( zB$lmA{DBL&0H+6Ch%*v`#{p%`D5&a%V4PX~Oj!2v7We%Obcw|soxl$2Qh)ye-tyt7 zY*T|vwxWrYe=#oV1jc6Togl%Ixr|I32`GW2;YiB|Llv0~JO)Ea-&`&jicvCLiSPH* z^T(H9PcV`X4}fN$q}KqcStGx4Hjp1CY5xc8^x3>f3|+yERa~ReveGc?Qj5l`<|p^U zjGyAbDrR`v{e!YYXsxbT(U#9r00ybyayk*N*P ziQ_a`Cah`FqDbS;@_FN%qBZTQ;I|Wh*V=Ekk^cmC=z$M)pdNeCFeOTxuCt2ifITuj z@YMHds1ijasz!ZLMU9$zHl@W@*d!$kpgNPA&N(_vBLnYUroGX&3IHE1?*JH|$tAWHS>dflFct)dfQxb1eLK;N>YH0k(h= z%gz(<@+=+!QKs-fRJPyN>ku^IyjlWf@(4+L!53g82sn*ch3El0iR6sjB~=cFc(^;Huc_S!zx?S4i2^5#Mal!i9f%8?K#tF$2 zB19Vp^kXhmFnett4YlIh*fL#AQ*xwRhFuh6YD1Td7lGldfNeQi)`yY^6l0wJ6WOC7&O#^ z!nc|%)OrGhutEG9{hHWbw6^t{zrm$!63mHOe5?TY>Wvw;mwiJ3#j@Y%^DeR${F3Pa zy$v>W0Pu2%tldLH1ng-w61u@ChDVIRMtHl8*dS-wYBWA*D_i0C(jq;|_>S^M0V2zN zbCmHxb3oJ{h5e;j{ljs1_XN~_^w*pKd z8z)fAAU?@UylMKEdF0iZVI*Zj611lrdEknoeGW=1A{pW~jAU3otw^!|ci(vG_M%yl zTt$rW#j@nM%)5#phu;|#TOvuxt79Z759u&OtG?KGniya%em=k)Pt1mL5$lCvO^nL1 zW)n(Si~bWKPQ=~OL5HYvh#7d!e!#>`L*dVk=vf}09Z3A)u7BoXJw9CII7fYbtsYL6 z5AEzk%mjLPygh_1c7B+h0HM$(9Se87>*Mi2=DG6jJBavSs%KO1A~dc&Vzd%t(2w?{ zc9wL-p-Pryi(g%QiTMB!Ax@&8#r*5^%3S-?{A63Y6X0|bHm?$5#tp59F!r>VI*V<6 zl0abknV{22S2!VddT?DIu+Leik zTBo5ULDP<3F)$JsZTAh@Z+0PATF#4A%1U4(*5*wa zQ;WUx5_PB1{1b zvVLqS$TY;R6AT^D#Nb|g`c68>&!y7>jh?A>*C+-S2duTe!z1)5a6u?y$eK``A^>QF zYXU|vsD(mHeG(k83P3dBgH9uRK`XWrN(twQBp2vFXP^AadD2ipHp_%SNsBT=nL~W5 zTmWeB;a4P@svCl}6nK3NZCXZw5_|@*QSdPk2ejUWufZt7)BV9CBGcyZYXGN}9RA)^ zKwGY1IVTY4aI9;x(}M*8M_M_@Cyj^<|6-0sM-))~lm5Z+Jr^?` zel9IqzcZclNcs30mtLg5gw^txzb~_l0t|>ScWn=6gk+spHcLwJZLh(Wg^S5)=PwFa zkB%TryDX!cW(4Ih%_f8vCZNU+)sxHq*+~+99i2mwJ9d*=)GOr|D67OxoQKF2v8#N% zAi80{bNE%60Wl}1;aANjXxs3@26M%j?cAg(`%L7h&%%Z_O^a#WiO^QR^L%yng3XZE zRG~Cepp4F0U;e4B6}G>d zfjR(ePHv5SgO2M2_vHDhkOHvo6p5b;R&W%Ucx{`V;2Y43%99spig!#F?X2YSf@Ja9 zG~@@DhI8Ay!av9Iss^yU#_yz`^IdrRA4rkaPBg5!%vkCOxoBE>lFhs$HqMEnOfk}a zmWh62U36>>pYE|rI$ZHwouV3biVyi(`LG!Sn0E7NjsB|*$xX~9dmXDNyQyWH1{VlY z;Zvr-oI3ctbbVmkIV{5=0v9pJhTX4W(ssiwuLVh(wBZh}!inL*^1(0jg)}rojx9Yb z?YBie0Z&@I?0he4KboTJmM4rW=9KBF@nG85cn|}C6tY5Rp_kfQ7Hs(nwEpQGlun-N zvPfd{k|LVUJ+u2Vul%2dR7UlX*rAYivmpJKr6Gr$#8UNza*OEN1^mRl8_pK!(G-mI zQTzzv7q$YodJGY|<22aLL*iW(1%d;3NjP|{(*IaXC*=wpwy>NGT`@51CW>%eU*rm{ zMYq$`SmQrK+rZFady`_}8mv6XkdZ7J00+CJ#Ds)tXxbYmxY$B%qf6ioWk84|DVXJ) z7AWwm>yuq0omLo%9_D5agtc;m8(m%)gBtaTr9!R3@LiONJC;s2$zKwafI z;D8F0x(zjUimh1N^(cX=*Q3Oa zsz)lhodm^{40f2kaAQO|23aWHA*-m#f|TXHnzL?Et(|NqObL7}ld8p##vjD83S=@G z2al(r3+{HlzUFS{MV5fdwyu$^LA&k5yfp=;Y5+hd3{r^nkI6nDwxK6(PFEhs$FymP z8~`X?8#cozKF_^Qx0#I$U284XDvY^uvw~J+PG`{T!kezPUT|GRVow~iOW~oBvw9gU+^nGo-AvqrS!Bbg zz`AQ5@beh97}upP(XDwrfv@M@Jr| z3(V>XJ{fGsrkc^uGRlm67Uj5lc2J>Tb7W;%;Q?5i8ormhh3b zY9no-Ft8RQOE)&ks5#VC%zFiVaaL?LXWCb#SV^~pXKWg-Mgp2>oR!_d6;MS)-P~K) z;?FToNt}G(3wH=Wg25yu_ioNvBMrBEqNIX3E9Yt+@*EnFR`W zmN3L@!m_JV2<+@K=8||e=8y>>1IW-s_`R~s9rqe3Ii^)w6fW9 zGi1$eW6Ca#zFoMbw2sPAHer20R%uwJjiG`vyqeMm;H0!M{j8tPQ6d!9X~AM9_E4;B zFxTmHNvuv3Mo`i_SzBj7v@u{zJIs!rofF2@GM~du?0b%UFyA_*I<_2b5MO7#UJDRX z2Eu}HM#2^=)xtuqPE1stK%qb=U(gUzlc%W^Nkq$ROOi2_vK%^hqqCNAR8I${VJL@8 zuGFt{0!hNPbV!aAHByEl2l^z#HXMf_&RKbkOS5*f3uQTq(Ym+Ndnw<#A}WO-HNLaMv9a47LP61cXct=qaet*yc_rnPzF^E?XR}P90gmTCb6| z?`V5oM114bqT@Im{#&H0<{D}IFRP_#UfvAX~e6 z+sTd8uX9et7!a;>p6owKSx|Ks%t9#eAJ*)E+lLtp)hoT4zPWdwb8*b81<6|YR#3+x zF1e)0yNJ)+Z!$4D^unVzqYs$I-=OAjm27~zJri}ZrZ|#G{YX_qd=6{2hU-~|eU*^< zfuOZjnS};VF|6^lwdCn4d&=g$k+ReFw6o-?#J6Zjq>>VUyp; zq!tFk5@IRyg?S$+LO-W4n3l;mNbv-W3jf zdvYQC=W}$q|1Ir>u-PsTf1b-tcDZ<%%dcGG*NamN;jLTj`o5dE{xAOcRi`h6{hzqV zZVvA}J(g`D0;?N0zXj>-2q8Yz9xWwAZCxKHMCHP=U8W<1_%wUEln~8WG$2F*{Z>kd z>sCsLYX*e)bckVy5SgdUe3>1f5k(b9TN@{ryG05T3@tk9s?1GZNQJf^RHC`!{!Az2 zPYb^}L=*LJMI9a!m!k!&S4uk}1({BW&Lkeot8yNdQT# zmMF=toJ73w(i{Lf>dN6WI4Y9tcwSj{o<93cjGbNs`8TYQ4M1GPRtvAA16-JJ0$5n} z4IuFH;UNlA@~sF#MP{cZRRB1Dy6zY`sC;)3IYN_vf-}iJK`$Blq%3$KX%Fxy76B4S zB{RXM1~VPG8CAyHXe#q7?=f4>BH0KP7WAfZNa~SvpdoXAo(cUBsR+K}L6CpazOqV# zNC3I?PTQU=@t2gF`l-7l3*kOH;fPYRQq-BC;V)%FxR*c3;V4O*{*K$1L*NVE##sqz zt0==ptXldsT(1h2ypY6WaUDq%vQ@Vh3~TbU`hp@uRpAbk_V84G3K=G<0OtlV>fBcW z&J6{-*Gn4}G8@6T**b-8@GCqu!hWjPDdYIJw4a>ZX5pz=Z##Cy{KM{gD*aFOoJobJhWmYxNQkF9r;?rkl+Q>|sg#LPK{mb{qJ1+`ceDWDl*L#K zuN2FWsTGk&vjUp{ms0U-{FT-&nxc4Dpru0RVHztF$sRCEONB<+m6L6o^HfNNxNLz$COQV>25{`)*vCa} zW*nET5No*s7gM}K;@0z8xY=iOWxx3C>Gr7H3Ufe@HrS&LprA0!k#1E{zY7&Z2TF|9 zmQ(;EYcJxux{`-`-t$ulRa2z3#CX;M>~QUwB)pbjyYMVl1DV|am+`L9xWj>2=;q>E zY^A}H=^J{Tnfu6Xn2OKK4wE635=``|( zYMimIv1$lLUFaHlM6m(%X_cQerM|Id@j$H4y|9_}7%NxsZNM^JGpEdF$va|5w1Q#@ z;8Zr*AQBrSWF~Uv{6r;fXB6-_4w+&Yns{vWO>ih_MbS++As3);;cd~i-b8hH`K zobsIKJpDX_F_X;=Kl%Frut~$FgGCN;Ob42xL!6@88E?9vF|>rtV?=~(cqiG8z(zon z#GdVnL<%mcS5nLh%pin$Fl5=m!~_QjT83Z)z~T+L3bJlfiW&K}Z(aMMO- zW8q170=^-0r4tx0tc3=kJr4AMSB6fxf543CQWC&z!CjP>PZFGfvDW38v_uR>LkxzL zSFj7(vqMW3*A@mtMt)q&P7pjNwUjX!iuDFCH5LW~#2^Mk%U)tI5={VmK~Eq95+9Mf z$f8!g@IYoH@G!`X#F-_=z;a=mQScJmcrm%C4zHrD9*sFp`;%zrt?*w-T5?!6JJRC{Pz!M1VL?u*i zbHTc30kC_R0(M`S0a_?9#~A`hurM%Npbb$*pd(g1Gp~`82Dri7!!82znlk~9mW;tA zi46Xh4cls{_@F~&)N0b005K`O5C+543V)RvraNXp$4*kJ6o&FvHE0C`%=A5bsMaL3 zU^^e~qXwu?Ad@UK7>$Aa(8`h`fgyXN3#^O4Z~70FkcdDW7)C-mf(=^?g#ZEQ1XG5w zlwmbO_a#Fi0E2SW5P=J0BQR-IAQ1Grj=Vh>dlCDf1(*!LHUKaUklLqn*jYI(oVcg~ zd>ToqNkNyJc&{SX1W>w_Gc`}nf3k}@fm1W6Xqk{rEFKPtId%wHRU?TZ(McOa1;l<3 zCV^#3nf+L1Q(6HK^9e;T(WIjQS1d(xb&i&Eq*|l6xf`Q@I$Jq+3EAzLh$5$k1-KFO z7=4+`)p7Vcs)PbgQ~)!WTgr3jXb#aE$22bOIeaJR042CvVz|tu7ViPVR#0Hasyz47 zN|Zqf4DT{!x-I^`n!TSlbMfR_s6bBATC5$%B@$KuO6ZFML@+S8DG7*V(wBfpT?I6# z7-iN)4x2HJlizQad;lNpf*fUH#>};r;DnRo%zz=1wRFw=C|6YSMJSd_RIU{w5L8)jVVqMf-T5kv+lv+cO zg{3u1`ddW?rVmKIR|oKtilGNgZU$~r1sVhigS?EQOE3(HR4S+aBdQzoqJ;bBaUc9G zS}rE#k3^$#7E+{*mQqV18%-2+08UD4ikyo|+E5tnSfW!*xwnSb*=F&!NPwvnz-;4o zN8HBC>;Zs;YP>bQk)5&|lEbQ_g$ckHHBx*+))yv>q4`rs`;NmfDohv?{l~&l-%a_^ zCfAuX5CG-;>fgToZQc{9zsPXM+hn0vPdK&;4D%r6*}Hv7B%1ys%NI!CJe5vGlQRZi zY=$IY_zZ*<`_l~-S+o;wU>81t9u1&fHMNU;tV+u?*5VCgwzEJ_Sz}5QmUj^8OYJ;` z?SR^mqN=F=C78{IT!w*jMvqvx`x`uYJkJH7fD5E7vE7=aTY@t}e%@vWKd(9pNKS7^ zvMvh4e+zzud!PhZ({zq~Z-c=9IIRkW(O7fx-btre3x+HZWIQBRKnGBNR7eISN@peQ z3?U|9bz$X81lzMb(UQnPA}4V>9&NB{Sfl~Kth|p>R2}h09CWsjDSIGi-X6-U_Tguwi|3R;KSbz_)aGRB}sTJ;Td}Z zxwZIP>)M3irumsfPugm0@wg(aGksx`Pv>WOUM3(k-0XM>z0jF zihKrQlOFRL!UQ5YSx5V8=;sn z{oTl#Npz$gN30s)4a%b~i>ks%7>Uc+D?nu_5kEfQj1N#z z$Twt0M@zoZvkSG|Z#4r)@P169p zqat{gDl<`fnYPZ+GYxwk^(L46oFod?ol>6Lf=5cyikzw*sxVb=S7hWIMh>8nNQsG( z!nZ)7QIr|4Dr1&OS;1)OgqJ4TdAmw7=0KdKOzmxGIpyns$Y{;J_?il!BXK z7#6>YG{ zuu@h^R{lHG0 zDRdtz6-1d#I#MP}e7c*Z6lFT4ToyPgWfOG*$!106q@uP`E=$5j+rl)KMc$$`mQIi- z$kNTU6Ake@w~;jZDBg}fES1ZI0-TnmYvgXH;mU#ntZtAl5a)ox$VLeO^5m1D1HQJ% zmI3&t#2ng6hAy^E7eWFRvxPZ}5S6GVY65F2EQ(bLf=%|jY^)|4Yv#z5O_OcB*>q&;n#mD2xq(G-`>=bepUF6!3d4cr? zajAc|G|@t0F>VM=BJMX%9s86pd}#zd zI_E4v!3~x@0(eMP9MD7pBGfKAg&mRJpexP-Naie)Isp!$bb^5vsuRXOfWeiK7O)*1 zgQ6DsFr@H1-o<&pgA|c;A40F>KVW7kjFxy)RN;R-qHK7`{1}bOFp`q#8qjwiE|&?7 zvD_m+vD&W1NwKX!%VCuz;(hQW&6+(Z43`GYO_d8coEJp>@uP$!7Id3!BfHFh~+v; zSWY`99B?g_B6NrIkyXfAD^f}$m$Ih~DrkuGc|~$()zFqEHviJrcn1T_bD*9Suc%c! ztD{IbAw*y(g9GeN?CXRURB21ef7t^YiS9}LVR?^%rY+Hm%9ms5bz$<5((7`D7#8D1 zM9B{PlCTm6M4}M*b~iXXVW}_2GVQ{)fyBD>Dx*$hVx>&Gj8|GE*+p@dWS12;L57!P zM)VC8vr18eW$og$aP3lATDw}4QYo6kPB`} z!@7A&FEl0gLaM(=FQodFUdZ(`krJvlgen_GUr;wpQ`E$4%RsT=qlAGmI+v(;Q$8V_Bka?v2mM32Zmq3A*Czm1uPikrA62~OdZT4=uB$}CCN!P zLnTQ+5aTHOk&5|HAk5dqI)P?R+#3F4H^@F5WFN3o@B>H+9Ow&UQM_7aP(V&_TP9T( z%09S5Y(RPs)Q&h92R0zdkR)}mR`3GoJSt~WnT_*KmBmqrP7zU~MpVo@MCY~*IocKn z1f#5Md5G8`x&s>uxk@oK37HtEC|Nq9PGo?tRs(Zrla89nM?4J>k}XDwJ1p-QqZZ_f zq?%7#YKFo6{hI%>8X8Q1V$Fc93;a&y_PxgWkQ&=90cA&Zlsd{n5MX2LuXUnT^%kZ% zhrwD*B$G#6A^Ct()BZRJL|FR>_5+z?OB$XA@<%~rChAJxi-d$qS_Ls7Ry_o3;!a4l zOPj%%1f@cSq$8nw%*Ba1IkdpkMb{QkqQDIuiGkx?!)%1CN!UdKC%bwGFK%I5^a2=jCClr?Fz;ds{>IknV`fr#( zZ8MZc3B)2v!5WSRRT_nrNZ$j7m;u$m`Ief+7}ez{BNiB>p(1re=NNt6o-BxtS|`>U z`c51~d~gwjj5smNILg2VOU7bK$_mhvSr}Sdx~^zcKiO^pkHQ!Mh(&-Omb^V)p|AqU zq>5^+!U9l6jWR`EBd$U6UNmh6=tg~GAasm&q^*_Y@iaL1=N<7~IJ|A?Qc=V0d#x~j zhBv`d$y{5clSps@RO;A_ckIZ*LcmJFwB)jmOUSlc+HL^GqBZpCGHEw}E%X&w=S=?> zr#iNKX#R7b`ntiIx+ALNdwjG|kx-5D{^KKZoK_Fy!Y#0QPzF#5EGxQp(N+K!bHIoD zFb>*7bJ72y^@J3u;q`Nxa_ryz5wVi!=^33X{lmBCM(aGRt~!xD$Wuu{Za-S*tvqxX zgZuc33}Q&>U)j;P44D8I2EqwcHFWOys+HD@_rQ0~AkKPsl;S_}0W&QZt~KkuqP9zus~@!yz8umwTeg3<8^#%iT4QC zoW~IkLCtZxb`RGapd<9{nKfW=xQ)-Z@%ZRSO+bxY76{iv1+da+K(t|*2vg5SJBG!mBTPM$PO+jFrrJ=hB637|;rN+6$*QF06%Uts`W0jFxjA*u*MRz%9tbo!2NDCFPDONyg1CQWQkQ?WEVCo0t!wZsRSiJ-^ zW}n+Y^!p%3=^OwT3W&P?R{kQM2SfR?qjjEm-9385SfIi@;3x1NbOA)p z$>KdwL|Ozo_Z+MrB*WpodazraLA&YI(GvT84UNSWw@sMgL*^nUZL}x zumq^CHawIcV7+6J@SfvzUeT&-oj2AgeM8W};MB&I_!Ra?yq<{gEr=yNEP?jKJweyW zfCyw5(-_;&aYBAUQi&W4kn;_>GjE;Nw4x+bcI=6C1G%VZ&p1MDsK|?ZjBHR(4nkPu5| zaSH?TNts6($|?b9Lk1`VTB+6mQoJS^G6*CI+DL&b9_C7#27C?*_6g||Q)* z1qo50Nf50;;^|MamQ2FVhNZN}{W%E=2zSBsfLZb?%%D>)uUUav?Lnue%}&!QUEQ9s$v59?AK>!Js8rWE!SIutr!*irZb>lnnad~HQA zAy@~eva}TThK+DyR0T+#zef*Qk>ILpe#6Z(|L9TaIto>c=s+C zG)C41KriQ~s*3rr<=q8}9)x?3mIcujkOUQ!o8>CpB|^l5bkhwtTvxmRa`D?C4E%^RL_FMCUHpoA-;F7V8onMp_ml1(l^( zY$hCVls$*!Wn21AAzJ1Jij(CrDckFeqpI^RJ@#Vx$=h30{v z2oQyXT&gWk%DZmMyM(FDNE-p6hk2%L4KopMqSBxbUU&d`&bx!F6Ix{U8_G`tnR5ga zp3o%F0L@U_FbJ_gWp}w1j(whhBd$s&C-k4VITC+qqB(|ylq*JuF@=Jt5FsB!M4X65 zuFiuJ-#|cPk3bCB?VRiq3SsJ$r$A5`Ws$4^tq~{2N}(J0kQ&f+5X?|8Cs;QpH-@Ij z6y!)=PDk=`(3MpdGZI#@yAMiqAvmzak+MgE1+QA6b+-lx!JPqw>{u8p77PQs1Q1#} z7D({Gw*Cy>aH(rO0CQ`gfYt*jp#Ql#Pb+}n2B^LSjKYWVU9?s*5VV*HfPpN_){tOr zpalj6HbP*yGYaE;xk{%(5Ah;M8Qkz~T(Of06_D&FZB>G#NVJ-yL)>IR_nbi(q{WUq zSV7pZF&%`X%pHswCFcS@FN*^(2Y^<=JL^VqCT!pcU!nq)F@r1`l6>xL0zU4Nn)06*~npeUFVTc|Eh{6z?C;_+~mOHyG z2`|zUh>4{CyZ{8h{R|Cgi_dv*|H~m039t$uq;bwkkjAqibQnK6}%H0gP{OeOpwP6>L7(!k?O}9ngwtHZEcyXQ@Q6vh%r`6NpxX0@o6=c ztYcLY44_y^kbhgla)5@%@c;}2S{xt4&!WR|Hn>4u)TE)B>Pd7#i#8RO;-!A9(N?DG z*|u7+K%$b`@)$}vhLYv946A@wDrB$1$bs+uwdEM#v>b{7bLl_K29S^v6A`kIQ-mmj zmIwyPJbZaxh5yPkN(6>f34?tf?fJS4+sPv*F90a)gz=gdwB%^>ZZV8U2Pku<{Ao5P zT$Vx2%x{Q#qViZMLsTKY> z5iMhjTg_LY8~A`7B*UV#4BsLqT2@9f0ijQWKxS|Y+=%swVLw~XsGuH=Q|Sxn4|Rm9 z#UBk(87GO#U^GNUmLtvr!{!KEDQ-i>R|j0x#OUcm0R&fC9HfJRn(#V>h!h7aq*w{8 zSYKH35F;o@7(U-k`Sl?5QFs!rq+C&sMJNr1t3tpKuVQ{l%EM$(X{8BJOB0|bR#K^O z0)XV!69C{UgXW4&00u>{sex7sCqM-h1H4h1CV(Vg47~>3P?azNm5NLN`ec~^iJ;NE zvqq@eI+h7Q?eYXrwRmJb0cD6hfQvzrbTinPv~JFPW#Fb7ER9$!CZK#th^=Ka0Hbs9 z8K4O+39;2g$QgjulK+9T04(+8VrBRMT0An2yOHo+?7$mv{ z;}k_P805SZ02jw#U`25Z2919ogVhoSmqbE}0+_@QUxV$Wl{xA1h`-6QUw|;$GiyGT?3?prcKNfAEIWwmA;2);Iu9z zt1+ejuVghs#*&3K%acM8$+l!^jc%7Lt-b%GP+GG*`B&1Ki=jxiO>2ow>dxPi*a)_$ ziL5FTlDlB}%OV?K1kVrAWGKN<(1EP@&mvnBJ&;HR0h#`j*dpQ}3n>MF#i%nlKbt&> zRFjOY0%4Yf7v^gMNx&9k5DH|fXaEi)xu~zj(8guGq;&=PQqJ5PzDA<*DQn` zGANN}hjeyw>Er^XY$TTs%o?!27I*1LMlq;ECA)Mado@VUdoCUF!&td=+$}C0*ze)) z8LfTKrNbFYb?Kn^IJi(qCBr|sbdVCuleu(oqPTQa@KzMMbf5};pc;Zj3Xe`IV*laL zNx+q7xTZG_aOVue0++oxM1bKEWs}QU`EuOJm!q-xax~1BQ`JDWSLV%uV+Q~O4Y7E0 zG;&r!ij1(4ojLVz23HJkP{EL?!X(Q^we5!byxsf%LY@i-lWMPu5pq^v}l@wh9D?BmKWqDWT zgP~Q6aq^zoI)Dr`21vvYz(H1wyXe&PxdpgoG`Iz~j0gN&7Iz=HOxSa{W#~EFGDV)} zl3RuqfLn$Nz%BD$0oY(!0ku@XrdR=~4ZI7t413orn(G0tj7~iuAMR%4B0$Jg^a$Qz zh0dFtE1sk2vv4?eadpDbfE{dvG&mZl2YZZTH&-NfMuP5=-8)!#)glb8h}gcLUVLJbPVL{)4`j^jUae)_y)==^>d_>VOiQ>-beBBc<}Wl zFOO0#OBc>?pZR&T4Wd;BGAh9xOMPID9_Hrp8HdiOvbBCRN*=u+Uaj-Y(fJnEY~@_S zLm0$)?;MmP!J+KvES+H0P6#UT&e29NmamQEeer^}A)2*vBYDFGpjjce^g)iU5t_!q zlN$D?p(<6AGs}za24rC&OU)6~rGa``I?%YV16k3kES)d!17rF7?k7j|qBQrD{d?{w zY!rUa{R9$e<$i)xSEBogA`xWw6Vz#o`^mlrQk5u{#&zUPV!3Z+OXCj94cXFo+;T&< zG(P`ac}2D~UbozMjt7dTLl5t&*Hkp!=R$Z>p~YmZ%!_VG%PA6sDT0 zWqZD%fRiswc13wo0Z$;8AAFVF$w1_eaRg^$g~6<-Z2(mD$mZ*J(Q$BK;#M~9VKNC)YYlh>>6)+YK(Vo19 zwm;NoKmtzDSvGYry9=C05Oc|1M4nA|J|tR`-5r>ymNT(i9zl8~E&?P5vO>Tmsn|p7 z4jm0|HR#E6)ItMl4P3W7oly%7inM@NFip|jbKsstBRH*?Q=}afC~OCf&?Q+O$*@5Y zam*G$U8)LcPKr9jd_hcfp#wrS5Y&t(6zt4F&O`QUWDudJ;2|t%5Av^kkG^S3d(g?# z$r&b1m%;#Hc}4Ud#zYyGbz}k~i#B`!Vd`Eu>|n*Z^ISCIKI2gX?YWQw23ca2mh6^; z^{psLC`J4v^^fhgpx3Iu>LiPYjbOJTF!J7bgw3jk^F(wh-HRHgQ7<)5W457fuWZu<mB(`xvl^Hcy9 z76EuF;)-wsLM?z-=$wXsUQjQhQjl&zVM)YeLKPGSLJSh+ly{d>F?a;5--Zuz2bH6@ zCDB`c`#QNKD9}lHdk+U=HyD3}H2 z7*`?b3tZrMbrBh?$j;t2ubaEw!*ysS?SBt}>tw z;J(F$4m8ihh8eu^8p@(d@wCAFimknnAHCGqH9A+wt{UEz8Pnk|EzeuFGJx%XCSdn0 z9VlZAGj7A)K-Fo1+6J^v+xB> zkgviPnL&x{FejS?Zt_XU?ogtvT97~$nb84w%%K-hNJqiK4rFj48?Oe#h2e%{CKC>7 z90Ht~A5iWOfsjn8Y?hh9#*SP>c6gt@k_WOaxhfDJi11EFz5*c+(pKRcIC!RpX&tMd zF<+I$jEXx&9Z^bli>eTo$iXLyvKF5x^mgekn{iI@e98_{Hr4MtH`&6cX++mcaFx>M zIg359Hn9;I2BulQKZJoXlNz93*gSiInny_@2apyJ0<5HIR)_}XMX%W z>AjNADIXW}j@M=^9ytHp0Tdd?JQe7Y0|+tY3Gix%!Ke(A;6|>4<7$NS^Eeh@+oe`+ zqAVR(+rgcVV}ZREpNVGvB8}D+*z!I_<0ZEsDgG?9NyR9chA0{N1dCHL)P@BFYaf<0 zb;gbvxDfE8rEeTFkCh$yTmeJC4P!0JkgzWcgi~^5Tk|BW93rUrbdQy}`5LO&qm9?a7XZb96GIa-N(fM&yVP9hQf z+{o;rbpXwl{)4}pW<>UPQ#=CkmZF?O_6E{CTfr3^0+#j?;fi$%h>|ng!P=QE0ak70 z%$5KPbSny2Ku!TH;y76DBE|t^u35eaU=i~K5aJI5EE_-iMFK$ie+gLhgt4o6l2F--XOav%1570;sQB71#8Hj3iSn-( zKkEK_FqJW=D2~$NF9uVflICyVXz7bzlF6-o)Rf;#5+92a0EVZG002+H9spNY$y((^ z4r+VFLCvHS(w|9UmSsmON@5JK^?kyi03NbQX@JMpuOi|jNviK_4Ct6eW572v@E>^` z@r66Y&S0ACCE3y*LIx2*?#5YS3c8tTeQL;3!?dJHn8G_crJPFG2x zBXp-cU$+(h)FbL#o=VzMY!dFbDXui=icn|tg^<3efDfWdJb*HOyf5J6Ge;!gI}jyt zR456_p^$zQ=wNe;BH$|%1`@;IWRE3*9|#2#?a4S>+PpxOl9mBlDirMNhU-#C=9d+SWy=H=SV2J z4hmqWC{R?COvT^@{UII@A=iRgNXjS%%;uipOv|V^@d4stH@O20$&b3!7PMe z1FTq!765~^GkpXE`+opgs5e+hv|X7H$bdBTDy$a39J(-hLO39&mIZVu(H(HNK#pTJ z6<-dIS)2!mBD5k(Q~-IFf;=24W`nTRN%}0OE2bJgD|+Ngk7yZ|ljPq3GNen^4N|PY z`{+G9Hq5lFOI(r0fS^<|a3f@v?2B&9?u_y0Ig#BNl!jhfL@!Y|6qd5QnAy@U5_DiF z7O-JMR#sS4y@-Sp%RrpCx0(;vbcExZEUq2tPZ!?CU)9|p`OGOg1NUq|3UJ`4*OF%) z2N)K~<1U3`kSCqT*Rm*43F_`e4*xK9cN`EUfhzf`VW_?wO2M8>u@Z8&X{r&5TOmb4 zCLXo*bzN+um#lR}&g*38)M;?5(LAOZ>I~*tj&5jNIXp*pUl4+5{dk>bEU(GNDc1u9 zux0(7O07cjMp%!P*bCbKj~BFRvK|w;t_UhEeUOjCXS&%etJuphM}bLkggc0tHn5M* zEh#PQwuDP)xokK5v6-M%lj98BLHYh3t0R}pzA&C5Wgy1?m$h4OKmI>gPLqYUu;qD% zMx)Nc*CHfSIRN^HPQ%DJNV!7~pq+-fgTYguz2o4-GmIRfg&G8ghb)S@xf|bUK13m# zB?Jt1i9Cqd6Wo-O|53&@%SEhBlze`F1AxXY{0@&b2<$+{mfe}CS1H=D$wKM}jM~nI zi+{R9Xu`*d!2f>JsZhcBx6yuA^$X>$l^qQa+`D)9G|Bw@x!4u8g0}8#u(Xp02}9L% zaHFB2_abjLUP#R<{fWx^PN%ZEabCZ0ArJ+#yAb#B2W3(E+igP*IL_UyU)XfjkSVpc z4%(y7TiDd*&Ei?6eI|mnU z^avEwM2{pc%mReEAhMj%lW6C0%B1Gzju->vjxxNZve?-T{>xErRD5opBrwu4N8nfftkp{LVgaC4s=MUNL)@$ ziQ%E`(AS3{Sq#7}J0?O(X<}h{;1Rv2p@J}?Qam9=SAlF3$;Do7B-tc(fbBD=fP#-L zg>l8c&q4*&h(^M-ngRr+YYkni3a??OK;`mdsUCuow4Dv60ss=*h0s@I%u!FeSg zH3Lh~04)K_b^zUVVp<8y&L~%jEeYwYUO?PI`W$!B+KD>AB8>SUk&|dU`b%>F^sr}> zk8A8+M=B~dAM{BRd&*0XhdeoIpx^R#S`MQ?e`UyM05d$oWYCNf#X@`l;LqmHKp(Ry zQk=>G23BwelZAbw5bp31!S+{pjcqF!VBs~TBgQu;E%Qd7%fv?@E!XyRZLeI*8$iel zOVcUs{6JJG&7Ow93KtGm4W@`9J}uK`Ltn1uv?}x+e64V<`fJ&a0fG#qZ)L(z8VkTO zVPut&CJe<5B}^D=AFK@ZVy>Lh*{9PnSMS$O%wL``bd%u*77hAINM&oV$2wu|2F#8; zd@vrWL@mt*;H>PmqF@G^4H{8laVkg5N`V$u1zi`N4a(?gfi7l)I%>JbY^dIw4Wu$H ze2&>r70w2EPg(caY_Lx|NGOlbKmek&Lt?9(=}v59 zcmwTO^%twW=y>SbYP@Wf7ebGg7~o^mhP7btyp+CEpvi$8fix|edK^wxqf@qWh#+7& zlvfRnj$*RMhc%D_#qfgVaj-GyAvuD3611Z)Lndd3o(5Fk5&H~bi|Vo>o7NS+MUOUZ zR!9NAAQmW{tFy!396X4I#6loa5oe}I9yNPx&mI#;WS44+4pb>2UnpjItdpv97y~Y> z;wkw$)rtbhh+scPYftq9&3J@vvhOexDaUG-K3!lhQFMf3Bd9?`lpl+NP7v`6szfj0 z5@H}I{v=yQ@qv1bp1{a1(H9O20J#o{zLSlFzOTXKA&;a@GCi>eNE5Ef_(h1lJY}CQ^cH3q2uHf@=!~6Dh&9g`UW} zVu`GPirY%`1iX>xiM>ouGzvW-a!afW1&N;6XbDH5+!UoJNWDdnu`mEunphVY01`Y6 z!pt!~L#_ZuPY`5Q$NPw?7ZzvpVYR~8d|0hOHXl|il+A|~MPc({MN!y%SWy%< zAH^w(JRf$_d~nVQDr{!}Zpupn#6?*hI@=tqBY>M0lzk2WPtS1fkduYQ!jH?+F?k0Q zz+;KRPUetYmMc~{7sf7SW*eE$n1Syr&79DJxW9GpRN!}rV z0Eh%K9ht%43`g~l7~oseIM37|of%b9>e2zthnA%*9a~gv%f0~&xRdZAPYy{-I=e#J zC^KJ6A)>`nap1UoM)X^{N0ePU!-|p5h#M#kC}#}uEsPZW2txwm({iw3A|6ZhNolx~ z|LgJ4)r8Xx$Y+csAYwDNcZ!-2vOiMQn^-nX!`6njF8;AJCnPSt8X?}?*zJZY; zk#T(^;==lb_6ZFQ@9U5E(^8Us1N{R00z)F%d+|m;Q(9tjy3v#zo5UMUrW8{{ z-bmNRcs?W9WQ>hVi0zYPx=W23k{;ytS@p$DHYftAlPzY%Ng=47j|gJa$%2ltS=5&U!1pG;GO%H3kQI8 zw9*cqOtoB~wmj>L)z%jqtuGE(U!1pGpz8aU3sjvu#=0HL1+`+3ekNm_F>$cb z6q6VqJ1`|9IenmUU`p|dLM#>Godt4T1Jn8yFBzzmHUoCGBGX2gfmlOT)Hv-A6rRSU|33k#axXW7lY#un1sqW z_Ki(SGveqX|7c!Z@hgKLzV`OZ1kCU`HO;UaezAPh#I)3;*r9ylz*K2w8I*XFF+IbS zj8z$%EUi;4PvekOBMmBPXwhMrGSbpBQvK6YQj)NI6O+^Y1N|bxd}CuxaS34|zOkvO z**8Acl$n_9pOo0gpUTsbC<&d@O;apLOKeh7N*udQ@JsF|jWEr|jq8uTo^z5$@y|D& zlo&^Z3T@s;+le?X#IG8D&4^^-sPt*FEypktw>a8^K>sG#x?#ah1e_PwX%d^9oRZGR z1KCW8u}O);jC^_mk+R8R-crCX4_$5r@^2rsX?eDe);72vKYxN*pE-w4UmZ=x)Y!y$)}GR>a_BE%D*ejiM>V0L-X9v%GLq68Hq1!QG{vTRdH3d1 zk_jbyVcdFN=aG{`H!EKmF{7?GvU? z{bo_GlTU{&P$!&yR_CKG9S8p5pVNGet)Z9Ww?LwK+^)(WzD$2r{>a=~eTTXn*&Ow{ zy?)fZ9)m}v&TBg-&9knl>6E2kHF&$O!>G{J6UW(qzG2-r_r9*(q0W+Yzt+#zMd^QV zXmaJ#%r+nUJH%Z6qHm(}H^0t1+j(+9qt-c9`q>T(s#xA_LeT9^J;Oh(x8z7QzNvc8 zAN%i)&FXQe@s1hgC)nvm9((h=XZ2GP3LZbXvFeDAZ-q)t=Xk93Ix)QQjGm_koo%lE z*0}$dl}jGq_~vPg8_SQ+IGL(@_H*m4pEjRf-f461?$L{*Z=BsZ$6%N~^Q%RR26g2A zJoZV0nQdNG=+|Yz^4~t~bZJ6$`;U9K?YX_<3IDcJ7k##(!_k8WFF5+6g`=YGF4F+-nld}Z*B)e9~<_lv0=<8k0+`-*G)gNzm4%$yn2AZS33z|4n% z>*kOBDtq8>6BoQlc=2L#(g*t&#@D=cYueG|Cp~|^j{CRRlx0EZLUM+bN6@fR z>RzdS=pV*N{fddVQ^OoQx3*tekShuX(o=^AX#82F|BHJ$Ux0h@0)q2*t-5*E(th}J3*CK!Ik1ZA-9dxJd zA6;iAzZmX+qT`2^cig!$>uN{e!LQDSb(orY%doSr!6EQQ{*})s_s*I%>W{C#-qrl) z^X(4S8{;$m^4&mPt2+D7^$T7$S`}MAeRcM1(^!8!?>&iJ)PY!o-IeKJ4kAU-! zY|^H#&szK@VBV~Qwxg%5eAj-s_p7=ezdM-o&9(i%M;HQHUro}B=BHgN_sz8TL9qT!MnQ=r@ewvSyw%(Wk7oED5OJM6Lo2F4V z?Rj1K2{v`37vt}$W3$gg|XAA9x5g%860{JMmNEn0uML)(3Gnte0CZ${Gw zRT6^AT@bvET|YK#>XsIt{m{kKE-B^rVc#E~6#L20F9-MTlUQNjXsbJ*%yP3_n*Vpz`d%H?E?9t?pP8^?C^JrdZ!S3PJs`UQk*1*r} z+~0V);8OWVd*`KX8|-{|Zq_5;5yH^^v&&A}`bG7?fk%GZlU{jS<;#0o1$W8l;Ou^{ zUXvNgXVTKvZZLe?II_%wxifa&n$&H;_@BGZ__KT0@h%sqw%g%aFSW-)*A43oPIW%L zcYNrt56gBN-8{cW^ofKHPCGAXtEn$9sJZXTz6a|v7xcLO;=_H-J)UYkmQTF1YVEm7 z;~#|WsJ8pmSIzYc#$AY*0lN>s88Kt!+f9qx&rgZ}!r7^V z$LwpN-UYHdmT-zvcZhyJqbxci3&M&(w^u+76$8Fd^1KJ95POjFSn8 z{O4~MAO8KNN!`8XgJr#{FZ?!kj%o0-ZL07Wz8@@Im;UO9od(B&YnwHk@p$ggghS;j z6l{0;Zdd5U*`}t`_w~|0t+|yOFs0YUFBez%{LcLN1|bKxb@JZv_D%YX?i;sO9=5t! zke#aAbgyRW)A!wOI*v4Ih76ytd1EOmzXiWPu&5|Nz;dJ%z4|#(RE^9 zw_u0gmR;A@zWw1>y;4UW$t>e@ZQah<{m%scJk|TNf);5*m#HUIZGPhL?{AOwXcqTk z+`*{f4Gibws_e|2Sx?)%Row8$8TF#)ba4#mU9ag}^RA=yTUK$Ze(l6ek4b|+T6uf# zh2dY!IQwR9(9|mN%c6E29{0ndd@*PJ%D5Z5j8i*)dUjva({m>0KK!(S)+c=8y^dl= zfP0haK|AJUj|;DwGkf_p_W|*ae7%6{!TwHNhwH!_)4=0&4RwKjL4JWcA6-&n@&H}K zwA02pfGNhOIG+o1whg+^tIN6vQ92|hs*6#=V1?aLr@zM3kNKA^4NlfmWBGr>k zyj$T_#Jfo@NK8&lm&Ahj(iv=e$^c_BpOTquG%+q48y_z--88Ks2|82!P~JEM%2}GW zgT#yZOt5kkGsc%K%)^`G;gRNEJrL?-QXq`a_gTOi%Nt^VswhCKu+!prw|8wly&1Ope~XHs^h0zlZIN+>Ut>7NzPE755u{2`RTYO*;{!& z9_MweuE*lsy1tR}bu(G~2G)>1#}LLr|4@br_qFLwd@SDxZ=VZKY~jofg$P|4#_6s11sgo2Hdvlx9q~ zQeI2xaS;W#Z#o%xI)Bv6(1k?khKU1X`(bGg?$=<*z$72{;3hcb2PYacqf>@7_6*`HiHJ{6XzYoKJoyA;V!woR`ND)ILUB{7**z$@dGmm#;h~=X(#!q$xTM5X-_%%o zJHwRZg%WfpASNgxI3_4OBEnm4hKlg6s-z={|i=;FEE3pA|u#^mh5sU9*1aV6-@qrxIy^0&-=$Z1dC=C9cxdEpu$)1keG(StxPB9x`(MJCX z8=VF4wW=0{`+wQ$_4fszLeb!F$}=2Su9_s#MBzy5zp#qGCtZLe{k6RtM(sj|Ua}=x z=DvLy^G!(_3}Z4Qkr4R*Qd%nM1!xwjro_SInNjT9|2QU?Vl!g~8{?SC)U&!9Hvn*~ z50Xn(Ju)zoS&$YA87yPt2PUR5;jC|>F$pHV-W>NU-YJW+TXCd0NR-!~Ok8}R-bj{b zp5uQGx#j zsy`khE1l~9ql=ugsabTDE4FZ@PYQJ{if;c7wR@ivVI}$}7?WU&P6Lk3Mn8IEz6iUB zfB)z0l|o&ad6`_946!+fT5g;X?R5ackd6AU1dv>mC9EU)gJh3+xc<-k`956YjS7ce zjr#vChgQle9GY}bWp(g4r+*|L(NBwCb0~sc)B8rS`DV-5NM4Zk5Zv*!u&fT}ol^!H zp?bm1p;-1Im_g@+JwGl3avmvVeZoRyvEjb}k=QgNTucFe5P>DB#h6UKW16u|wcWT+ z(5H{^Bin~^-4W-(_>mvFA4u$9^pr`H(6omc|Cz4#OH8&*Avds&8yAayk^O-1OSvA7 zbHb&%_>ol|OY;b&>ukw~A94qMI~r*1Sc_R;}B#ZP&g-$4(!1?$Wi}N8Nk$jO`N#0l!~D zV*de21Cvuy2SKpP7@Rp|=rAZZ!6Bhx;SrGy{3Ykw-})<{lwNwT;RlTx%kOXqNVc)H zvv+WGa&~boQ`W6q`3e;)RjyLCnpB{AjheM;*WtCgy7k;WJiWZ@H}LWG^QSKStw#Up zLVrbWxO>{7^u|T!#%PbSu01dZ?@1-%dS3YbFL1pP7)|M1@4vxe3MuJp zwDor>sZv&8@G9eW6L9Z8r!b{+yFAqYcjrhctISc+e*Lo&Q-pg_iAm{;GVjW@GVhYz z7M|}orguV=hpQXGB`L{iFz-VFmE#2vv=I*}-#9oiB_oYb8yIU!FLW&!hZy5B*!!@D z!{AAxv32Z*z9cvtM99P(W}%NI+;nSU`9{L_j2LU4el?fx&?xfuVt6 zf#HD>fssK0L4iR*LBT;GL7_omLE%9WL6N}$!GXa+!NI{H!J)xn!QsIX!I2>WA%P)5 zA;BRbA)z5*A>knrA(5d0p@E?=uaRXhG%PecG$J%IEFdf}EGR5E3}(Nuu(0s3h_J}; zfbhWZpzz@EkZ@Sn!o$NO!XqOBA_5~|HjD^~2#pAffbB3MG7?>kMDqxSLq(A&6d8%p z7D`Co?5gm(KCUg26*D=+WTeKVr!e^{2HMYmK2@cNwvteL#j~j0AUh3eR&wk>W7^Px zeNv!Sr642^_B6;;_#>ahz@d;3Z;XSbHz_ThVoYKO!xTqhd%(7Vu|tY>`oFfq($eE4 zAtS|~VwFe}nCm6+g}b0r6!G#8wOpdDsiJq$wf(VIa;<@_m$MPKh(6q@@)SE%>g|tbI1ctSZIA@MN2brJ+)KT&!53edMpW z8plO9D9+b<<6co5`*)~k>3nSn>i@fZO)0DJHRW32Ey}gRTjCOoaRVr%iV5y~BT~V7 z^Ra!P{rK={DSU5S^8z2x`~M9SYDE#mdGFLeTvVMgRdLc z0C=rPzdkrelsc1sPeS@#VMka`y2<~9^o!AyF8%)3=xd2o?lsyj$)Y|&?vo`S5Lq-4(alPrzo$05#I0;y@p<95ef$EsP}h-R52n*W7W^BYEEy=oNQOu4UME{4OEF?W5pd(lSo_fD6S%37v1Wejna_S7mt+1YVG}>Re5U!QaogT#T}|f2 zek*SEvKeSzJ89t8e-!jHe>>yOh@-dS%#SA7?U-@3w|V8!1J%BC{KP!8t>>mQVLi;N z2Gp#PTdkYfE%1}TUdV1$aj@#VLH3PPFTwPGl z-1YvNaVsCzHBV^WWXhkl>zX^;H60^252v4*t*vej zTeE8B7y4@E&hHlW+m%q&{M7IG-bwSSnE!m{)6e^4Wpla48522eW%KBxKI##vmCQ#U zrJt#}qoVm)wo7_1&x+=Ow`LCBIk|#4W9hw`&tH}|H$8qcVN7y)^VX&NhnKrv&iu~h z=hrR!l`{wQUorXQEjRPOhnVWQ|mHb^z zJ9Flo5o>CGYir(hXh7ZH+-=PV`o>*sy4uFPZsOf>a|Ii79p7P3ryS6j*Y@((zcOmf zr%fMc{Qg#LK7Deo+O;RHm2WA^PsJIxtF1m` z^Hkj3ch+wWmp>8HAI;getm_kT@Eg~pTB;}Fodu(gk6QUyT;#Ir=mZ@E$C zvFLem!{mMWk3^d<>n}_i{79U?Ht*4|K99r~qoVKTU4AH5dHPve?fDPIKE|LUb$dJ% z?eb#}EUxrWy!}Jj&*mI{AlAG1{n*FTABbJ{omsZL^8<0(<4xh~Dm@TGX1&aJJ#k;u ztgaul=$rfEf}_(nn&R$@j;arQj@=Q*HhgoWQu-Y+Z(a4hH_G1;hkTnm?dzX!i!F0! zzpUNuws=0nH#*_vE%D`rU%8~bTVmegJ>GR%-V*0--Qjc;flCQ z{PJ7x3RlE;l`b!dK7Lu8XPeln)BMX~mHgUa9gUa8?=v%-HuSwLCX^3Kc6xeA)KzJ? zU)*p>voxwoIH>Kawx=JS6T2SG81K0FoEUQW{^m~I&xv=x@4bAL%Q^AS z)vnI9H=Pw1ebr~@S3}N<3(J$oDv6mKknLkMa)U@YPQdr zrtT-jJu9m&_~zCLG0Sd4vtQPn5S#YDFlp?t6QW)8^;Tt?oDkcrN{Mabazf1WJia6H z=yCC3my=_U<{cNE`PwUMCmk1S>?-J6HsZM0=w^c<$gaG3V6mmg~Pg zCbm8`_zd{#q*mqJ|-^t?!cS7F2}?+$JUGuICE5-v2)Wd+m%Pflpn7QOd4@i zY`0ohvrng^V$hlHQ!dv%Dmq_#I^n_7BVtb3wWr4IIwA($?-;vq{t>aPdz*KLv?Jo+ zZQn1BYk5R;TfD5jZS5msv&cnn>pd)(Y5U-YN zu{^O;fv7UfDRarYKpeaD$B*`_3xGcdcKe(@EN*(Y`nMNr4~sp%sg@ct^{{xY@%~Py z`X3gzAC1Ys-R!Vvp7^wWKkZ@h?vwy^t2c+lV>KV;Pd#x++&MA&cB5YpiMIW!JGGs0 zNc?(o^B>Krhs4S48uy*t{*ZVx?d37E&mr+->r>ygay}&P%^98+bn~EC_ww|o89NV( zHdP8PmjB_PSo7ZQNA{l`6hF$(zu7tQptw14_LL{B4vH_Ttp4#<{e$Al<2x#Zx*Qap zk6roZz?}o)fsTP5f9yXXHjKD1`NdBM#9KKv#W6Dvi2k-0W`B}-K&<6`v-0Sk2gKk9 zUwJ=nd_WZT9o@M~dqC`W-~P!jwg<#3-3ofx7VH;S@3Fh*|IL2!ZoNu>UhBJG9MW#l zrTT&U#m~a}j(PTKpIBkb{XK2A?-Qr4`SOALjD6zCgb)12#OxDKtq$83@3T*Q+tJ-- z+l#&8u-u)I-*4Y5o(;IVK{IQw817l~>FM~r;@ETBqXRzIUyA6 z5jzK^m3y{mj~MvJACYwj?-8GuJ9a$3#UAl`%(-C)tL+gp499=!czd_lJbFSUVZ&~5 zifv4j+0%E6TO4|x{iN@1@xa>~QzkduEuPwNTex+Mze{|$ z|BBN`U+faU3|{xgSmQ2nZR)Zsl^g966MmfC-m$_i@rwetogd%aDSoi2QGM4%wWEc{@JS@ewRR`AWd&Eiz2-;cSC+AQ9?HEO~7 zew)RVWhe8#YPVTzVm#PNMAi9c0&HTe17 zP2vKZWWj0eCQ4$2q>GL>Wyfts!x;kg_#kj*sM;*82i(RWu{fb|eFM4lu z|155HzSu4JaO9zp`Qq1!OCys8w0(R1?YQy@?oR5 zoS%ND&!EuVJsRlWY`VJYIPb0RRPTU8_r{+3cU`x{7{77X=f#?8Y!9xd5B)p1x_@C48`mWCl-fc>&t#2LH?B*}Fwe(@HZe_yYNMMy}A6()DE^dW?h{1 z)u?j%r$5zLSHZrVzDMQnM*B~9(_fx-*}ZRFH~p0tALQkxm(?FUR<82m!CGH`lS!%{?J#x~Gi z|HyNR&9cpQ`o$kNc^lo+PJg?)xMc2QTYX2*(0w`6ZS^aD{bu#XU|apUk!{z89JkRo z+wA7KW`vD?{P|ta%h$KjyGI?H5`0Xf|LU8?lOK-L=okHXdwD>lMn5Iz)szEw)cPC4 z*MI%%BDH?Z_J?P8e4^I($eVlPZdJ9uZtdUJmOHA_&mX*IQjITF`nFS!+!=x3Rr-CuBtAQJn$tIV+u`+wg`D2Y(7Azse@^e98uGGQFsFZEiu(A{%XdQHq}|gy zPJbuZU%ToW>+?>y>@s=Us~v9zRpMv7L&96(tB5bamC1X}sg5F#UXJqd#+A3hO>L=k5!`_4>#*vG-pH*M=OJ+W*HF!pxC< zww~?xLU=Z-_K`L2FNDV92h~1(`MEGa+a;;v;^)G{3HR>X_IoaDcrz{Pk@s_<+Ty!y z%iet^jBov2?@m8I6J8B^SN*4<&jhz*ha?ZfGoi(ZU#I@y_)N%c+plc!;itlrR-=9q zzj-PoTx#=0qr|7ek3%lsT^agRs5U4y#zpf~sC&BalJ*Cm2!o<+wx;Ag5dt&L-AYV- zA}sANe^j{PiQq7L2Y4an?AqR`>~+< zv-d_J?6I&V;pCd;E{}ze?mwOI>f$3|!Jl_)_xSyhu)Enr)5p^v2~n9x7QF5MNI0u0 zxFIxsBux9f`{Js#9|`K~C)-ST{!qxc8k_q0;fKO6vxjV~vFf3)WUap@a^gc_Y?t~~ z&-HsK95AhY>eTF^(EHaL%h&533Wu*8{q#EbP?#`hU9*|z9tdBq3|{s7pAUqs&huV( zpZ`Gc>=3;$Dd&MOh1==z=+g(n)0?@voB9WWP18L>2kir4dAkXryyk)Moi6)8&nx$Z z#eEK6f4%*_FgWvzzBWJJ7bf|ak4l+xUs#tsf9MCM`@*bsm+JNFhH@WI?tQ=EeZj{5 z=toED+!s>6suNw&_P%iTNUg2ij@%P2R{N-I(1LqHo7#4je;asD5O;mM;9|pjf=$B~ zU;N~7PpI{!*8%?6U7?`-$pqi;?+V?HZ%Qr5xGPi{Hojbi=68kP&kY}UwenqIY{%*~ z+g`sTTuL3`Z}|O=aQD?s-_4Wm2zhqRX6}!U%3%>i^)#WbU z5~3&0oM`|1En%_Ewf?EoZwVoH%C2uU;Fd7hHGj^urndy!{dGQQUi+5NN}qMa`240Y z!{qei-9tBp=>hZY&#kyA)GbJe3jOS+klt$j&-dbQ3T-R@xx>Y9Q>fpg)xFPa-4xa> zpY?6R%NxR_Gv#|OI(9?&BF=qDqqR4LMdM#p4w!L6I2YK}kUi*z@Nu)wTXh|82;)Yz zXjRAm2H-Gu*q|~u1fMqHu2t_|7rx%p%t$SonDWu^wraA!l?>dj=nv9P53Qh+()a# zYeIv9!;_ZGza}I_?Mb~l@|rNzc8q#}@tQE>@zrJ_t*!|#tAE|Z;CoFtH|Da#v~t&g z@1HHvJ-sTl@3lVk$;qoi(wF!4+Hbrn+|E2RrN`o{LT=rTU*Gurs*wJuYW3ezuL@O~ zJPpn7c2)T9P*yGb##e>a+f|wgb*~DonvSj6#ObQ=>Wgo_3x9A$_;6pJBk{-oKla`O zo~yTi{C^82Dk~{bLZvbyD{|}^k`=Of+berhX4x}DM)oK&v!hUi?7bB-BYXU=^VYl6 z=X2lx@BjYZ{T`3|e*E4KFXwulbDe9QYn^kh*Yiw3&d}Yj?Q-~F3r-t{mh3;P28N77lmYx{rB36}(~?I-C-lal zL+t1Ap57jZ971{y$le%-V)@@1vs@g91l(>_@DYteI%X7R4%=gpanQl_fyptb$nJ2r zQTrGq+`{{ax@rt659toX${K@uf-#MbMUFuh?2B={9%GP^XH9;z`507v+mnf0bqr!G zr;L9iHU_1S%KL?~jX^3Ex$ZvHW00k|C&@E{F-W_mzjbtb6uMzzD<$$}6iTS8AaCg& zg)XdAv^mv|LSA*d?8Q-tY9O6A<^<3qB2-GSN1@2|yusDw5r~YY z#7u5{1fuqO_NuvU1QH=l)ibCWfwnW5FPzI8fwl}L5?2yOpkd`lep4YMkUBYW==y^Z zh$lNl?}FtBWUjzbW~My?xxEkQ|iuTogaZdFx&aN zo*02l>a)sB4vj!ZM%wjl)`p=%`a2R)Q^QcBx<6HC?=VD&Qoms$POt zhoFSQ4{?M2Ly)N$v28~65R}U0CYX>m1bxt{d0HJX1PND-QXI1e+b!0+?stcv%hZ~S z=lF-9Oto81Q?x^nTswVK5B?BT5Uu-Zab*yyseOXUJU9pq1tkVYy&Z(MgIt(tvj-u2 zLe+-@VS^C1T@dFhr$Ok}8{aP_I)hLz^&tPK#2^$9%`nNpItZm#vU|i+3_@N3HC1c} z!Ey0a(Z#s|2-B{zuDNRf+8q5d{jq8Q@~ptqSWO>*L_e-~@PrOPiUmGf8BPPx3azUL zhc57M9(H!})&R8p*4XXU^#SPPP`Gjy^#HW(?5W64BtIr)t?1w((IB<^m^+U*TcApO0euz$#wsumhAM!XOoI@tn z4~dB1#x%O#4+IrY%=L)h;y`j7PRVSC~fP5+&wrr z%PadJKi#TZeVKg_oAG!PNn{_SUNz}p?9m5>Ua24*GVg;PkdL~hs%tsisH;DmDwKXz0S9{QT;to zA`4EdY(oze>5@D`Q_=$|`^?rJN$-K)GCRoOMfN}leN|OT?;fZo@NB_Nn;xj@a0R13 zvIoL?o}Mr+*8_3Mz8$(P2=*)MRJLF1fu#7wPMA>lK)1P)O2~+Npo}^~_kjaFP|MvY z;exN-knq8*{)EwP=o&dS#k1CK2n=Dv#ns(Vx>@qh=*w=%>+C{z5q3`n{0;>E!S8oq zL9f3@Er8~vqyk^EL}-W;pw{k~gDocTqe%&vFTmmoyuL-P_hr_kv_#&shL?)``oim9 zc}2drY6Z6Pg{=$0;$9B4MG|`H2O(7sca`-1)osRRW=3F{7FhcXzlA23BtV#f_<4Z9YYfo3_;>v; zYu${H_WRbk{mr5WRIA(P1!egUFjc6R;xMiXCTanWjyn1Pu)hA`{z>TpKEHDbq>$!d zv7C?%SU`9aUi|?(Oo8nXYz>WIl-jes5dd4TTov_$EqP%NXe%VNA06Naeme~J5%6)? z02+PFTfhC^tbONh{j=KlXIoti zhC)C=8+)*z=#THsg-W->=O;??ydExLctsujLzgye-S=xr|AEnKUmHDn=hrrh zURQ=rGrCsDnVCtLnd*U!EWjpO$sl#WQbA2qD_H`xKkmI0VFmoq z`BMUJX-x}DB%d}4dWwqA2u$MuYSRMnJafR+4L*v#?#jUT{||N|m^2H zM2~LYmZ+O9U29W41F*Os*d+iC6(f98hFXaUPks?biUg>cuONsQUP}ot9{z6ajsjGI zg^CMAki1i-bFrq(7}NQ?b(!ge^{0ZKpf z0_-8c1^pi9_Z0jvCEb5ExIwl8rLs5hqi9(=U|BQ3sDi0Kz$L-dlqGX?(x24z~c}DFg8P|YG6HBQ><`)jc%%Y~9z0|Lp#Tgj%sz!L1Khy1 zG_{Rx!5~+F+XXjkzyWi<&^BQpU=-@h+{^$VxIx3aq(XpVp#p{8%D@CZ?K^o6#WbNb z0R&*Ut%8OEtnA_S(4annR%8vpcs595dlhg#ycYNml_&bf-qPMwn{hAEjAkHHs6HkJ z#0__mPk=B3xeEl{->CpMY~!s4u8FaxgS|R{GaG>`a#f80VGiQ|2!t32JX=Oz4-Mef1fm9*O66c=`iKGFRcXO{ z{{u+V`0BsTJJ4f0djH*`ImuI!t4CKfWX$fXuSYT8DKsDS}y|nQJ~A9#}^pd_@i$D=ws9v3f~ojX0NSj zZ3#>Skd%fn%gENk3>XX;z<^5N&%lb|&*bgr^UFw$y}9fRNH07d{2JfCZASP1$&JL( z{FNJtPFEVZ*s#6G_s4ZGf)n)LFdPb$k0zy|84MOgXXm>obT^IO4-7C206}x#NNWiX z+tx6M8a$W)t_3YI;RxIkfx*pxL?2_T{c9idhf4cLO$Sy9^9{12sf-zfX@c}SAZ-`{JY%Md;KYFdIjV^nM0tLvO#wr#A- z06>-SO_Dmwybyd}fEIpG4$K@cq0g_v-s>UJW$+60m^2`dLbrtB#tJ50;9d>Is?wx1 z2KO+3vmbzYwG4s1{@)ye4Z^_m?eC7D9`XO^iZwVje!A%Z;@*N%L-nt_oPX{z&;i52 zk8^$tjY4$q|bbCSbOn&VH{*{@|KX?j@>g-Y76e118 zuL#QjbWx`p=rPP>q^iiVVWEqpLu_EVNz4)*T%@E#95Nj+HqKuVZ+ds!$9sh4Cg0X6!>LosH`BSLN13F9ZW2q5D?>VOZr;&| zU6gcQziCp8Wtz~>C?U91Jw86AEkTmAM4>hwDRDZ+JlUF}St3|d*W17XQ}Ww7&lKh@ z4oQo(z_B-4rjjC?*N>HMCrX}jsQ-AWyh}1Jl2h0!>!_4Y+<0caFTWIb-9TpvgRRt& z>*0O|8(C7R0t2h}$w#Gv!`iJApPjf>@Jfu>S3=?z;qhZLoiFa+IuS*f+IYI~*4^EX zmdeC0x1uUNM~j5cNxL#$>^uKhURr%~;r9I2Bk9wzY@sBBRnl65SZmQF-=rPou?sQo zUcPN2Uqd)zr*XUfGK<2g$6>b}SYKxjmA$)d{93UA?*u}oZjqrP;53WO_2(rf7E}f@ zbxM~G;~T}vP;|dSP9?U<&`8l%KJ&$q&DQ+--0wLgd&K$9EGfOE>@Ah-N!7JfS?#=T zE$fv5*)!&Ks)tL6t^NNX*{n$B<0@7&3jj& zfuJ?+0#2~PPFStTRq?k9+?>TqWicBHx-`Va-x99gahoN*VEJC>&hTXHJpOjn9lzY_ zZHd~I)iw<0T_s2$bkAO;V)%l>RQZR_~1RgDph?XB?`#&$t-FVjd~n^~2?QB|z_Y_wlDU zvf?qX?{ZTXPO4z8+?7llqhj&6qHQAhGw`|=0fw`!<#TV6+&-`4}FXnO1 zPmt!RFRC9l8XEYlK3mivbf<$tV_7E7S0PzOBln^=Lza{`XdSeicc{uW4m?)!uwnhG zQL|-szPf~s~s`1dxq+XmIvj$y6m?Wt>npR_B3W}?dHS@AsJUr?bn_!j6ws=wVCyv2;1c) zY47mzD=G~4XvgVaT4kjp(5bCnvJzky)UnIEDsx=OUPocLOjjx5g$~;hw&B(CF&%+G zfo|*UlgQ(ia#C&GQplOQWdaWocjV+c6AAKEF;dgcMY-ba9FiL^aILeAO7}?9%fd#V zJGz1Q)yH=Y{dL!KO6P{Os&zSH4W}P(uIPFRVox}i(CM{{Q@;pU*3^4QF{AwQUWDEk zn$*QJ#~SsBZE^0j`C#aGg}tZ4`NFDylyjT?J<>>DRB%V@>DdH*<&N@APrVNPT=8rN zz1O$~FQl@vhKqR(l(o9LPJXsBSmgY0bciy;pi?kj-&bzf;D|y!|8s-mhJi*7ZKpiM z3@r~TiBe9u8sa3e)3eOy8RGhTa$tO!G?Z9K@p^s!tkG2k+T}=FS))=TW+qp8AES(e zuG@o#6-JkJ%+wkVEE%zK6BudM)o1OPw)$@mdh| zfo)@I%O{))=a@~t+~R+inXYT{X)L7lgj|e?c@r0FK>kOQBh`6Q6Z7|Rng z%XxFc0mSR`Y1H==j`J}whA7@MQVQNKDGazb*5xqB!d!E&-~ZH!>YdelvWsy~EOzKE z+E)Y;4pnMdJX{WY_|EjPMJCh67f10A7I^ATmi|%)EI-)XZMiziW_e%E0;@dQ*s{f{ zj;e4t!4gZxK66a5)6y&DP6YWpp4IXCm4SQKd{!qNtmK}9<6lcAy%G1v*yka}H>(vD3>SvklikIXrai;6pC11_R^9hZ$(^C^SXLV|| z!&p&i?Iv+aqC$6?ai|u>2AdnI{4k8 zcjG!N>|mD7q4CJq(E({p?Zn2O>)FFr!f5m-Bu*6Y1`eXu(napu^K9Pa3Bc?~}s(sY*^8a?M5$ae|yUF4xp%;=XaJ zTed7#IJ)k%wiu+FCC%u}^_Z;6C`8*Cm-}4KLEA`Y3BOA!^9uGfACv2H2@1p-KYjVAYe~-o)7zZbK+8 zzv(u=>9)V=cE9QNzv=BjCj{yF(-=$muIK<*L5hXI2KPCK!2QtS-{Qmt_bx}klgne^ zUgcj&&HwiNeH|5+^mt-k(P|BHI!^OL6SW4A}s{sQ_O`0ed4Pk*U?f`9kmz;{*Y9Gy9F>2NtI zt-t@YtW2$SEzsJ}E&QoqKF=j^yN{uQ;7eZy4*!Gy`&_{bXYKwG@A#6#9#HiH$O!y^ z<=5!`ZLcqWJ|x}uIxrH%z5jLKe+xPDkC)-z14-1=rhdm?U+3C@Ylwc`U<=%KK)`Aj zR3-iM>H7Hq+{)?K2jKSm(gja8_Uq^+z6;Ns@WZq|>KRW8b zc{9P*mNAEQifln6T1)Jkwr>sHwVGz0Fwfu$tm}8|sTe>sqt7na_+#C*JK)$!1+v1Ip0!>?o;b9j0hzxBSOQVFEVR-Dw| zjS0l(&HGpp9@WEU%pRO@w))j!90F?k&D}sj5zm50sm!!TaN9H2*LU+sqCSlp-{xTs zJo4@Y*OqHg_SqKyu@F7io>cDV;+t{HkrxGXV{G|`nh8HdQEb#PxiWT->%Wd@LEH_u@skOIuTyyCHJ3NN+09~d6uh1x5E^rfgq zt#3iz!HHOtDT21j2SziLWyg-Dvo&BRwvdqAbB~s1qE)%wh6#DU7rd){G}x`CbWFZU(rL`?%_FxJBW` zma*u5aLH4rC z=5W|8j{~oxO!&7N1g&}*uAg$yJ};_0ABX*VI%#6x}`&Ivkv;SI)12;7jQA9i}l+ zp)0K)Hj%aC4Hg458&e<4)u|0dQT>RZZ+BgLpFT8{wobbKf*wQ7!9FU`2Qz|S=G{RL z6TAE0y1QKSGTgb^QXFw6>N`i6n?I;)bm-vv1VxLV*}U+jIW7?*u>?ra56XtZ4DrCIC^<66AaRH$lCbmM^{PEjWg_gkCU`!ofl zqz#Ft?{$vc^s|xEPc%s!=yz^7yzShq${3b@0Pip!iJa<=gp;ZOE7yA4NXo4{L&K_2xt7HCQSCXgFn(B61=~ot?P+fh z&y}c1QsP%UrXEU;@}sm97p$sW2JU=remKF{J56@&R-`D0*>ptEIh%Ra`ql*=?F!|C zc*$k?>9R)F4u@v(H%%7nB%8jBgwfU#DTz(Cm5;B)ENEQwSLrFu?4rM?GZV}5hVHss zPF{0HgrvQHx!zm8Z?+=w{qgSdTk%~BGa9GG)-&kF9|~F&#J=%5v3yJS~u>i<51plGqTqvW2&7?sfo$q!nR_&I@YkIQErgGEhbB?5sR}MB(%h|f`1~(5}6n=J4+YzUd?vlKYYaxF}E~!L4 z7uowcTT4Ukv*V%SPbt((-cv%~F8gSCg$BgTJ+N@hcaigd$$EKHkK?642KB9I&8JgL zXKR+%@7E5ths}&4Hn4SEmex6L5Z>^`8ff$9Eps1KGv^TTCBb_x)GnGUok2R}c9VzZ+a*(17;vRwia$~jptJp^S=KMKb zUjO3{?o~#0gpQugx_?!kSF~GVv6d0hz|nV+G||aWTKQOfb}?7g_QBT0nD^wK;|qj1 zJt^W>%YB3y1h=(QC`?X>2L>@fHY77K;!k(HnX#k-l%h*Mw2@sD9C*8ZiN|wfah{j< zwa>`aaJf~d<$zC0b5}mTvis%-4TMEEDW1BzW>xy&b0_oFfa9F6F_&WMxL(M0_{)wVg5`2ws5wEJ&)Hn$;FAXLW_7N4oEc?7rxFXt4Vx@rJ8BD4> z^yOT(4$ED!(}dyg&X+dD8HKXUR3Lhe=Dy$Lnm4HS7B1#bo#VZATa|kQ*9a@`lHw<# z+m{KSCFdXM|5QDSPqrGEX;Cum`FTMkG~Ti=ba**W0p9?rcWzdx*hjjx_~h4NI@ucN zwSoRsOL+@-%Uh5AHik` zA&XSirihxG58aCbnEgt8jcyTsyYH0$G*bu3%)^*&dN5JmBJqi)S7-Uo&M`+>+NsWMd{*GpKaada{c%gE1AxVM0xd%=qGMs z&-n+NRG<4SB_pH1^{O9L)XjWW@@2TSMFV=B_pyjzjwhlq?LyQc>~(*pv$YdpQ_ZEj zGUl#g!nTXsZBOvG7d1QLuBFV+`c4<_)IX4QGA(&uR~2Y9#gMGC4 znM2byH$8Ojc8cbS7%3c;lp_fh2aEj;Ch#{-*J$A`HQy356}_-nGZ?xyy0pmN8r;$pZNhJBOwX*P~h&AN#!(P{99#&8*5-&c^D_wC_^3|(KxiUw`pg8LsZ)i17 zTExpC+85SOekWflsXFb;z__$98Bq!GIKZ(>E`{iloSEo~kC-H-s9!Ik%(2z@z&!6o zqZZ6SMA2_`ya~71Z8sw=yP%*%frdCF>i*GB8kHSHr>MsajAtLO?2Zrw#yozTIseW7 zwf6Fv4IcmZdG6bV5k{7|FP(Bz)&j4V$B&okI0?554ECwEtmHXmjUQX7I7*lJ$S9qY z-(lf{QEW&a17VSPcCGBY)=1;mUV^q74jnqN-9>4RhbrstP5O#E8Dpz!d0U8O>vWNe z5YnqYsjFS#OmBYD&3$w{vcsO`fxTV+!?v1gDSrZrUGWBu#hVQTY#t@oZ!2E57;4%n zo;|Y@CXh_)gPhBkdRz@%Oi$r<2y0@V-npbj#ckp`5f3oMu2 zcC`~$FEr=$S08#WbM-Zg#%|fWf`tPEp?MFt^qdy?IC$u`MzaLk?I^QKt7h3Qxu-sf zJt~pmaWm{@2UEJol6LTcw}eCONHzPXxXx|Jg)&xwm5vkQy9K1ek_<^aCn7MWqlBaa zDnB;el)moY{ABaKPF3f~Jw~r;wQ(QwngEN=2Bh5p=8_ zGUS|oL0dR~VYJkjO&)jkA=bl*zL(E3b9$#4Jf<71vV^Xfy}KoB^t?VKHiQWA&KHlX zp>&M&V6Q`wAUi2bdYjO zQ)~2j>zNV#RFR<~8YrRu#%ZuejJLvCW^VwVB@ZRW6jj(I@rg4yIAO?eU3? z=ZoOe-XT<%H_6;Apm?Gip^&UoG{x5~WkcNJYo*h#DO7ON*%8D(3}`NUjI6Zfubncn$*&rty; z)p(vyv$dt*`8qkbba0rnl~1#J`r75-rpMY6N!CtHq6H&;22V=JMxcrpUhhsH09O4n zg4Oz(QBB!*CpQzT`7(p_I=lhsbUK|hkSu+Q5e78^dv1X)LihD0d&{@ z*f`Ewb#;hkv0wOStYa^)5>en4zIw$ax@21(R4rAu|BNexcu*Iltuy=;X zT6PzHsbM2U_p!UvC1KMtrHx)w`PFemB2$scQ`eI(PP?YjXyu7?MN;z|)A0$&9gl0x z=8Qje)O9A{Aw;r1H}}jviw5heezWYUD*?(y8Pk4AUG&&D_-oSC3z?XZ^5=6tNZKE4 zAX*M#C#;0jfzQD?BE#($iGLeH$t5wMg zt(Nn=f+m5Ux==)RbmT=F?X>VT@g#d<#ODE}*DkrTPDG_Lsz()1R%yt;xHlN9f4XZb zC7;0b%tCR-(Lb-0`qs0D_V?q8IJ43MgB*u`BF5}xl zVPm7((XtXQCQVeJXM|SY=2$PIq@Jr*7DC0 z*48R=$EV4C7 ztj|f)*!RAoF2lh^AFZA`v&c8=B&yl=#wyyJKS)#?d;c=#jyPNR?YDDn&%Gm7v8cYe zmk+pe%5Yf=emGtc&ChCY5n&ke=HjD}a747p>(B?J_&2bNtaIsBOWY9e7CE#BhTVC+c#eAR2;rLBKf8wEc{bm`a^sD3I>UutQ^i& zCyF2f+?AUc?6LUx-71G!`)TsS{Fa`+_VAD;K9+xzpO|6fm08ZgugOT-1|Mm&!;NKr zZ9)u!MczE?I~g<$c)MR-h<05kNj3;vt>~C7Z`%3PcUsa%`Iw+(!QOphgYwL zuleBWGi^0#dJx(+W^y}~uw6M?yuRxR zo)l^ik<%hsZ&PI{EUxvtHRE4Fo*GpoE&7<2B*jatS<}Wfbj$y-DUtis1ty#ntunE=Y)Pbg71DJ@Z5YpVYad9bamTaQ6UiV9>;k#Z!3AA_4?#f zL9dd{lF>RRKIQVoz=kHY?r}J5&F(tS{qH*O1l}vQu0w$d-*xFhDLt$Y@4mkKt|vuM z-526@GTZvDOU4$MUrEb;8@s1dE?|#Iuo0bNf4isC8rPm4u2C5BSlQE=>r@DhIV13h zqft7q>y12;L+>1$9#^4sg1DQMeWImg)#VE)z1{1~vd_^1=_s2BSa%aVPR#U0dNhgW zcp0q6%lD9OpPwKLxOEDC%#XmyY*wvcZ*D36I3EJ*6Ymq0v#~L;FVq_c5GsH2?Tl~HR8dz@6tHggG$vr5Zfa+Xyc3QDrz zTe$Z{SNoZ#w1}7MmEIJQ+s0BUyf==d()8%57X}4IArFl=+zToR#A7{B<$Ez37*cce7$ik-Eq-aKzqch9Ku#-pGbSMrM|mK^4V zu1g8e`zmnuHs9->eVkR$Ft*@p{dlInMIbU=d{x@ zQYF^NH)+&`)WQtst)TSxlYwmG*XIg5tzQXVAqtS)9?cU}txwmHX#0GkFydZXS)YbD zC&hFH{&>&_rXAra`G;i#K1oT>i75*BD#|0ZGc%2jXMT{3R@52&NI&axBO;=9=25)4 zMv;qu;tjdx35qjYY1#FD9LT|(hMSiJ)RWJ15%p}m@Y*36sCc?WTy$(+EVFKl{&*$* zBX$8hV`c+Z(};D)>pcvwvasYL4!PD;i*2s5AL@ z-UWLZ9)*P5_r*yZN+*MhG0g8=XwE#Ww*BdYmzi3@g#!|^cA9v#%4#`o`Pg@v6z|`X z>%1OdyJ+1Xf37Z<`?;pJfkgei4wF#gcT*f^KAhq#!&K*N5*M>m+@!8U^2Up1VmXdi zHPPQBjkSs4q18G1MJt-(9{)Op>YFh4Tg>Gx$y^BJ(NJ5Y)i-;cF_#&^!1t8ulck20 z`cVyMq?(C+qg*C!Mh%7Lt1Den&ee3!@;psE{^ae6%)I$C1k+1WQ_XKDX56^u#9P9N z#4Qv*E+&+orPX|&t}0mixIf^zkm;k#7cACq9JeN!E)QiU>pD#TP4V;T6gmUR5QP|Z z^9vVlC^3vAHrv(=7aF_U9?4k1mKD3dm9`f5=x( zBk~#lEn>{&@yk1fbTh#-vx+0KD^*X_xQAxP*!2qaE-@M}M=74W>*Z@T_W;p4Y+vqu zuj={KqTX}DjAw2KmAYr9{LRU9<}iB0!x||?&5ljJRP+kkVd3)`=yyHtkA0YFa4wYv zdT={~q&-e)LHK5Q#PrA4A4VtI$=)3@&pP?k_$f1WR8=;dl&Dzm=$dfumpG?*LNS@zXyzf$_!4v4xa7)Z~K04}|Nn-2* z2mUp+iZOEeOboXpha29~9crummaU?F`NVW734l*wy|I=P)P2oEFYd`G*(U!#+#%T@jKs+hH#q$R%yJsuWjizq4LUEAHn zNT$>!EsyN3;Yy#7F5GqCZ%X4)ovCQbe?)wC;@Objl-oOzl2CSxTsGrtX0@aX)FY)m zX~iCVs)8a2ykd$O1VS?)_dEY9IyxQvHVTK znnJnH256h^MlXR@3?SBBMQ z)habr9exVZgme9tXE&Awtj%poT*NG%V}(CVlO?wo7dvQZFxYpjS7;+ML|>aUw$B?2 zvoj<_x@)bokpG6NM{BxJ_1h388+3$6WN_E1Uk;)HBDs^lh_@19o+& zUkDzU|9GM2h(LJPA?CAZZDtKMS>1~dO^TI&5_J8X(w6r2)q$jx!&))Mlqb{^f^dl0 z^)Wx-`#IEjr}eSvC{GwsouhJl_?WI&PE4$NJ7@5qQTpY0zrEj5&^G_jTFJCE+jQA8)ASUk-QI{OV|>95yiI!+qUK)4F7QeJ+~t-g+46 z7eA4YuZX5pi!(43KCnB?5fwL5&edNwr?UA14q19s5CJujq!rqb{R?TpO^M2R+SgM~ShX)zBxWC#EV3WmbLlds+PL0& znDaNmo3CDI-v4G-T{1U(nxdci#M9K%B?-)=mIjx5v~)r%pLhl*(!Ss6Z^pC^bab|R zao{s+!^YJHIRBD|Fq#9k2t)VrM9oz z3mvz~6A}eYkOH5T?A{bTjX0l|n=~P=6L(zGJfZ+8TsC)h@MxSWx3`l0ku9p-J71<# z{a4M0Nsl`&%Z`?M zYK0dI6h{mD1GCPQczF@=_+z~ThoM2sROM}kzNbu8TiA|K2S@p+ zzLG9&`Cy)1D<7LVE2!L>F*m??BeUj$O*Z-D#g0WUdBYAayiTi}wr=Xtdyf>XthJEX zb)I5U9(oG&-Ydo*iApPKIa2#Hkr-KPwE1&164B~8aezYEF_-=VW_Tm9ay-SY^T!pq=~X|nJ<6UA9IGODdJi^|A9-p_hb^R z?_ue=@IjR21_}0YUTq#zwOR=LkCOUyZw@Qg>EnEQX6INXBc%C&o%IOA`h!P9jSA7` zsSQrK{0VhsPl5~acx^ONe0KU&Lm#eZRl9eYsr zoa2)6iAZsCUx#ZB7B!t|Q%X6Drz=z>7?i3`-m*GEtYc0-mpE%VWN)@Gs73hM7pnc( z?irSLB}+)5Vc^jSLlgT!@zhr#Y@}URpm39@lGks&$q6Ufu?89o{Wt34k4N>j=i&w@ zQsMH3M8;6mE4dPht4S8z%skRkSb=$-^Xl2h{RQ!(6rK1UI?n|eXk07@)9)quw@y54 z-I#w}=ISWr7gFv#@SX+7HSlc|_xo)Wp47uS|ksEd@Q)AYt$Gz|2-e;NF$U;Ws zjj70f>`6N+nZTEN{iLf?JUL665J8)C{9z(O(ZMs4s21uQ z6^5ruafeQ(`&KUE&ktdQLO&-Ky;ER>= zn$rlUJsTjEorv?uKKRY(#mlcszNRcDDmFZt=_>fvmusbG@PgnulC-jODJ3}S(tO%* zg30?Vo&nRw9D2(naY(>` zDe7Jl5!{}iqJ*qg=vc~Mj@u2LkUMWglP(!d7Q6!35Kp0P>{qVJk`ckkpTX~aXMPlylF!6}8&#eZ-;cJqr%M$z<6 zOwoK#qa+75XPHSM&_O5kIipx^ztI5?2hr`ZC7buaSv?j`_hQOJeTC zw)gmL70{z<&tXjLijD_mv8m!8#mY}g zrFIK?(cetG;(0q(C}!sAxsS&>Kd%i4aV^O_$Q%j9EZ~1P5mfq~6gTIy)`{L?0j*H3 zv(|>(u}5MOHlGlDZs)Ya)gyX)WYil&$XU}c=q-(}uG^K(i@j5P5&i2P`75*ZZW=4= zxwmy%OJzAyMl21k$FEu1sl9a3mS-6|Y+)*Qc&lW{A-*mZQ~6#~n@96ufF} z^cF)_rGJyau8}u^&!*&(_UVzlR}W)x8(izLrqVAhb7}QZ(q;*MD399^(w4in_`U@H z5_4BLZ?=d%sZ)AYXGMFulB<`hXk%k$z^s_L-<;U-t7p@!ly@r?zUr&^F&e6z+Pct6 z$h2!V!{BaNq*~n*sH*6m>9YG)cAKgG{5R&7B`by`c{SIfG$*LU>?O~et3;e1zObrK zw4QFF^=wXcP`fGUmUsVdv-U?fd)=Dbr`Xiw3v2C^`D$In&PD3pKF#uXX1J06K8 ztvWqtm1R7<)u?!~;mFVd83&p0`Y!@U&bYDTZ#PG{e>$03Qu0YI@Vo|g+qSzC4dsyZ zlmX@CC5GZ!5tr5vC#-y1gZaRV5sGX55)>l$$!{}=6v|AkWsma^4^KoUXiuznkEKxC z_6*>kR1Dk|RAY?M3lO!LPMtoCf5(!ila7AoP8(x^eNv3#`qR>!Ga|9XhhL3)UB-``+4H;c(RDc8m9vQQ1AeFT;LP z6x*HLtggwsfCTSoa41z^bnUY-ar^3Ysy<0+YmP53`HKBwVo9&Hf4Qxh6ml>{op!0~ ze)U|O$F;Vyl+$nO`j+M;sVt}Kk`Xw@K~x2=h~|w(rtv4PHzRPpS&XRkyR63=zg}YW zxX-KGj&LVQ_#{j2X12^ZkIh`h20IS6Au|9_}uEjbFFX0n3z}?2QYv9{Z#(lE)d1PJIKEa z?~g|FM+5(vn?D-Oe{SIa4F&YykcU57gZ>)|=>O&6f85po(Yo|U1OG3%$p0;N2BMml z`jl3hfN%-GdgkB>y_NkBj$?h+9vA`2K+Xh?bchQU|a+O#w~YYA+2c*#rm}tt1147>ElHv<-wSaJvDy z4`zS;VD|T#3c#LqaM-}X`yMXZf

psUF5lrj*f9Y_P*GT?XIFi;Pz zM*=tRKK(Ip?>`Q|L*K7I{Y{ViP4@=+c_8TUeSrJQKAji1Pw&%V>mEuV@DIicVF7{5 z$rlKC{|(xv7WhsCQqvR-U(&J%C?rh_3r+j)2lkLZmAQL(qI$4}>pTEIA@u<3Ndvh1 ze>?U&GH4APhjBsZbAOVeG!Q3W?qP_~$My`aC=o1RKMZaKyeTV6lv&^{a}>P`iuKIq8g#jQbqdnSaqSU?5(R^3-P6mOa4uQDfe8E44tJc?; zf2~A+puzm)MVEuT8i05cfxzb7{y@;ZDr~{EUq@STapVyo0>CkN%>#UmVRsM^dD9=T zCqOX+9S=;VGB7o_wlX%*vH*ZHMl@s3Toa(Y03=!uG$KYgf7*;!S#_^-u(0WJT)(Du z^|~gL7LrL0HkM4{A_hJ9+v@}525+L1ZU@9kYqw7N%I0n1X+i>7UUmv)=!)+RF=Vr3O#u%M-T}jtEq~i%i3Id!K-h$_&j1PxPdiMJ zR<>pqM*DZ|3q%t@-~lWej_~_lqz=GO0wS;_xb~DF0<;Eu`2k8s2dV?69AMr7$la9Y z2Ik1`$w%X?k#>M;XK4m9v4;V+-J@m0pjT9AfSL_>XMh@Q4^u0DYCm?P3Ib_jZe(ev=Y;C~Z+Z#4vx+%;%1`s!E zt3CXs0}|j=&3>fI5={A!mPn)#Ojouxg)Igo&o9J!&`L z4DO{F4go$2VzGv?uiz-CFzD&V&x-|j(-s!i=Ad?fbX%L7qbkZ@*>!MuFfbf+7VwvY zz_kQ*0dVo)Dum*V?lCs4O|=0jPtVN4zyTB&io`}qYX*q1Fn|+O+76*Hwi_#hLdF8CG}sG>i5K5!hal2#xL7~C2F z`Yv*K3j_{pe>;x?I{ZVAp?hoJe(F!au^1rm8aj9khsSMr%!9|w z(pno-EK6N$W7sc@)_~32VK*%B3>((r{2v1Xmj~SM;C*+)I&4V}AA|kEmgO8k;4y?0 z2<#Wm2Rt{0!-Mz1eqn*bgwdXGe&G26ybtzs0tg%~90%-%{lRWn;5gPmUx-scfH(!@ z3J@+JH-V@DF$dxd#1}|BkSriYKpKIJ09gRC1B9@U0KpE#42TbqI3Sro@_|$UX#z3< zWC;ics6WSmPyx9NLl(Y z2lmC3fV6=vx~}~k-F}V}#lR0-N6_QMU;X~|wrL!kLj}%3-!=X9oS$aqCrkG}>N5@M zGbw_vaRuB-`5c8?P#O?TnCK61lvXg15r$HNdl3`xg*~_n*lR}?NGtHcEx4VTes7hw z`k-Hj8v+=KkQT__FwPoQ>dbPO&OT10TuR@5`!n%i*tvEKCNd?-8RdMyR>!r3V)kY5ZZhRD0#Z50-AJ>A}nBt*5+gGT12 z;?4No;T@*;US7!2t<9!kBcV`k>7+^&SQC>wHDF^svkWU*R z*g*c)vw^9#CCWFb{onoD{uBS^#(Un;e(nCDUoC501~Bx{UV<;1B%h+XteA+ppqPl5 zoGds8eZJ%O^U-=W(BW%_);ED0?pe?}{LLS@r~BKyfQ&N$2)4EnQb*m=T8kEx1)RN0 zFuT_hd_#x!(vNT)Kp6k9O!kKZ=0hMHINSS!`4JAxOn}2drwS&19cmZ#M40 z`up1GI?^5U%>K=Gl#T{CtZeq9bTm+baBCc;-}nwVpxc^3>1g19@YXU)M*{#fx3*9^ z+92O?3u_mS4{abHv2_HcqYc(`w~nK9_U{Jd4O`?W9c|G4X^RG>qYbPP+jJ;>`MbgM z>1`I2KJncEnRWXHN)PyM5G=hdh|>R0cUK->MV002F15ZjkbSMtK=w^CSzZt#j+%TX#9<+;i(#8+0GMUBQ+C+`zi! zb|uH{=7!S4w`)26&fMU6?)F0*TN^HK+-~96+5oBb{+45FL*j_uc8;f-8w5x9uHo3) zus6H+8IG+DbS=FvaNJ>TXzS?R#<8`*Y-jHtj=RhaU&ne6a%^qDy4-t&V{1dyfA=2a zc#pY3DbRn4W69hwlC8xJcl^v*-EhvU#g98WY&dB-63v3Nmv)HJQFM8Dw+BvpN zPoF|-IJQhd_n>Due$6z^Jb_-|*fN#uM%y^HOc!sVJsek>ri8)xAjg(zUj{zHv1Mvk zhL3S@nCMBsl-Q<&)_(1)nquwDW>Vh?@2PpmMO&_ zNhZgZX~RX5&#`4{aFdMX_~WIQ4>ult_A3`D-aDHOh6b@4-m&jr6{4vc>Ak90|nCwTttXui`)TFWSB@;uy z<&Ihiza$`A#0kQd$BvxNyble){{fiEI~M(o z0r-@O@5oqMoEJ!mtPwoX=@uC0_$HipE{}{>+J*%nE^vhuQwkZ8z-EIZGedE}G#2dp`t?kz0Fi-V&?$hPwclOMi$E&+ z*}F{rP@T?{C`?`f5u-7M1C~}oYU;obx3RXujxkN3Mp()vH{C7+)7rRnNzLN;1aPC!sMqM#<=_yY z+R!o^OFO12ggb?3_HgM5UIAOt0aXsv2}o1Mjqr;gyaCUFK)7J$2`;(ZPa$Oex}YGo z0E9N+Vf%6R)eqIxx9Iwkh6N9_RGUfHgOJJZg%GlS@l!%Z zVUj|eMN@6kE;eZ_T1d7}SNQ_OL384V9saXC?}zgMoUg*Evtv2<5YU&ym-SZYE8^oJ zoHM9ffy9^w%>=qr`m+BotGLaAGmI(biWvGoK7`_Teh0kiDEzYr8E{Z` z2*rLzdNpj&D`my&?!0NC+j_-%(O9pRY#cvpZpE7YpYHI47dEkkw zQO_^nUPa>BMFO}^fx(AqTA1#py1MlP!-dC62w8u9973kMdk#W2mhx9;yeu|k8CrU_ z=mw)BD1l%RD3AN?Vv7UK;3h`b;|O{j)+M!@~7jc37W zVQBVz?Ng8tB8Xy9ma(F!SQBm7N!=&_4-tn(2BIJwg2Nn+Kxl- zynC$kPv`PX#np9ld^I_PlRz`KM0X zxG6O)E`IupTekl5wjD3Oa`?zG$z~6V@{ArgW&4g(A8e7s!iSA09R0<$8~)>+RR6_@ zk@2H)JQF6CO`bY^#{IJ^=T^_JtADV0*@{P2ZQHeP{~yon-PhRk>7}RV4qGk~nnLOc zN=x;&MUf0wBpt3si%H^G>P+eF@=dzo~TJvBqX|tXq%zwNNSYKFnM^~x zf5@+$YM-ELCF3F{C{rD!vgSQB%&AEwS`-;ynoXSW)LdEfWrfLkBx*Wx-Q`%hslL_b zJ+`WBzN0dCw(@g|TRH3JIs!R}>TA5s~jqqW63fMZPQEzb2GXjpCI7W6KJ> z|C%o$I$eyD*-t+mh4ynAz^9LZFbu~YJHTzP>85C>UGt0X%`E<4SE^2RI46c_rY z*`tUi=E#wfDto_gmjpyaQIfDMDY6=%McTsb;SRUc?xJooWXMo87=_SK6h^}32o#B9 zf_0KaQf#Rxoo3*>&MP5By?X6S=`-(Ny=Hynr%u;BWk1|X zO&eV~r|Przwd*!Kwe!H?H;;FoeE-tb&;0`B9U$A2S5P`}PWw8DJb3uc&i7AuUHx3> z>mGTmf6T3|Yu~Wx#gnJI903WQym6&7D=Oz!)z+=uuoFm*pS*na^BzaQxYF7>Z~Lo9 z-adNnqn@ux0hIU8UudX3m;h_2jya1BYHe`cCJGj{<^2 zDk{JGYp>tC=$Dr+J7XG~BBQESJiK?`y>A`~4vCH_8DBn$b&`i4`IqBo&wbMK_01*C z9WAZTj!aG4vG4VxC%Qhmyiq86?)mhNnA2VVcJ{QteA4U+S#i1J(yrfVY|1VeJ!ahc z4O17izIXD>hZjEnqSp^jeulMOrfp-D2r32m_Bg$}#TdmGNx~FF(`Y7@36do_K%49u zB2SkIjnq`45Sd_@f9zBwHVHX{#Bw=8o+)D~#6FqcO;TV)3y@rP4~-g8r7xljM|j^8 z+xC-isqHqIB?qgaDr>zWQYhvq zNn)EnAXG^UNFlMVSeJJVZQB@Z3wq)iF-^>ah8C)N-yYUt_nr^;xkYcc`j^clTlG~2 zdf!mIp9bX-P0CS96uZ=7izc(_EY-U*G*Syz%cysiw0oO9gl24|zKbJeyC{0MyL~rh zq$f%cyOw(2CK1Ht_`3tXIq+AprC4LkpK{jCt=#T~F`mt(7M=yyY+Y(lQf$FsUc&-| z2Zgm9ppS<8cEMc3=ET9gTw{|VD-4d|l2S7W>X~;C&5YGhP{cETd9bL>WTD!IU$JR) z-mkgLBSfEr^)YxRcbo=-76^kT*JVwYMhugU`1%Q(H$lE&)*3}X%Xo?VARN}02JC=@B+3A&9LrdEHnM|R!I8-q|JDRUI>#Q3C5qkBk&Hn1F+o(GWX|dVE9o^Zxoi({> zq20OZk=+x&iS8~h%G`QibWQivo`p5jCN*_Wd+|ukbfK$eM%{;7X9yQ#X9`!g-oN*= z*xA>vc2}JFvZhiOu2=S;N9Mp+pfC6zaa3pXy zq^%&CXgC_>0j(V<;~{xSm59*2Wo+ZALLLw#!f_~q=!(p6TuTj8yc>ndWs~-6b{3bxTym!B?RjR;6)*lMB!*$gpsTu_&h9vp#`<# zVdz(cViif`&yWGgt;|xyilkwb9+N@SHA+URcC1q@5t5(O3En@FP+t%v7Rq-*gKe|HilsqhK}8LA207Ytd0 zG=3vN^6(a*{jmpuj|&^l6h#sOrIlQQoe%-WVF8V%Q=m0L*;8?dAQDMYupCXFAwo92 zOF>Q)EFu@A9Kcf*Yta^l8!N5v_xE3G zU(U<~u$Sk}z}b7Ry)OUtU;q2M>}bQbSH)2j#otYyeL=EwXT0-*cxQA$y3=l>_(~;4 z7sOXa7bI8mlU`Z=>eZE3@;gkD{zVtG{f%xjpE6RWkQ6I(%M!Rz3#6$*ZdHN=Qd+uj zwMTnt4eq>>w20>+dml1T%;)C?1(Z|Ix<-*@y;9}cD&ql4LQ_f(RjH9Ht-Hg%Zi9&w z19_*fF*LZ-L%u`sS=GsvO40*u#ybpP>azY_X*F90-s}LAlxulFlEdv)>86Wc-F@|j zEthXvzjf30%eP(}4Jm1C+xAPgZg|C}^_OqsH%gT@wC$A}e*W2OqhZUib<>886nVu( z+qQ4o>IDEhLb>tD8E`-QJuzx|b)E{@vDJTdstXRw`@`GH*MSI%RKYRlxcQvOf5Za(NY^XZP~PalN$5bT6_pXu5t)$ z(4TRf`fLbZvE`DNZP+qzB!1y1D6#%!uPsM>{Y4u+Y?F(YzZ@D{w7IoUHv3|2b;`mU zF5c*gbG%FmtYLIGdg+FXFS>C3<=bC=h9~=O$p!1TK=9*2{0SFczIE%Si?=uXV}(z; zbnB*#n>4PMY+dlOb`lAh6`W0Y2$h*{E}@Kg=Apdbm@kRHm-lghHaiJ zPpo0wcKMd=+ZX_`jB#uOe!cUZYHzvZ6%FVsPJhkTi(twn0>4{wznI*!@OYi{s!LwI z$tNx;6JNPuo6*xq`rhn4S(Y!&PFR-Z*+iW4n@3r8Vjl6E1kw#mQ1Gxqr6bBqCe3bZM+AB3>=CtS3gxC>ou3;?gKv7W;o$tiL$U?82S?(?9CV zC!#1%vYgvEU;flQjwkYb>9QzZdZJzf2*0X6Tb4}ZC!S2Radu)fk;PHGB1xhXpYoJA zk5=YCb;>DmzBE4NY0)Wpe&UHq5$C6n6!lgDV0_9cdRqPzfH)=1qC8HrKGiN;md8At zl4ZO-<&=qppOvRX_K?R}MD=;XZT_?AUUBJg9fE=%Gh&Q3mgl7ADCGU^{F$bkYdBB3Y-jq!5Y?txiu<1_`m zNwjQrK9Ofn1-U;r@zkZyIQ6vgc-c}RSVO3R1lw8mloS42me`#ji=w5`GuNEFY=RD2 z^%~_^KWcg@=t`Ex&uaht&;R!%dB*9dKO;FEU|aE}@dX#O(l}Z=^we}`>}F@@qR!69 z-E{BWcHN`v@ORRm8hX{HS6#C8wMo=@`S$gdn0+kH8;|QRlsLaOS)#N{wj+YJU4H4M zTV5NzB^e_LnY7{J3pcI5U9#oXn`+qKopd&CLRWYl8Qq$UpzgMAy6}>% z8>5dV%S%1Be%mFNZw2aCZQ8zJ zAlL*~$o{!x_~n;uebwb#HbjS#v5U5;Z`-$Cbm8_*8>7!B35UclGERw z9*cJ+H)M|_KTLj{yes=)`l0j_>HhS?>8H}=PyMIlo@6%tyX1lN&DrbYH^i?`55#{I ze>MF`y!}nt_3?G_*V3D_uO@$%Jdk`P`IF>J$s4mbWM51kOpYesPkxYGn_idhO5d6O zPI`0tuJro!knPRhneEBmo86MV zFS|8+fA+iCZP`1r(U09X@}6u%oa}u1EdL^xZ|*0n?6!y}lgJ(T++C!8Ouza2m7_>p zc4pKrBA2?DhxSbVyGrk;E6$9vA}Z1%F47fi6Xncjd|jPq$MH_yA$O=hKXQ#KiY62C zPbTetIzyQx|MV`BPqr$OnYBr~vx-tK>cz=a5uFxAE<1aSVyh8)Z&D4txKqTPKN!#A zoynDLjKQYhSCV*lx$%{1KYaOK<)A0^o z7s+HY(Qm=(v$I#6GZuG%X~@bHl4kg_SN2{y|zF|r;F=v z>$MBsyoml-HlIoL6z#DHU`M9oUg|q3h}tH!!sXl*?%u03x*rfAWR6w)s@{k$MQ^kT zS~>;7+Akc_fLOL&aewF>n)N+x7qN@C_lJshF?8;V{C3~h$z)gD8|oB8MSSkq64g2z z_ZhgEURQM&BYLx$Qrw)oqCezf)z~dY8Syits2DAVW_qJ~ySX=_PIM_iqC5I;bAY|i zTJdj-q34dJp+LuA9GanG+Kq~#UQFSRyZ&l*_77Al(x@{M(6H|TH_*J1ZZYD=bJWJO zNLD91`sup#c}03#f5cry@hi?Ai;EFY6laea4V=e7(7zY-y4{SrLmk#cw$(i%G`o}Y z50-e@QFQYCdawa)6gF}MC#)`D`n z&v@A22;;r3vh4tasd^1&FYuk`*XZ*Ic!(?dgj)UU`SdBeywqi(-W?Sma0imoOXm~n zY0(9K)Y9qp^}R8mG8&GGvD-qr@HsoX<1$iQd%K(cxAd~D;PuDxWn25*eULnaZxl_* zHnctxMz*3mH@i!y`A~`0*|;~_fePZ8VnhT4QO@|m7vXq}mweOl<42`Md*5_%UD4gQ ztC!ZpY9k?@Vc3U!p?;iyxNK^Nh}DK*H8@_EoDcTXb;%3-*gp>xLQPi`$utFK^K~W@ zcK;Z%U7OrYF_)eh-N<#iSeM+OXVQ0t>kjHLsj)V>NlEwHh)81Gq1MNsG^a5$+Ldr= z&@R+^>AF+{JZGiImw%*$8K@x9fCh3-^`HnZMn>pnZxl93#Fp`|jz!!cQuw#z*TqA{ zNd8Bv$HCEJMG{<$E%{L;_Tj#^$R7GTmCMlDWD*e0nju@9A1K?Of_n}|VxC3^&YBPZ zSswnxleoL-u{j|Pq)aF4lIvAgJV+8KcUSvcq1_nTW6{^YHaX9dC($Sx5Kq~{<0m{s zZcPx+HHuF4LU2+veOk0eVwe`66|IqwXPoaUr+y#4WCp+)YK}5OVI!Uua%+{J|$`Q#6hVpL5Ly-A2jLx zDPPbXc$ZpO=lkyViq_nN?-qZ2+F*=2*T!hopec*Z{j^q;rXGvrC5&_`x1|mnpvsVB-Waf$heCOj>^CcJ<9hnD1 z%|*RdG6msrn~CXO2t1kK83HXs?sgOVZ!{AE^^GcD2VT%ztJ8<|iYHH+>1M{SRirb$ zVXH57vFrypRH^RfT7B3+6|K`u;TTqh@mR`SHDm7pdsbUB=hYaj?IjO0b$IFMi}{*k zOqO*iHWR~wz4V8|lcaEE9&H;iz`~FKW5ysj`^!IDA-9)-9I&5xO_|w%U_RZg96~bV z(@SU!y0JDr`DE%$TDQ41PIn5+-ULfvb`>d-%?P-^5Ur?b{r~(G{nYJ5gf=X;Y^Ika zQ_?n4C1e$i$39mgd7E^j4mcC`MFR#)=Vzj1iY8JG1D7Jpe+26aW(`Xm48YDW*XV^n z4cxo-Yup}OxoT_B?XqG)-VF*HZ+L_zpvAk4oefEtL0ZT*nB zUAKrYZP+?dCpY{XU~e@7d3lWnsBEAI@xmU&0e%}sf$v8hWX)^bIJaBV%jX-62)Zl7 zS)+}y%wYC`SB6~+z*|rQ%qWJmyXe{YFCzK8ZBRqblZz34=;oP=!a%brJYaj z{FSkx?yw}?s1iymA7J(X!#Giy`d^%2Ot}j#b9;84J(kIQ9Ch!Zf`nVpHte1@BV)~V zWn~Y$D=%{wpMyC(>ZYDImUgW$cZnq7yyhr9?ImrFxK)Tbp*`PpK92E zI~4PE)9OI6GV2`Wd@06QVvOMWWaONoi0Z zxmXONkxwyhMMe-FBp^u&C3|U3m8u!Z7j?cD*CJv~gLOeH@+#;DnD4Zxb!LR0>Zk*5 zba(za6lW|bYYMm3p-pEaGk~LgyVj*SNxQ0~#0}3V6_bpCRhwb)Oi8jttD|X)sV%>nA8Y^BvqS;?`6R71Dl$# zKq4n@uQ`7vkvosZC|zMnf(lX2Pri>%D+1xJnCZu6i$Kp5cgU|J694GcIR8+YOEotc znu0sjAQGl;@-G!v$Cp{%A6BU%R!V|Q@!TVGrw;)uOFF;UbH|_<8~8~6Btk}YCtGP% zEMQuyO(FGo^)fd*dl1?0@C}kF2s;aQ7cvu-YGq>xy`Q+9FAzq= z3X~RGV=hQMoEF9Imo7t0C+=yN_1f0h`sb6k?S{4&*;Zj6W;bUJ4MZA65{hg!n<#OY znypCo?slJ9=7*{-GpEYT`x9_9XOBj>n2CWc13$*xlCd)E5OjzNd!cX-aKOPDqR4y~ zI1r|0BrFc*6@MgWA6^eAx_0M`d-=K4arTUR^|_bz+u+%{^S@?F^nC*#NHyXEwl%!g zgf$OdKtT^50KwHZPpfP$&;t^{j8g+6_Te~Tzl02%49m|tU`cMzKhI%mgs8{2(%RfS z9941yXsG}`H7SUV5eqvC|&Uk`#?5 zK0bBE{oXMubCdaDNeiz_Ed5KCeriZJL22oas&Tv`%a4UA32HCiVg*)&0w7K7E{+!* zHPZvv>SQH?%fnR23W3{%DdFDC5;`}*9j1gV5(MNLE)V%$(=!RkGe|K3=^ff@B^X0k z$hr+4$T0x|KpuC?xfAXTo>OP?UGh~Fwu{YzF{{Rd-UA4^OEPR~k7-^K3?u&1< zlUyt=(UWvr9(!E35WzWkZiwCiuFht?Cw}51FaN;D0(DLr_phvdV5XI{7_ScVQ@LS-m1^>v>KhR%8u9k@s^0d6fl3 zD*RK{BT0fnQyCn;vZ|P|#}_HM;L@!0l(3x3@H!9(m3#6S(j0^0u2zSL$UyNghc&}M zNTR|2zNrPdBm^pCes(Aor3{x&Ztc2}3yzTqrx^_^!_33A!Z`ggcdIe!pa>U;HMH35 zNKHJ+l)9VuGw^{4WZ;&%A@Z`A7Nqy*6rs^&a5h0CBn+G27(%RAAjT6d2Ewqss+d*` ztt6=GvWpA3}_RPn5xYb zc*-o|MA5;B=)zWo*D7T28v_Ej$wbo@vXeH4ETqg`yJRA`kQCgWd3=;te3aKHP{)Op zwnYHVar4MPIFyJO0O|5tD%MV&B$2csHj7BbEEVh)x9h4o=|8xA8YfFu2TD~b-YQen z8@q;NxowkNk*1$lj-EPI`Brh~M!7?^AdQ0{#dv5K3k;B~i2-u~$xxdMGC2Cmq5!1K z1=9txtc%E74C=doMz`F44UqWf{E*13hs>;GToHACbDnLG2C(ppWewo5sPAxqaDyKu zA)LBfJyMoKeCFS#?s|`uvv^69!q4fHN`v~>T@HTEu(U3BYe->yJ*MQ8&sD}((pkx{ z(KpCKJq1Basd6^5pUzVM(#2?wZ^*#u{6yn<$byYc8Yc6~-6p9YH9x)>Eahv&uX~IJMKa!%Bo~wwH>NyX^;zktMN)UV_)1%W-KDSGd z2Uob|+ZZ-$O=6T;?R`5?J|pMv)6A{Kfh?v3#zA~$6536o0m}x9R&R(#nTZq6Bc?{C zqeepss4al3kyL^xaQw^h739E`2 z09KXc?$=eIwKR=7sNpn1BBT0G6`kz9Zr-PA`K1}R|N6PvDF0LIva*X-mMeNBYb1pt z`uN?;0VP$SM6kH!3xQaqWtLpTp7SU|j6hzlNlTF^A$#UA+|Adh@jKKwnHZ8nx&n#T z$Ern{=pLIyp7E*~gaOeVtYX**Lk==iDnF={hlK9BpXHtUyUGLxH$QE$CUGpaq98r0 zmF0A^w77Y;_0NzDm()nk2!4YCa;yb=;zw9@xuPnN4jLaUwLO;FgIJnZiz4eyoZ#7u zk#OLBPfnl7zoniC!pWWmpltqDrr(GH=It@24am*F-F&rh_s7c4JFu;`s&qe~R))Hk z6Z55Qt2I+z?#{qsX?5Hl8~?jh4YH5)Q<+n)!TB4#sL=^D<7pB{k~9Kw#LRHr5fbMq zh0&T|1n^`ukA_)lMh_!e_*0~LRQM`J&mrJNz#SY4Bl$n5Rjn^s!(+!A6U4W$9}37} z6+@wbRxzsOHi#!*vjG4BlZrc(KdL%9tRqPC`#p67vy|%F^yGLudxZtXsm&aK<=*Ba z$3f*#2Uqq8j4{`usTIIr*a@&&q>Z~P5M@g9c3|IDUJZ#zhfGq6kJLk>2pN=+e<3QN zKpc8VdG(N@GMAuv^$>zk4;%iX(V3B>!45GPry33tY>2Y2ux#k-e4E@0>oC|M3^({x zL;^$Z0AR=o01O#V^9iIO`i`UG?-%0B$e^^osrawNwOKjOQLglRG9?y^#IXJrVQ+(S zT4Z5b_dTuK&@d{fkRR4Cm04M7rlwAdSaTCYV-|KL0bxRa5dV}z(_y&F6D}oF>>l{h z9Mq8JUl-KKf z4gI;w_lM{FYTfpP?0_KCu^KJGo_mfqh26{`)E_A=;m+6E@ldHrYpW3`qT1+$62uEM zqJT8anF*2p4-L|^Fs1prW4zamw=U5H^DM;#DO{HKSLGh>C$4WH40oEj)}~__GvNJe zXjN~+ z`&M_n`Tj5MeHLh*_gQzWexKzJ8ZVHZcDtk_iee^|!m12>j<(F$!e*G{ffOy)#)vykxywx(MtVDmi>c zQ;?SOl~EaH9A|8GlBi7CCi=)*ax?J=-ZepF=pzYnWveza_nH}mz*FSIKmyy{Z_dtU z3~*ek8t*+7tmR4yI0_{tu>{w21{Yri*OGQ&Ef%a`deG>e`=G~i{tSVE{^NC5KY5?( zRAoW*Gk^CrkZJ)0)wIrgl+u&bDV0_cb$-@+EoBoiP3#_Mf;vE2XJ1@vZA5J9!yn=% zLrr4%&`JzsgbnrgjdfG8ox~qElBB5%l2i-$^1oLe5O3=@$T6<*4m23%WN~&iFsc^2 zPlPv668>N=n!!_s#;84*46M3}YjDk9i1Hs8dgykW5#_>koJnG>@=Ji1Brs(onz{$! z??|2SvYo(?w~Q1%%KzD;Rbf)$R)N4av|%&lRRT0+k*9xDW@@6JL_LK*|ImVD-nMgQ zyq$q(c1|&2!HdMbo3xgt$tG9xGVY)0F9OTRx?Ey451i2E53Q^5Gvf>@6!%DOhX_b8 z@di2qP8Dd{Z)ETxMUEu#nnbg@BAQ5u0)?B4STo-Amz@0NpSFlo=ksa3xU$yF zM(oBG2nh>g55DlEo5|~uJTN<)QAdZ{I#KII4Jdv2wrGg4`)s)WH~9gzVoX&c6*W+* z1X{}*Qj_YEZvNf;t{d8ee)XFx#0n@;hH(&N9~HB{)R4JiE1(5MbJX}zE`_?H@)b*E zonNw5DgYt+Q5es3EIm?WKw6%3oM5p`Wn#yLx*VM&>GrFO2@pWVA|r6>XERf+pk(Ee zWDfCDMN^5L@>Vn1;DShPm>NA!wB@hV19LerD{ZZ>Ads#8gLt6*#7hLAgAxaVEpiH(hIR<}ffJ~yx6$XOtL43>DpaCw;x(xoSXg3XrW}9>+Dx5+KO2Ry;QQ$nMh@Rnkp|9QRkYpme$?*5MimrV%pgj={Pf4#26@TLTit z*&;16ki5lcUZnR;3BjQK@mgOe}zvRvN;FswG z;J@d1*tZbJ<1nk69V(*~6}MXGMX(!Z3#UFF0#0RWR(LLXRB7{hR6-llsd)6R27pZ- zolhH4DM~OVO_Z=+Qxb)x2g0wX4V(V)$R)o3B)D$@c|YA5F^ia5I4ib+*g;q_}p$F_Y z3>jaUd*G@$91e>j1B4HtrV>pda^}qF0mYJD`Bxxq8_QxkeUS-fTar-B9GmlK6ImMz8gIEnFOZ-xOY|0t0 z`8(GnY}eI6FV!liny4Fyk|eXm@G^p*k+#*gEtQm|_Y2G*nTlkc=uAM>BkCw?*MxF& zY;2QntKPiUx{a8m2b01`a%Q%QmS5{^*m~Mb{#{=Q*%<3k0ZFsD_6ie~d%Qx{GMuJ% zf*}_L1zjScVu;^uFofoyf?p?vBdnPrCL45(g$cDZ!+23iWYA3a{Ri*TEH*})B7>-^ za*F#@Zr`A8Xp#t1&I&S}O|k-mnk;8zCN04)e$z6mFw?CD=AtlEMb!EId2rSSg3+g7 zwLqwlvjA4`zxjbo{B@RF%1Z;uc!^p zg)+w6Vv(0P&~J*4p-~=2on1!Qy?*?VHSJgO`0V4iqX1|AKJWJ#v+1XsFB$>(Mm%78 z#lbKRt_grP91@%jpV0NbvCUCOF;mw?$S)&i(6^Hpm3RZ_? zYEMYp9vV(dkX1NuBzxz_PqoP0Gncre@FMM;V-XywoichOKa$o#ro8nDy$T(Y*Ml&$ z*o@y$#-J4Gxr|8%`=VNyf~Y7F)eM)}zz+0R?HqS)0=OizV#bOf(vl*GF$GRq;DVZe zP`it!O5@VP8(8!pzfWk8yn@rp;q1J>G3PJL< zXkwucD>>;KU_fz^77;~Zoe{UPN^LJkV`4%(T(nU}`SFd&uT{;eo~V+lAn+nG%9hIT zi}-)m!aKYpgMXKndmO+B4?>=Afj1nJ(210A#Z2F8oDPs`BWWNoN4WP)y?9h8Ll|HI0?( z%#JVEkt|ybInVAq&A8a$&^JbCk->R;1ET|^Vs6B(YEnhpy%<1HJKcWjY#%IQPR?hg zM!$Q_+-&4p$k%HiTMuXAeqgC1j3}JccmbL7pDN7qUCJ*XvsP9`-1%q&Pqn3Gn3zYy zKJBi1Ff81i`i0qH^LXSAi81Om zMoZCY3+Wg#1}&`r)|LjrbnpQ|80Y`0hC3%3;XouFI=@D|%=$;4Yi51@@uD5(Xg36* zA0n-f1+gu&r-`4l6O|r=e;?5+104+MBAnbX`&9`G#!S;#71*r%Uk_m3yoWgGl@|Cy*PzEcZ((jXJdk&KCEk4h;EoN+^DO?;qtGvRXh= zWLlJ#eGJK2Ewzv`59{&jn~x890;0-lXm>Z5rKU+EDT(nCY=8y};>^ZIJ{Uz?{Av$? z91qw=>is2}x`++qHS@)!5AX}HY-D2qi&2r8t~EsebsJ+oET}sFt2XwK4soy!{7iw= zk(pWT{Bza?n-=iPVa*x?51v23LurO$U|l(2h-SV{hTa$=KdP!sncLY35)-CV^T)(C zIG)wPO~jNTB4x;b&?p3#+cxjO;hO8Ik3e9C?*AERJ}H|AfLI2D%}jZV+8-a~J}zb) zJVZ(o*9(vZa_fz7$@v)EmzFe6ekvQ zjP&fich5#+k#U^uf7R$~$+m(yVmr-^(-6TSL=G3f;;G(y%NT>NB{t{e4@00D$|IKl zNcbqCeH4t@&b<%Y9v6$P5WCeVx16|jy}wnk$v}}YSW>pLmrFPi;r@o0sCBA{LBNIG zx;=PZT{@!exu)qM40Qob|A)H(#Y{apc?`!|pRGulh?AmJ*8C5Y%TPfUvseZ)TSifz z30e!hgM4|m6mGQBQ{S46Xv-gBM+Q#SxuQDfLB~k=a~>`kV5EwV=_f;^3g9~y&X_R6 zP*BU@bBm?3*ch?K5Wxl%&|>ty4X9w_sh$6Y?5HN|id4ZDyObd5AXm60SV-ZZhgYaF zo*SY#^6U0GofnEPRRGL$L3T;uq&6zCZBd57GHrtn%L2o(Aex}26Sjz%m&mlY7_CY) z{`=}H2J3UVD*{Sa(M2K#`EIqqElT^h!tDc`{A0-h54@%mH6B2&?2-2yY+J+Rn`abR zr(x^YHoPwu)wtHVD>%IXI!(bb1=#`ygXbn-m~6gsx~T}4W~_sCdcJz`a@)yS$fA^s0E=#chzeJn!j%7H-kGlWlF z!MJj5lJc)x{UioQo&*N2W zVCiQvkZqu0U*5xhobo=)vjcrB#%fvapowAZk3kguAa8Ku#+ zy3=0XlxVIc*&5|#taE2LBHZD=`n4DaGHm4{lM{wAcb&*Et{hr zAN+x&t&e8rdRYVg&kO!Q5@;;RAv1ZI11L3Q9RcdR5gE7G`~+>v>fxfPAugO&6aNP` z1)dfy@$1mAwZlXpyEn~XsC=c3b@UU7kp`Kjm_6--&TxuUi2F!AVBjJt1fM_4qZflo z%m!r3z7Bl$-8YlG?G7-)GL>oHXlu*dhH}nnRc9lBH<=SAjEdutX2n-#LLv52O?dq z1DQz7O%_tc39oiX{#gdKPqdNt>PP%R1Lme8#e#tOJazOFKoeq_;NV?`=Y!;`T! z9&aTfR6b{A3)oYIo#0PEEi)b-YPwa&y*yn4r@5)V@rQ!NYyAI9p zkNj<%bUXEGhpoiy5CGSnI(AFAlrv#CRF~IfWtAtFQM`GOjB|SZ=Uwf<6RGLncmD4I zd6NWrlc*Nh19CvFNeAAg)&UHQv5ld|Q>iiKXo2D&Sej`0#YSHetIXyI@=t}Hh$9lW zW{Ut?Q}YAD)c8S>pqljK0GeMIUxFt6{!JN6fCl-`1C11R)?KUNEy1h3+s^-KRIj2x zH3=tE=2BEHJJ^<|{q`i`Ec-^hV958|vpkfYY6q4MEQ5#3726hmfyq!1+2+gkA?+m! z`osR@1~!J-!I2zHq9yWYb0Pydl-AyNWq(A+R>O}Y9HHVQXs)0RR*#x&8HQ8AEW8VA zLJ|m<{Ljs!;m|$yK1e9j6o*6QB)$lF%n ztF||k-N%eE9%Y2cmPEi>K*Lv~r!Wdp=P#3*1&>6v%@fncAz*?6(IN(%-?C3z+Sspc zTWP&*3nS=!IYfd_+qTT7hKT(d2>d!NqtI$nsy(1;ea7atE%KVN3sI;8DXK{HsA60p zc2NuKDYWV|El3ZLRNJ;vzilfuQX}_E$pe-Ys5)N-%WYfb>Wr6IqTjZaYTK6e=c=nH z!ELo|3$Z5b!@TNFu=nWXV%xTqL7*RrW`f?>Yyy(r`h(aELkXPiN2Hb&PMGnM!aD;n zI4O2MTrc)*H*888l0UHL%X0|6l3CueEFD9zjFcjEO&$D}#iNiTjND6UJcCXU6y9jy z8V>Cec+Edl{Se2Z!TQ=xuNCKdi-qx(&tOz)8MLC$eKw8ODg7aZjdfNGLcY(Tz?)6G z>o6A;Er#&<)nYLs_r$E0V#LG=vJH8rGT0So_p=oo0mSj&ANLkT@S)_SQDR)w$hGa63-~Zqed&9R7cPe|QC7 zHyG7ok9NWS{S|#q-I`%9KSz3|^k0khJu-`KKq~ut@7e`b_Q%Em!nzHfdL!z-#UMsN z8JNKqV}wB2&TTrJXT*WE7I44j+_7QDsXClLYN;Bp%y7N{ zND;CFQpl&c4VK)D0U=-*S3AtSM9K&#&Cc$(G=>0Lv{vZL0-V~J6^U? zMlW=PO-{$_$cS~MU3P^2LsU=D5e+c(qK>qmR7W&N_~bh>0urd%PCpub{t6~T0EyK= z(@}36q_L}z&nU=XA2MLOrNN#l11<4#2j?&fze-7`ra27TJzyO6tSGw99{+6c@vDQ6 ze$m)nzB``w}i{9XL_7u2dPjBCR@>8y192kk@S`|<(=*!LuDE% z##YpoZ|>3vtFv*X zl8FFDz5oo)YB?8%Ge<_f5Hmhz6?{ki;Kd}i5IR{u-TW_n;%U*O3h7h|LebW)&fve{ z9wA_`pmjf6q~Hh`N{W*-N=fe|WDn0L2~H9v2cN>BupCMK0(K%7QNbF#Hq1^Qltv}f z^|gtPyV;rz$0v}(PHOcUI-JaQdoxF|6dr!?JkRB<8dpuseQ5SMmlm4ppgvEb}U zVR1z8L|<5&)bY5Dw+%N(OV5%>%yW^{rm3t8D95dF2x;Ls9c8+K4o@pm`76l$0 zTxd&iWQbR%{r^f`Io*mww<5P!!xx71{e~5$)U>WaY!DV6i1f?;6jA5tRHebAU(h?M zst}>Z-rRYv7OG~QBgb1v1oq&SC*C%N2Q+_okp`cj#&NbyX$?`iRmv8vdeRC6Mvz_J zS+#8nz{6^y5NNcuO{$|?p0tCogY?T?!Q7S`xF9Cm^hp1$&Dhz>rP$WW#$*hexsf3Q zWo$rPQzGgH~^|)?VysNF$(WIA1BDw)v==mkm8Z z-$14K!l=-13U+>bS1LOlWK(Gwb+?^hg1CyhKh+w=+p*<4)B*!)p=RFMlhgtEdhHTr zHTHwMMZ)M9+9Qw82HJ(o66v-x!Q(r%11sbZ>W~U3&$4j}twhe?evrlRvnT}#PFQee+ftp`hJ`ErzSu!+HeE%uNM;9$czX28f)m-$HFyg` zhWEi0&wyuCPtiPojRK3EwAPkG#qw@yWcO8@lh*LELQD0rYC8R`%}HtqeNG|9_7d5K zV>E;B&&jd2bnrMQrpd7hYi9?>=TmVlEw%VJ4&oA~)V|-?j8zu@>XRyA@$XsOvP>0e zuEoEnihu14GF|u#0MB-OA~X(H5$n$%kj$4(D8EM(FS_#AtPvGP9EWfUm90+Ll14?1 zBO&L?=miq`+E&ehft(I1@csTd_lQJD5mb%WO zuOvbPo6bLDCL1H_knb_0EOo<+7MI+siVt#mren*h;*x`lK!%j4%MVI{i~vAg9%-;h zaRu-~^C`R$Hl;xlEJlxPbqL0dF!5gX!ggsXFsGGejiMBk6_DyYHf^V&PQUz>tdrQF zTvoY6f)NpkS?VKz7(}O2hGStD0SqyvsZQ~$-|FUJ$^%S#)dWk~C6{dDAcRw&UY2SB zO=&W9Hr8B(&5_hZXf!7KR*I0?5;Ik53Qt%uqZO=BIN0#pZ(`cHMR-y6${L9~yZIRH z0$Caeo?c-C#d)>2DVb8w{MJ)0BSMl?ycRAC17%xgXTk@j1*h$hVqlTo?e{9Gj#1b{ zo3Pi&1kYSJ;DIogs^X}I`E{~%uvt;kF<>x;#C%+g`M3t=YcP?th%hl7<+ln0KGNE3 zBCNNb*97Ini~DrcuvA1!@9F>JHR=0A*pP#s%4UgV`DSg?U~BpvAO7om_5V|~<*)Jh zVz4>nT5Nr)m1PTsfPl^nh8=R%5Y-&bZ~H=m3t^a7|7hs_>YqUgh2^4{1>DI zf@~Mp7 z1gp-60)1PWFo_%s?F}^7A#u!6yJF!{mUeul<{PmW6Hw#YHZiY`^F$QEaG+FNLC3N{ zn?|-oo>@Km5HJ|#rb?sPnb(S9Ag}=`m!~5LyW8#HGHxyxwmq6<%+_d@R`8fn{#V;M zQ;fe5#6~4ej@g1U+!LMlY20U3abN{pJ+CUzQJeUn;|kEhXl?h|_yxxLD9h)Rr>+U? zDRm;VFo)Wag++di<;_>m&DJMcN^(sm&$H7g=|!mXVIigL29@oOCW<=k0RA)HB(LM%RjGQyZS(5ssCufuR^BW1F za6IL@RHxl_*QMui!9%`)3rhJpT+j5r2MV;S&v1$W839P`eUG!Nr9)re;(akyAgk>~2<&$x)olRwLIF+tx8 zfEi)&JP*2%34IBfsjo_U!Os8mG;WO)qh4#;380C)7aBCg$`UO%l*l%i&)iinN|}k= zlNA7+nh&R@O*8ThO|NG=-yWKOF7%)%JY#_<^h8_#iVM%MnN4nfp*n8nOjCP0ZU*Y$ z>^3OBalrHiT6Hv;ytH;u(m@Ahqa2ixMGuv3$8E_{k#+Pqhe~4w4jd|t8c3ioi^NM$ zjCfy#7>4R850#cUgYpQrPLHBV=XNpXnBv4(Yxf0`G>-$%V!^r6bm}Z`u9RYS;nAF$ zKHxlQ4*bWy<-rcLXNHq%X$zac(gka*U~QsxkpSb5!md3du^1uI`6p9PKDm>ri@}qr zmzO6~YsHoIwsxT=`%ic>HIx4iw@ScbcOpkh=LcEhb}61^ADxx+gKU-av&CoK=r5eZ z$&DSpc?CnOb+}NBcYjQJOWQCmmWP|*A2$rPE|D-OU1{ z`4Lx449tawdk0Gi=>kB)eaKI($2w}8fhjm+TZGe|W`a((AF3FBvXsPswT>JbLw%w^ zsHoZO87glxsxH~i3YG+>j6?IN)q&~nS5DaOX# zVkgXgwbV9Zy7}iHfdnlf0BOdP-ki0r(G|$i(jfk1sm;d2Qm{mwyk~<`t zhwu3>$eoYGwb@@(zNds@+dXj2UFgq06wD+*ISN$C`_V>P9i{~?Ws+lCd|m@C8~~W9 zIr{)h`mAVq_>Q|QWf_Tn`LafhCpKq$*{OYc?p`f1a!+rp17;xtemg#kmIVlgDxP)8 z;zMH#Jo5(y44nl)k7ix8LG^E<{4c^gXjm59x2u$}Q%K8j!qxx?r}SJp<02=<*2m8} zXVyrAGBS@#lmcwEL>WO#<`>ict+m&PFyE2ziJxj|Qp4W|8ZA%7h5DM6@jhO;1w-g! z-LuD9EB{8wvXZ$I`6LVjnzldWKVV!AgyKuFGwmdzL{%|(eZnkkcPp}7 zc{+W@hZ7WAAcp@}*2eI3OweXJ(lIOq;l)@qbw=MVXVK?YRRJF-!0oeb6@e|acf@bA zP$6tw|D*>Z5#>X}4GqwqO{{mi5oh{_WT|DraE8BROfnroUFh2TZ{z9%rFRsc=E zE`P7+m(Q-pzYYqr+s27^#w-zoJ`6DsmQf?fC-c4XXy~WLBL9+iU^NhdTmDB_YDD$+ z39usFM?2G3=6f2Az{dpLeqN6S$1(!7T)C`=2F8mq2y{5N?SEBm znsen%*#pY;@iV9edv>HjhEr4($gW$A`&;Ru+iel!T>^%2`P_AgH=<;fz)2+oraa`V zfuK%zrFT2g&uT;4{Me_J^6I0&R?Q6KS= zb%G^d>d>%t$ah8-zTq+dYhPG%nm*w>mHh7sDw+#M39fADALMqTd@Z!jg4TSTa1Ac<5Cz1 zvT8Dr*tPSawpQf};hu)c3>HJS<$mY`=ot?b`k-Q*(5h+}Zf>j@+ zqbeJ#^Z(X52Sr`!9J9vcJR3n|a>%H|@0>(fszY8`aLbN0rL4^VMwxq-i(o<+D&9bd z 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 diff --git a/res/sweat_abi.json b/res/sweat_abi.json new file mode 100644 index 0000000..57c1e55 --- /dev/null +++ b/res/sweat_abi.json @@ -0,0 +1,740 @@ +{ + "schema_version": "0.4.0", + "metadata": { + "name": "sweat", + "version": "1.2.1", + "build": { + "compiler": "rustc 1.86.0", + "builder": "cargo-near cargo-near-build 0.11.0" + }, + "wasm_hash": "4TJg8M6zTwoqteyiFNJ3WJZCxkmuhMSeZkKKqsv5Rhys" + }, + "body": { + "functions": [ + { + "name": "add_oracle", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } + }, + { + "name": "burn", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "contract_source_metadata", + "kind": "view" + }, + { + "name": "defer_batch", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "name": "holding_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PromiseOrValueNull" + } + } + }, + { + "name": "formula", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_since_tge", + "type_schema": { + "type": "string" + } + }, + { + "name": "steps", + "type_schema": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_balance_of", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_metadata", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/FungibleTokenMetadata" + } + } + }, + { + "name": "ft_resolve_transfer", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "sender_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_total_supply", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_transfer", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "memo", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + } + }, + { + "name": "ft_transfer_call", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "memo", + "type_schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "msg", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PromiseOrValueString" + } + } + }, + { + "name": "get_oracles", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "get_steps_since_tge", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "is_restricted", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "new", + "kind": "call", + "modifiers": [ + "init" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "postfix", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + } + }, + { + "name": "on_record", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "fee_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "fee", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "record_batch", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + ], + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + { + "name": "remove_oracle", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } + }, + { + "name": "set_restricted", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "is_restricted", + "type_schema": { + "type": "boolean" + } + } + ] + } + }, + { + "name": "storage_balance_bounds", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalanceBounds" + } + } + }, + { + "name": "storage_balance_of", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "anyOf": [ + { + "$ref": "#/definitions/StorageBalance" + }, + { + "type": "null" + } + ] + } + } + }, + { + "name": "storage_deposit", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": [ + "string", + "null" + ] + } + }, + { + "name": "registration_only", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalance" + } + } + }, + { + "name": "storage_unregister", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "force", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "storage_withdraw", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "amount", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalance" + } + } + }, + { + "name": "tge_mint", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "tge_mint_batch", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + } + ], + "root_schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "String", + "type": "string", + "definitions": { + "Base64VecU8": { + "description": "Helper class to serialize/deserialize `Vec` to base64 string.\n\n# Example ```rust use near_sdk::{json_types::Base64VecU8, near};\n\n#[near(serializers=[json])] struct NewStruct { field: Base64VecU8, } ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "FungibleTokenMetadata": { + "type": "object", + "required": [ + "decimals", + "name", + "spec", + "symbol" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "icon": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "reference": { + "type": [ + "string", + "null" + ] + }, + "reference_hash": { + "anyOf": [ + { + "$ref": "#/definitions/Base64VecU8" + }, + { + "type": "null" + } + ] + }, + "spec": { + "type": "string" + }, + "symbol": { + "type": "string" + } + } + }, + "PromiseOrValueNull": { + "type": "null" + }, + "PromiseOrValueString": { + "type": "string" + }, + "StorageBalance": { + "type": "object", + "required": [ + "available", + "total" + ], + "properties": { + "available": { + "type": "string" + }, + "total": { + "type": "string" + } + } + }, + "StorageBalanceBounds": { + "type": "object", + "required": [ + "min" + ], + "properties": { + "max": { + "type": [ + "string", + "null" + ] + }, + "min": { + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/res/sweat_abi.zst b/res/sweat_abi.zst new file mode 100644 index 0000000000000000000000000000000000000000..6959ad40dc361a63fbe51e97f442a97f7ae59c73 GIT binary patch literal 1492 zcmV;_1uOa}wJ-euh+QrK);p~(U~f7w48w4^1Z-*~M5dD7Qch@+ke#Gl+V*;(0%+d% zA6HaRZM`pkMzRG#TnV25q5zx#$`(@kbo&z3njL0&4AsLx{7yfDoLP2)aGXq;b0;Hm zM2@JJEB?4of;F&qbS_HwxIjOt2t(ywcS~C@2w&unW@!tZww&Hm zjnq6!eivs2dNLFe5QsAD!df?8B&XFGAVdPpz0dB2d|A>x$deL?1|osi{rFlM+lbWk z_35wGEG-iiM42YFDA{{GlUmzx-bMnSWzV#(r}XKa_DAWg*pu3DBKNaO#a>2|5(>j$ zSVE;j>E6kiK|zv~m!za|PyoKyT`QDJ`x9qWp{%!FQR9dj2U}oFTE|e?FHDf6iLFo8 z(b3@xFH1un*kn?t~2Sdq2dc?Umjm3(E3gkvM(}a6aAEw zGAlA`SuuC=F}R+Emwj!wi=p{w`T31(JI|tI9P8_m)^7D$y6q6I-sSb#7#DO__T={X{`k*1t|z#*YpYM%lB~ai@Rz2>fyfHlU8r#QTwO$KsgcjLuM?bm=h;N zB^4?)y=6H+t&8k%HV7xhPN*AQvCfuk3ygE*Y9D4&Z3jG@zTGU-gR&DEkON2S(r?M%H@ly3QZFWFF1 z7Rc@8mgZ0`cKhBoPmp)(LCI!82r=ow<%*49e3pW}o14l;v*1n9B!n!I(~MzV zd6jlxVrdi3jkfq9GEQ3%4FB^9iVocdY*s+Z1;lLBfu8PnMF9Ng%o+Z#B6{ZPmBTbQZ=I zx@=whqG0azF1X<4C0VY$PFZLS)vWU zxIqdZUhmj>w(<{FgGRv{LfL3f3d!Li83N>?9M0v=@wj)PS?u{z&PFEoAttPg?XR`p z6^HRQ$QjGqmqtIKhDUXlJ7of9#x%!@a^NYcMF2Azb~XK8Vao&dEP-0xe+>6s z7;~zjT}KY(i)BS&wuKvQMPM&XMj|&PGgWGgh$#!)HA{{3{5Sir>=day+@1_4%*C`AI?@DS<=fn@`Dd!7UO zau@(5Al4!daTFwJb%$ajYYS|WdBA@DVhIh4W)L$7x2otN9_&(=TyTNacMdG)xXGAm z-7&L}DT&lab9t%)h!{rM)4KlGSw&;{hS5NKD?#967s-H>Bq2sgV|(;~kQZdCK+4mGsieWXez~q=>B?o0P+s27 uMBJH;fbw1|AuKnG?@+sSFeO8hGRT~LhBp{~n5^d|Yh(!^BrxbRFA7!NamddA literal 0 HcmV?d00001 diff --git a/scripts/build.sh b/scripts/build.sh index 937a1f5..8208c77 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,7 +3,6 @@ set -eox pipefail echo ">> Building contract" -rustup target add wasm32-unknown-unknown -cargo build -p sweat --target wasm32-unknown-unknown --profile=contract - -cp ./target/wasm32-unknown-unknown/contract/sweat.wasm res/sweat.wasm +cargo near build non-reproducible-wasm \ + --manifest-path contract/Cargo.toml \ + --out-dir res From 1ed858b6717f855c370b66b405850f1e82dbdfb2 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 14 May 2026 17:23:13 +0100 Subject: [PATCH 05/46] test: resurect tests --- Makefile | 4 +- contract/src/integration.rs | 12 +- integration-tests/src/callback_attack.rs | 108 ++++++++++------- integration-tests/src/defer.rs | 112 ++++++++++++------ integration-tests/src/formula.rs | 57 ++++----- integration-tests/src/helpers.rs | 9 ++ integration-tests/src/interface/common.rs | 12 -- integration-tests/src/interface/mod.rs | 1 - integration-tests/src/lib.rs | 7 ++ integration-tests/src/measure/mod.rs | 1 - integration-tests/src/measure/record_batch.rs | 38 ------ integration-tests/src/mint.rs | 79 ++++++++---- integration-tests/src/panic.rs | 26 ++++ integration-tests/src/prepare.rs | 52 ++++---- integration-tests/src/storage.rs | 27 +++++ integration-tests/src/transfer.rs | 102 +++++++++++----- scripts/build-integration.sh | 12 +- 17 files changed, 409 insertions(+), 250 deletions(-) delete mode 100644 integration-tests/src/interface/common.rs delete mode 100644 integration-tests/src/interface/mod.rs delete mode 100644 integration-tests/src/measure/mod.rs delete mode 100644 integration-tests/src/measure/record_batch.rs create mode 100644 integration-tests/src/panic.rs create mode 100644 integration-tests/src/storage.rs diff --git a/Makefile b/Makefile index 89ad249..9fe5591 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,8 @@ cov: ##@Testing Run unit tests with coverage. test: ##@Testing Run unit tests. cargo test --package sweat -integration: ##@Testing Run integration tests. - cargo test --package integration-tests +integration: build-integration ##@Testing Run integration tests. + cd integration-tests && cargo test int: integration ##@Testing Shorthand for `integration` diff --git a/contract/src/integration.rs b/contract/src/integration.rs index d3d4f18..e87e6b5 100644 --- a/contract/src/integration.rs +++ b/contract/src/integration.rs @@ -2,11 +2,17 @@ use near_sdk::{ json_types::{U128, U64}, - near_bindgen, + near, }; -use sweat_model::{IntegrationTestMethods, Payout, SweatApi}; -use crate::{Contract, ContractExt}; +use crate::{ + api::{Payout, SweatApi}, + Contract, ContractExt, +}; + +pub trait IntegrationTestMethods { + fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128); +} #[near] impl IntegrationTestMethods for Contract { diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs index 71ee0d8..ce5270c 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/src/callback_attack.rs @@ -1,60 +1,70 @@ -#![cfg(test)] +use serde_json::json; -use integration_utils::misc::ToNear; -use near_sdk::{json_types::U128, serde_json::json}; -use sweat_model::FungibleTokenCoreIntegration; - -use crate::{ - common::PanicFinder, - interface::common::ContractAccount, - prepare::{prepare_contract, IntegrationContext}, -}; +use crate::helpers::step; +use crate::panic::PanicFinder; +use crate::prepare::prepare_contract; #[tokio::test] async fn test_call_on_record_in_callback() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - - let alice = context.alice().await?; - - let alice_balance_before_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; - let ft_contract_id = context.ft_contract().account(); + const TAG: &str = "test_call_on_record_in_callback"; + let context = prepare_contract(TAG).await?; + + step!(TAG, "view ft_balance_of(alice) [before attack]"); + let balance_before: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", balance_before); - let target_amount = U128(1_000_000); - let result = alice - .call(context.stub_contract().id(), "exploit_on_record") + step!(TAG, "alice → stub.exploit_on_record(ft, 1_000_000)"); + let result = context + .alice + .call(context.stub.id(), "exploit_on_record") .args_json(json!({ - "ft_account_id": ft_contract_id, - "amount": target_amount, + "ft_account_id": context.sweat.id(), + "amount": "1000000", })) .max_gas() .transact() .await? .into_result()?; - assert!(result.has_panic("Method on_record is private")); - - let alice_balance_after_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_eq!(alice_balance_before_attack, alice_balance_after_attack); + assert!( + result.has_panic("Method on_record is private"), + "expected nested panic \"Method on_record is private\" in receipts" + ); + step!(TAG, " ✓ nested panic caught"); + + step!(TAG, "view ft_balance_of(alice) [after attack]"); + let balance_after: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", balance_after); + assert_eq!(balance_before, balance_after); + step!(TAG, "done"); Ok(()) } #[tokio::test] async fn test_call_on_record_directly() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - - let alice = context.alice().await?; + const TAG: &str = "test_call_on_record_directly"; + let context = prepare_contract(TAG).await?; - let intruder_id = alice.to_near(); + step!(TAG, "sweat → sweat.on_record(...) [direct call, no preceding promise]"); let result = context - .ft_contract() - .contract + .sweat .as_account() - .call(context.ft_contract().contract.id(), "on_record") + .call(context.sweat.id(), "on_record") .args_json(json!({ - "receiver_id": intruder_id, + "receiver_id": context.alice.id(), "amount": "1000000", - "fee_account_id": intruder_id, + "fee_account_id": context.alice.id(), "fee": "2000000", })) .max_gas() @@ -62,23 +72,28 @@ async fn test_call_on_record_directly() -> anyhow::Result<()> { .await? .into_result(); - assert!(result.has_panic("Contract expected a result on the callback")); + assert!( + result.has_panic("Contract expected a single result on the callback"), + "expected panic \"Contract expected a single result on the callback\"" + ); + step!(TAG, " ✓ panic caught"); + step!(TAG, "done"); Ok(()) } #[tokio::test] async fn test_call_ft_resolve_transfer() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; + const TAG: &str = "test_call_ft_resolve_transfer"; + let context = prepare_contract(TAG).await?; - let alice = context.alice().await?; - let bob = context.bob().await?; - - let result = alice - .call(context.ft_contract().contract.id(), "ft_resolve_transfer") + step!(TAG, "alice → sweat.ft_resolve_transfer(...) [private callback]"); + let result = context + .alice + .call(context.sweat.id(), "ft_resolve_transfer") .args_json(json!({ - "sender_id": alice.to_near(), - "receiver_id": bob.to_near(), + "sender_id": context.alice.id(), + "receiver_id": context.bob.id(), "amount": "1000000", })) .max_gas() @@ -86,7 +101,12 @@ async fn test_call_ft_resolve_transfer() -> anyhow::Result<()> { .await? .into_result(); - assert!(result.has_panic("Method ft_resolve_transfer is private")); + assert!( + result.has_panic("Method ft_resolve_transfer is private"), + "expected panic \"Method ft_resolve_transfer is private\"" + ); + step!(TAG, " ✓ panic caught"); + step!(TAG, "done"); Ok(()) } diff --git a/integration-tests/src/defer.rs b/integration-tests/src/defer.rs index 5a8df3f..09b218f 100644 --- a/integration-tests/src/defer.rs +++ b/integration-tests/src/defer.rs @@ -1,53 +1,91 @@ -#![cfg(test)] +use serde_json::json; -use integration_utils::misc::ToNear; -use sweat_model::{FungibleTokenCoreIntegration, IntegrationTestMethodsIntegration, SweatDeferIntegration}; +use crate::helpers::step; +use crate::prepare::prepare_contract; -use crate::prepare::{prepare_contract, IntegrationContext}; +const TAG: &str = "test_defer"; +const BATCH_SIZE: u32 = 135; +const CLAIM_AMOUNT: u32 = 10_000; #[tokio::test] async fn test_defer() -> anyhow::Result<()> { - const BATCH_SIZE: u32 = 135; - const CLAIM_AMOUNT: u32 = 10_000; + let context = prepare_contract(TAG).await?; - let mut context = prepare_contract().await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; + step!(TAG, "view ft_balance_of(claim)"); + let claim_balance_before: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.claim.id() })) + .await? + .json()?; + step!(TAG, " = {}", claim_balance_before); + assert_eq!(0_u128, claim_balance_before.parse::()?); - let claim_contract_account = context.claim_contract().as_account().to_near(); + step!( + TAG, + "view calculate_payout_with_fee_for_batch(batch_size={BATCH_SIZE}, claim_amount={CLAIM_AMOUNT})" + ); + let (total_fee, total_for_user): (String, String) = context + .sweat + .view("calculate_payout_with_fee_for_batch") + .args_json(json!({ + "batch_size": BATCH_SIZE, + "claim_amount": CLAIM_AMOUNT, + })) + .await? + .json()?; + step!(TAG, " total_fee={total_fee}, total_for_user={total_for_user}"); - let holder_balance = context - .ft_contract() - .ft_balance_of(claim_contract_account.clone()) - .await?; - - assert_eq!(holder_balance.0, 0); - - let (total_fee, total_for_user) = context - .ft_contract() - .calculate_payout_with_fee_for_batch(BATCH_SIZE, CLAIM_AMOUNT) - .await?; - - let batch: Vec<_> = (0..BATCH_SIZE).map(|_| (alice.to_near(), CLAIM_AMOUNT)).collect(); + let batch: Vec<_> = (0..BATCH_SIZE) + .map(|_| (context.alice.id(), CLAIM_AMOUNT)) + .collect(); + step!( + TAG, + "call defer_batch([(alice, {CLAIM_AMOUNT})] × {BATCH_SIZE}, holding=claim) [signer=oracle]" + ); context - .ft_contract() - .defer_batch(batch, claim_contract_account.clone()) - .with_user(&oracle) - .await?; - - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_eq!(0, alice_balance.0); + .oracle + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": batch, + "holding_account_id": context.claim.id(), + })) + .max_gas() + .transact() + .await? + .into_result()?; - let claim_contract_balance = context - .ft_contract() - .ft_balance_of(claim_contract_account.clone()) - .await?; + step!(TAG, "view ft_balance_of(alice)"); + let alice_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", alice_balance); + assert_eq!(0_u128, alice_balance.parse::()?); - let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).await?; + step!(TAG, "view ft_balance_of(claim)"); + let claim_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.claim.id() })) + .await? + .json()?; + step!(TAG, " = {}", claim_balance); + assert_eq!(total_for_user, claim_balance); - assert_eq!(oracle_balance, total_fee); - assert_eq!(claim_contract_balance, total_for_user); + step!(TAG, "view ft_balance_of(oracle)"); + let oracle_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.oracle.id() })) + .await? + .json()?; + step!(TAG, " = {}", oracle_balance); + assert_eq!(total_fee, oracle_balance); + step!(TAG, "done"); Ok(()) } diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs index f2abed6..6a3b3da 100644 --- a/integration-tests/src/formula.rs +++ b/integration-tests/src/formula.rs @@ -1,23 +1,22 @@ -use anyhow::Result; -use near_sdk::json_types::U64; -use sweat_model::SweatApiIntegration; +use serde_json::json; -use crate::prepare::{prepare_contract, IntegrationContext}; +use crate::helpers::step; +use crate::prepare::prepare_contract; +const TAG: &str = "test_formula"; const EPS: f64 = 0.00001; #[tokio::test] -async fn test_formula() -> Result<()> { - let mut context = prepare_contract().await?; +async fn test_formula() -> anyhow::Result<()> { + let context = prepare_contract(TAG).await?; - let oracle = context.oracle().await?; + step!(TAG, "view get_steps_since_tge"); + let steps_since_tge: String = context.sweat.view("get_steps_since_tge").await?.json()?; + step!(TAG, " = {}", steps_since_tge); + assert_eq!(0_u64, steps_since_tge.parse::()?); - let steps = context.ft_contract().get_steps_since_tge().await?; - - assert_eq!(0, steps.0); - - let steps_to_convert = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; - let steps_from_tge = [ + let steps_to_convert: [u32; 9] = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; + let steps_from_tge: [u64; 16] = [ 1, 10, 100, @@ -33,33 +32,37 @@ async fn test_formula() -> Result<()> { 1000000000000, 10000000000000, 100000000000000, - 1000000000000000u64, + 1000000000000000, ]; + let total = steps_from_tge.len() * steps_to_convert.len(); + step!(TAG, "iterating {} formula cases", total); + let mut test_number = 0; for tge in steps_from_tge { for steps in steps_to_convert { - let formula_res = context - .ft_contract() - .formula(U64(tge), steps) - .with_user(&oracle) + let raw: String = context + .sweat + .view("formula") + .args_json(json!({ "steps_since_tge": tge.to_string(), "steps": steps })) .await? - .0; - - let formula_res = formula_res as f64 / 1e+18; - - println!("{}. formula ({} {}) = {}", test_number, tge, steps, formula_res); - - let diff = formula_res - TEST_RESULTS[test_number]; - assert!(diff.abs() < EPS); + .json()?; + let value = raw.parse::()? as f64 / 1e18; + let expected = TEST_RESULTS[test_number]; + let diff = value - expected; + assert!( + diff.abs() < EPS, + "case #{test_number} (tge={tge}, steps={steps}): expected {expected}, got {value} (diff {diff})" + ); test_number += 1; } } + step!(TAG, "all {} cases passed", test_number); Ok(()) } -pub const TEST_RESULTS: [f64; 144] = [ +const TEST_RESULTS: [f64; 144] = [ 0.000_999_999_999_999_307, 0.009_999_999_999_972_283, 0.099_999_999_997_644_02, diff --git a/integration-tests/src/helpers.rs b/integration-tests/src/helpers.rs index b919f0c..5f16cda 100644 --- a/integration-tests/src/helpers.rs +++ b/integration-tests/src/helpers.rs @@ -5,3 +5,12 @@ macro_rules! step { } pub(crate) use step; + +/// Splits a minted amount into `(amount_for_user, fee)` using the contract's +/// 5%-oracle-fee policy (rounded up). Mirrors `Contract::calculate_tokens_amount` +/// in the sweat contract; kept in sync so tests can predict expected balances +/// without calling into the contract. +pub fn payout(value: u128) -> (u128, u128) { + let fee = (value * 5).div_ceil(100); + (value - fee, fee) +} diff --git a/integration-tests/src/interface/common.rs b/integration-tests/src/interface/common.rs deleted file mode 100644 index 6d5afdb..0000000 --- a/integration-tests/src/interface/common.rs +++ /dev/null @@ -1,12 +0,0 @@ -use near_sdk::AccountId; -use sweat_model::SweatContract; - -pub(crate) trait ContractAccount { - fn account(&self) -> AccountId; -} - -impl ContractAccount for SweatContract<'_> { - fn account(&self) -> AccountId { - AccountId::new_unchecked(self.contract.as_account().id().to_string()) - } -} diff --git a/integration-tests/src/interface/mod.rs b/integration-tests/src/interface/mod.rs deleted file mode 100644 index 34994bf..0000000 --- a/integration-tests/src/interface/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod common; diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index 1a28491..668ea6d 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -1,7 +1,14 @@ #![cfg(test)] +mod callback_attack; +mod defer; +mod formula; mod helpers; +mod mint; +mod panic; mod prepare; +mod storage; +mod transfer; use serde_json::json; diff --git a/integration-tests/src/measure/mod.rs b/integration-tests/src/measure/mod.rs deleted file mode 100644 index d5a8194..0000000 --- a/integration-tests/src/measure/mod.rs +++ /dev/null @@ -1 +0,0 @@ -mod record_batch; diff --git a/integration-tests/src/measure/record_batch.rs b/integration-tests/src/measure/record_batch.rs deleted file mode 100644 index 0f081f7..0000000 --- a/integration-tests/src/measure/record_batch.rs +++ /dev/null @@ -1,38 +0,0 @@ -#![cfg(test)] - -use std::future::IntoFuture; - -use anyhow::Result; -use integration_utils::measure::outcome_storage::OutcomeStorage; -use near_workspaces::types::Gas; -use sweat_model::SweatApiIntegration; - -use crate::{prepare::IntegrationContext, prepare_contract}; - -#[ignore] -#[tokio::test] -async fn single_record_batch() -> anyhow::Result<()> { - let gas = measure_record_batch().await?; - - dbg!(&gas); - - Ok(()) -} - -async fn measure_record_batch() -> Result { - let mut context = prepare_contract().await?; - - let oracle = context.oracle().await?; - - let (gas, _) = OutcomeStorage::measure_total( - &oracle, - context - .ft_contract() - .record_batch(Default::default()) - .with_user(&oracle) - .into_future(), - ) - .await?; - - Ok(gas) -} diff --git a/integration-tests/src/mint.rs b/integration-tests/src/mint.rs index 512a6d2..13e147e 100644 --- a/integration-tests/src/mint.rs +++ b/integration-tests/src/mint.rs @@ -1,40 +1,73 @@ -use integration_utils::misc::ToNear; -use near_sdk::json_types::{U128, U64}; -use sweat_model::{FungibleTokenCoreIntegration, Payout, SweatApiIntegration}; +use serde_json::json; -use crate::prepare::{prepare_contract, IntegrationContext}; +use crate::helpers::{payout, step}; +use crate::prepare::prepare_contract; -const TARGET_BALANCE: u128 = 9999999976902174720; +const TARGET_BALANCE: u128 = 9_999_999_976_902_174_720; const TARGET_STEPS_SINCE_TGE: u32 = 10_000; +const TAG: &str = "test_mint"; #[tokio::test] async fn test_mint() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - let user = context.alice().await?; - let oracle = context.oracle().await?; + let context = prepare_contract(TAG).await?; - let result = context.ft_contract().get_steps_since_tge().await?; - assert_eq!(result, U64(0)); + step!(TAG, "view get_steps_since_tge"); + let steps: String = context.sweat.view("get_steps_since_tge").await?.json()?; + step!(TAG, " = {}", steps); + assert_eq!(0_u64, steps.parse::()?); - let result = context.ft_contract().formula(U64(0), TARGET_STEPS_SINCE_TGE).await?; - assert_eq!(result, U128(TARGET_BALANCE)); + step!(TAG, "view formula(0, {})", TARGET_STEPS_SINCE_TGE); + let formula: String = context + .sweat + .view("formula") + .args_json(json!({ "steps_since_tge": "0", "steps": TARGET_STEPS_SINCE_TGE })) + .await? + .json()?; + step!(TAG, " = {}", formula); + assert_eq!(TARGET_BALANCE, formula.parse::()?); + step!(TAG, "call record_batch([(alice, 10_000)]) [signer=oracle]"); context - .ft_contract() - .record_batch(vec![(user.to_near(), 10_000u32)]) - .with_user(&oracle) - .await?; + .oracle + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; - let target_payout = Payout::from(TARGET_BALANCE); + let (expected_amount_for_user, expected_fee) = payout(TARGET_BALANCE); + step!( + TAG, + " expected payout: fee={}, amount_for_user={}", + expected_fee, + expected_amount_for_user + ); - let result = context.ft_contract().ft_balance_of(oracle.to_near()).await?; - assert_eq!(result, U128(target_payout.fee)); + step!(TAG, "view ft_balance_of(oracle)"); + let oracle_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.oracle.id() })) + .await? + .json()?; + step!(TAG, " = {}", oracle_balance); + assert_eq!(expected_fee, oracle_balance.parse::()?); - let result = context.ft_contract().ft_balance_of(user.to_near()).await?; - assert_eq!(result, U128(target_payout.amount_for_user)); + step!(TAG, "view ft_balance_of(alice)"); + let alice_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", alice_balance); + assert_eq!(expected_amount_for_user, alice_balance.parse::()?); - let result = context.ft_contract().get_steps_since_tge().await?; - assert_eq!(result, U64(TARGET_STEPS_SINCE_TGE as u64)); + step!(TAG, "view get_steps_since_tge"); + let steps_after: String = context.sweat.view("get_steps_since_tge").await?.json()?; + step!(TAG, " = {}", steps_after); + assert_eq!(u64::from(TARGET_STEPS_SINCE_TGE), steps_after.parse::()?); + step!(TAG, "done"); Ok(()) } diff --git a/integration-tests/src/panic.rs b/integration-tests/src/panic.rs new file mode 100644 index 0000000..5d752be --- /dev/null +++ b/integration-tests/src/panic.rs @@ -0,0 +1,26 @@ +use near_workspaces::result::{ExecutionFailure, ExecutionResult, ExecutionSuccess}; + +pub trait PanicFinder { + fn has_panic(&self, message: &str) -> bool; +} + +impl PanicFinder for Result { + fn has_panic(&self, message: &str) -> bool { + match self { + Ok(ok) => ok.has_panic(message), + Err(err) => err.has_panic(message), + } + } +} + +impl PanicFinder for ExecutionResult { + fn has_panic(&self, message: &str) -> bool { + self.outcomes().into_iter().any(|outcome| { + outcome + .clone() + .into_result() + .err() + .is_some_and(|err| format!("{err:?}").contains(message)) + }) + } +} diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs index eaa29e0..2449368 100644 --- a/integration-tests/src/prepare.rs +++ b/integration-tests/src/prepare.rs @@ -2,9 +2,10 @@ use std::path::PathBuf; use anyhow::{anyhow, Result}; use near_workspaces::{network::Sandbox, types::NearToken, Account, AccountId, Contract, Worker}; -use serde_json::{json, Value}; +use serde_json::json; use crate::helpers::step; +use crate::storage::{storage_balance_min, storage_deposit}; const FT_POSTFIX: &str = ".u.sweat.testnet"; const LONG_ACCOUNT_NAME: &str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; @@ -33,11 +34,11 @@ pub async fn prepare_contract(caller: &str) -> Result { let root = worker.root_account()?; step!(&tag, "deploying contracts"); - let sweat = deploy(&worker, SWEAT_WASM).await?; + let sweat = deploy(&worker, integration_wasm_path(), "sweat").await?; step!(&tag, " sweat → {}", sweat.id()); - let claim = deploy(&worker, CLAIM_WASM).await?; + let claim = deploy(&worker, res_wasm_path(CLAIM_WASM), "claim").await?; step!(&tag, " claim → {}", claim.id()); - let stub = deploy(&worker, STUB_WASM).await?; + let stub = deploy(&worker, res_wasm_path(STUB_WASM), "stub").await?; step!(&tag, " stub → {}", stub.id()); step!(&tag, "creating user accounts"); @@ -73,13 +74,27 @@ pub async fn prepare_contract(caller: &str) -> Result { }) } -async fn deploy(worker: &Worker, wasm_name: &str) -> Result { - let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) +fn integration_wasm_path() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("target") + .join("integration-wasm") + .join(SWEAT_WASM) +} + +fn res_wasm_path(name: &str) -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("..") .join("res") - .join(wasm_name); - let bytes = std::fs::read(&path) - .map_err(|e| anyhow!("failed to read {}: {e}", path.display()))?; + .join(name) +} + +async fn deploy(worker: &Worker, path: PathBuf, label: &str) -> Result { + let bytes = std::fs::read(&path).map_err(|e| { + anyhow!( + "failed to read {label} WASM at {} — did you run `make build-integration`? ({e})", + path.display() + ) + })?; Ok(worker.dev_deploy(&bytes).await?) } @@ -134,22 +149,3 @@ async fn init_claim(claim: &Contract, token_account_id: &AccountId) -> Result<() Ok(()) } - -async fn storage_balance_min(ft: &Contract) -> Result { - let bounds: Value = ft.view("storage_balance_bounds").await?.json()?; - let min_str = bounds - .get("min") - .and_then(Value::as_str) - .ok_or_else(|| anyhow!("storage_balance_bounds.min missing"))?; - Ok(NearToken::from_yoctonear(min_str.parse()?)) -} - -async fn storage_deposit(ft: &Contract, account_id: &AccountId, deposit: NearToken) -> Result<()> { - ft.call("storage_deposit") - .args_json(json!({ "account_id": account_id })) - .deposit(deposit) - .transact() - .await? - .into_result()?; - Ok(()) -} diff --git a/integration-tests/src/storage.rs b/integration-tests/src/storage.rs new file mode 100644 index 0000000..8e1514f --- /dev/null +++ b/integration-tests/src/storage.rs @@ -0,0 +1,27 @@ +use anyhow::{anyhow, Result}; +use near_workspaces::{types::NearToken, AccountId, Contract}; +use serde_json::{json, Value}; + +pub async fn storage_balance_min(ft: &Contract) -> Result { + let bounds: Value = ft.view("storage_balance_bounds").await?.json()?; + let min_str = bounds + .get("min") + .and_then(Value::as_str) + .ok_or_else(|| anyhow!("storage_balance_bounds.min missing"))?; + Ok(NearToken::from_yoctonear(min_str.parse()?)) +} + +pub async fn storage_deposit(ft: &Contract, account_id: &AccountId, deposit: NearToken) -> Result<()> { + ft.call("storage_deposit") + .args_json(json!({ "account_id": account_id })) + .deposit(deposit) + .transact() + .await? + .into_result()?; + Ok(()) +} + +pub async fn register_for_storage(ft: &Contract, account_id: &AccountId) -> Result<()> { + let min = storage_balance_min(ft).await?; + storage_deposit(ft, account_id, min).await +} diff --git a/integration-tests/src/transfer.rs b/integration-tests/src/transfer.rs index 87e9e78..d01dca4 100644 --- a/integration-tests/src/transfer.rs +++ b/integration-tests/src/transfer.rs @@ -1,48 +1,90 @@ -use integration_utils::misc::ToNear; -use near_sdk::json_types::U128; -use sweat_model::{FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration}; +use near_workspaces::types::NearToken; +use serde_json::json; -use crate::prepare::{prepare_contract, IntegrationContext}; +use crate::helpers::step; +use crate::prepare::prepare_contract; +use crate::storage::register_for_storage; + +const TAG: &str = "test_transfer"; +const ONE_YOCTO: NearToken = NearToken::from_yoctonear(1); #[tokio::test] async fn test_transfer() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; - let bob = context.bob().await?; + let context = prepare_contract(TAG).await?; + step!(TAG, "call record_batch([(alice, 10_000)]) [signer=oracle]"); context - .ft_contract() - .record_batch(vec![(alice.to_near(), 10_000)]) - .with_user(&oracle) - .await?; + .oracle + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; - // This will fail because storage is not registered for this new account + step!( + TAG, + "call ft_transfer(alice → bob, 9499999991723028480) [bob not registered, expect failure]" + ); let res = context - .ft_contract() - .ft_transfer(bob.to_near(), U128(9499999991723028480), None) - .with_user(&alice) - .await; - assert!(res.is_err()); + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob.id(), + "amount": "9499999991723028480", + })) + .deposit(ONE_YOCTO) + .transact() + .await? + .into_result(); + assert!(res.is_err(), "ft_transfer to unregistered bob should fail"); + step!(TAG, " ✓ rejected"); - let res = context.ft_contract().storage_deposit(Some(bob.to_near()), None).await; - assert!(res.is_ok()); + step!(TAG, "register bob for FT storage"); + register_for_storage(&context.sweat, context.bob.id()).await?; - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_ne!(U128(0), alice_balance); + step!(TAG, "view ft_balance_of(alice)"); + let alice_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", alice_balance); + assert_ne!(0_u128, alice_balance.parse::()?); - // Transfer all tokens from alice to new account + step!(TAG, "call ft_transfer(alice → bob, {}) [transfer all]", alice_balance); context - .ft_contract() - .ft_transfer(bob.to_near(), alice_balance, None) - .with_user(&alice) - .await?; + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob.id(), + "amount": alice_balance, + })) + .deposit(ONE_YOCTO) + .transact() + .await? + .into_result()?; - let alice_balance_updated = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_eq!(U128(0), alice_balance_updated); + step!(TAG, "view ft_balance_of(alice)"); + let alice_after: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + step!(TAG, " = {}", alice_after); + assert_eq!(0_u128, alice_after.parse::()?); - let bob_balance = context.ft_contract().ft_balance_of(bob.to_near()).await?; + step!(TAG, "view ft_balance_of(bob)"); + let bob_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.bob.id() })) + .await? + .json()?; + step!(TAG, " = {}", bob_balance); assert_eq!(alice_balance, bob_balance); + step!(TAG, "done"); Ok(()) } diff --git a/scripts/build-integration.sh b/scripts/build-integration.sh index 685de31..df0ef24 100755 --- a/scripts/build-integration.sh +++ b/scripts/build-integration.sh @@ -1,9 +1,13 @@ #!/bin/bash set -eox pipefail -echo ">> Building contract" +echo ">> Building contract (integration-test feature)" -rustup target add wasm32-unknown-unknown -cargo build -p sweat --target wasm32-unknown-unknown --profile=contract --features integration-test +OUT_DIR="integration-tests/target/integration-wasm" +mkdir -p "$OUT_DIR" -cp ./target/wasm32-unknown-unknown/contract/sweat.wasm res/sweat.wasm +cargo near build non-reproducible-wasm \ + --manifest-path contract/Cargo.toml \ + --features integration-test \ + --no-abi \ + --out-dir "$OUT_DIR" From 8a6110660c230a2e0cc78c8b65bb4beab1bc9f4b Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 14 May 2026 18:53:31 +0100 Subject: [PATCH 06/46] test: rearrange tests to cannonical stucture --- Makefile | 5 + integration-tests/Cargo.lock | 108 +++++++- integration-tests/Cargo.toml | 7 +- integration-tests/data/formula_cases.json | 146 ++++++++++ integration-tests/src/common.rs | 29 -- integration-tests/src/formula.rs | 210 --------------- integration-tests/src/helpers.rs | 16 -- integration-tests/src/prepare.rs | 151 ----------- .../{src => tests}/callback_attack.rs | 49 ++-- integration-tests/tests/common/helpers.rs | 31 +++ integration-tests/tests/common/mod.rs | 11 + .../{src => tests/common}/panic.rs | 0 integration-tests/tests/common/prepare.rs | 252 ++++++++++++++++++ .../{src => tests/common}/storage.rs | 0 integration-tests/{src => tests}/defer.rs | 53 ++-- integration-tests/tests/formula.rs | 53 ++++ .../{src/lib.rs => tests/happy_flow.rs} | 52 +--- integration-tests/{src => tests}/mint.rs | 45 ++-- integration-tests/tests/payout.rs | 59 ++++ integration-tests/{src => tests}/transfer.rs | 48 ++-- 20 files changed, 777 insertions(+), 548 deletions(-) create mode 100644 integration-tests/data/formula_cases.json delete mode 100644 integration-tests/src/common.rs delete mode 100644 integration-tests/src/formula.rs delete mode 100644 integration-tests/src/helpers.rs delete mode 100644 integration-tests/src/prepare.rs rename integration-tests/{src => tests}/callback_attack.rs (65%) create mode 100644 integration-tests/tests/common/helpers.rs create mode 100644 integration-tests/tests/common/mod.rs rename integration-tests/{src => tests/common}/panic.rs (100%) create mode 100644 integration-tests/tests/common/prepare.rs rename integration-tests/{src => tests/common}/storage.rs (100%) rename integration-tests/{src => tests}/defer.rs (57%) create mode 100644 integration-tests/tests/formula.rs rename integration-tests/{src/lib.rs => tests/happy_flow.rs} (50%) rename integration-tests/{src => tests}/mint.rs (61%) create mode 100644 integration-tests/tests/payout.rs rename integration-tests/{src => tests}/transfer.rs (60%) diff --git a/Makefile b/Makefile index 9fe5591..2f776c3 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,11 @@ integration: build-integration ##@Testing Run integration tests. int: integration ##@Testing Shorthand for `integration` +integration-log: build-integration ##@Testing Run integration tests with logs streamed (serial). Override level via RUST_LOG. + cd integration-tests && RUST_LOG=$${RUST_LOG:-info,near_workspaces=warn} cargo test -- --nocapture --test-threads=1 + +int-log: integration-log ##@Testing Shorthand for `integration-log` + fmt: ##@Chores Format the code using rustfmt nightly. cargo +nightly fmt --all diff --git a/integration-tests/Cargo.lock b/integration-tests/Cargo.lock index 74fe898..4ea303a 100644 --- a/integration-tests/Cargo.lock +++ b/integration-tests/Cargo.lock @@ -57,6 +57,15 @@ version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + [[package]] name = "arbitrary" version = "1.4.2" @@ -1142,9 +1151,13 @@ name = "integration-tests" version = "1.0.0" dependencies = [ "anyhow", + "approx", "near-workspaces", + "serde", "serde_json", "tokio", + "tracing", + "tracing-subscriber", ] [[package]] @@ -1300,6 +1313,15 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata 0.4.14", +] + [[package]] name = "memchr" version = "2.8.0" @@ -1750,6 +1772,15 @@ dependencies = [ "uriparse", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "num-bigint" version = "0.3.3" @@ -2112,8 +2143,8 @@ checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.3.9", + "regex-syntax 0.7.5", ] [[package]] @@ -2124,7 +2155,18 @@ checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.10", ] [[package]] @@ -2133,6 +2175,12 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + [[package]] name = "reqwest" version = "0.12.9" @@ -2528,6 +2576,15 @@ dependencies = [ "keccak", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2763,6 +2820,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "time" version = "0.3.47" @@ -2980,6 +3046,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata 0.4.14", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -3116,6 +3212,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index b43e685..86e1e6b 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -4,13 +4,14 @@ version = "1.0.0" publish = false edition = "2021" -[lib] -name = "integration_tests" - [dev-dependencies] near-workspaces = "0.22.1" anyhow = "1.0" tokio = { version = "1", features = ["macros", "rt-multi-thread"] } +serde = { version = "1", features = ["derive"] } serde_json = "1" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +approx = "0.5" [workspace] diff --git a/integration-tests/data/formula_cases.json b/integration-tests/data/formula_cases.json new file mode 100644 index 0000000..0d9317d --- /dev/null +++ b/integration-tests/data/formula_cases.json @@ -0,0 +1,146 @@ +[ + {"steps_since_tge": "1", "steps": 1, "expected": 0.000999999999999307}, + {"steps_since_tge": "1", "steps": 10, "expected": 0.009999999999972283}, + {"steps_since_tge": "1", "steps": 100, "expected": 0.09999999999764402}, + {"steps_since_tge": "1", "steps": 1000, "expected": 0.9999999997685598}, + {"steps_since_tge": "1", "steps": 10000, "expected": 9.999999976897554}, + {"steps_since_tge": "1", "steps": 100000, "expected": 99.9999976901712}, + {"steps_since_tge": "1", "steps": 1000000, "expected": 999.9997690212772}, + {"steps_since_tge": "1", "steps": 10000000, "expected": 9999.976902169294}, + {"steps_since_tge": "1", "steps": 100000000, "expected": 99997.69021734511}, + {"steps_since_tge": "10", "steps": 1, "expected": 0.0009999999999951495}, + {"steps_since_tge": "10", "steps": 10, "expected": 0.009999999999930707}, + {"steps_since_tge": "10", "steps": 100, "expected": 0.09999999999722826}, + {"steps_since_tge": "10", "steps": 1000, "expected": 0.9999999997644021}, + {"steps_since_tge": "10", "steps": 10000, "expected": 9.999999976855978}, + {"steps_since_tge": "10", "steps": 100000, "expected": 99.99999768975543}, + {"steps_since_tge": "10", "steps": 1000000, "expected": 999.9997690171195}, + {"steps_since_tge": "10", "steps": 10000000, "expected": 9999.976902127717}, + {"steps_since_tge": "10", "steps": 100000000, "expected": 99997.69021692935}, + {"steps_since_tge": "100", "steps": 1, "expected": 0.0009999999999535734}, + {"steps_since_tge": "100", "steps": 10, "expected": 0.009999999999514946}, + {"steps_since_tge": "100", "steps": 100, "expected": 0.09999999999307065}, + {"steps_since_tge": "100", "steps": 1000, "expected": 0.999999999722826}, + {"steps_since_tge": "100", "steps": 10000, "expected": 9.999999976440217}, + {"steps_since_tge": "100", "steps": 100000, "expected": 99.99999768559782}, + {"steps_since_tge": "100", "steps": 1000000, "expected": 999.9997689755435}, + {"steps_since_tge": "100", "steps": 10000000, "expected": 9999.976901711956}, + {"steps_since_tge": "100", "steps": 100000000, "expected": 99997.69021277173}, + {"steps_since_tge": "1000", "steps": 1, "expected": 0.0009999999995378124}, + {"steps_since_tge": "1000", "steps": 10, "expected": 0.009999999995357337}, + {"steps_since_tge": "1000", "steps": 100, "expected": 0.09999999995149457}, + {"steps_since_tge": "1000", "steps": 1000, "expected": 0.9999999993070652}, + {"steps_since_tge": "1000", "steps": 10000, "expected": 9.999999972282609}, + {"steps_since_tge": "1000", "steps": 100000, "expected": 99.99999764402173}, + {"steps_since_tge": "1000", "steps": 1000000, "expected": 999.9997685597826}, + {"steps_since_tge": "1000", "steps": 10000000, "expected": 9999.976897554348}, + {"steps_since_tge": "1000", "steps": 100000000, "expected": 99997.69017119565}, + {"steps_since_tge": "10000", "steps": 1, "expected": 0.0009999999953802037}, + {"steps_since_tge": "10000", "steps": 10, "expected": 0.00999999995378125}, + {"steps_since_tge": "10000", "steps": 100, "expected": 0.0999999995357337}, + {"steps_since_tge": "10000", "steps": 1000, "expected": 0.9999999951494565}, + {"steps_since_tge": "10000", "steps": 10000, "expected": 9.999999930706522}, + {"steps_since_tge": "10000", "steps": 100000, "expected": 99.99999722826087}, + {"steps_since_tge": "10000", "steps": 1000000, "expected": 999.9997644021739}, + {"steps_since_tge": "10000", "steps": 10000000, "expected": 9999.97685597826}, + {"steps_since_tge": "10000", "steps": 100000000, "expected": 99997.68975543478}, + {"steps_since_tge": "100000", "steps": 1, "expected": 0.0009999999538041167}, + {"steps_since_tge": "100000", "steps": 10, "expected": 0.00999999953802038}, + {"steps_since_tge": "100000", "steps": 100, "expected": 0.099999995378125}, + {"steps_since_tge": "100000", "steps": 1000, "expected": 0.9999999535733696}, + {"steps_since_tge": "100000", "steps": 10000, "expected": 9.999999514945651}, + {"steps_since_tge": "100000", "steps": 100000, "expected": 99.99999307065218}, + {"steps_since_tge": "100000", "steps": 1000000, "expected": 999.999722826087}, + {"steps_since_tge": "100000", "steps": 10000000, "expected": 9999.976440217391}, + {"steps_since_tge": "100000", "steps": 100000000, "expected": 99997.68559782609}, + {"steps_since_tge": "1000000", "steps": 1, "expected": 0.0009999995380432472}, + {"steps_since_tge": "1000000", "steps": 10, "expected": 0.009999995380411684}, + {"steps_since_tge": "1000000", "steps": 100, "expected": 0.09999995380203805}, + {"steps_since_tge": "1000000", "steps": 1000, "expected": 0.9999995378125}, + {"steps_since_tge": "1000000", "steps": 10000, "expected": 9.999995357336957}, + {"steps_since_tge": "1000000", "steps": 100000, "expected": 99.99995149456522}, + {"steps_since_tge": "1000000", "steps": 1000000, "expected": 999.9993070652174}, + {"steps_since_tge": "1000000", "steps": 10000000, "expected": 9999.972282608696}, + {"steps_since_tge": "1000000", "steps": 100000000, "expected": 99997.64402173914}, + {"steps_since_tge": "10000000", "steps": 1, "expected": 0.0009999953804345515}, + {"steps_since_tge": "10000000", "steps": 10, "expected": 0.009999953804324729}, + {"steps_since_tge": "10000000", "steps": 100, "expected": 0.09999953804116848}, + {"steps_since_tge": "10000000", "steps": 1000, "expected": 0.9999953802038043}, + {"steps_since_tge": "10000000", "steps": 10000, "expected": 9.99995378125}, + {"steps_since_tge": "10000000", "steps": 100000, "expected": 99.99953573369565}, + {"steps_since_tge": "10000000", "steps": 1000000, "expected": 999.9951494565217}, + {"steps_since_tge": "10000000", "steps": 10000000, "expected": 9999.93070652174}, + {"steps_since_tge": "10000000", "steps": 100000000, "expected": 99997.22826086957}, + {"steps_since_tge": "100000000", "steps": 1, "expected": 0.000999953804347595}, + {"steps_since_tge": "100000000", "steps": 10, "expected": 0.009999538043455164}, + {"steps_since_tge": "100000000", "steps": 100, "expected": 0.09999538043247283}, + {"steps_since_tge": "100000000", "steps": 1000, "expected": 0.9999538041168479}, + {"steps_since_tge": "100000000", "steps": 10000, "expected": 9.999538020380434}, + {"steps_since_tge": "100000000", "steps": 100000, "expected": 99.995378125}, + {"steps_since_tge": "100000000", "steps": 1000000, "expected": 999.9535733695652}, + {"steps_since_tge": "100000000", "steps": 10000000, "expected": 9999.514945652174}, + {"steps_since_tge": "100000000", "steps": 100000000, "expected": 99993.07065217392}, + {"steps_since_tge": "1000000000", "steps": 1, "expected": 0.0009995380434780299}, + {"steps_since_tge": "1000000000", "steps": 10, "expected": 0.009995380434759511}, + {"steps_since_tge": "1000000000", "steps": 100, "expected": 0.0999538043455163}, + {"steps_since_tge": "1000000000", "steps": 1000, "expected": 0.9995380432472826}, + {"steps_since_tge": "1000000000", "steps": 10000, "expected": 9.995380411684783}, + {"steps_since_tge": "1000000000", "steps": 100000, "expected": 99.95380203804348}, + {"steps_since_tge": "1000000000", "steps": 1000000, "expected": 999.5378125}, + {"steps_since_tge": "1000000000", "steps": 10000000, "expected": 9995.357336956522}, + {"steps_since_tge": "1000000000", "steps": 100000000, "expected": 99951.49456521739}, + {"steps_since_tge": "10000000000", "steps": 1, "expected": 0.0009953804347823778}, + {"steps_since_tge": "10000000000", "steps": 10, "expected": 0.00995380434780299}, + {"steps_since_tge": "10000000000", "steps": 100, "expected": 0.09953804347595109}, + {"steps_since_tge": "10000000000", "steps": 1000, "expected": 0.9953804345516304}, + {"steps_since_tge": "10000000000", "steps": 10000, "expected": 9.95380432472826}, + {"steps_since_tge": "10000000000", "steps": 100000, "expected": 99.53804116847826}, + {"steps_since_tge": "10000000000", "steps": 1000000, "expected": 995.3802038043478}, + {"steps_since_tge": "10000000000", "steps": 10000000, "expected": 9953.78125}, + {"steps_since_tge": "10000000000", "steps": 100000000, "expected": 99535.73369565218}, + {"steps_since_tge": "100000000000", "steps": 1, "expected": 0.0009538043478258559}, + {"steps_since_tge": "100000000000", "steps": 10, "expected": 0.009538043478237772}, + {"steps_since_tge": "100000000000", "steps": 100, "expected": 0.09538043478029891}, + {"steps_since_tge": "100000000000", "steps": 1000, "expected": 0.9538043475951087}, + {"steps_since_tge": "100000000000", "steps": 10000, "expected": 9.538043455163043}, + {"steps_since_tge": "100000000000", "steps": 100000, "expected": 95.38043247282609}, + {"steps_since_tge": "100000000000", "steps": 1000000, "expected": 953.8041168478261}, + {"steps_since_tge": "100000000000", "steps": 10000000, "expected": 9538.020380434782}, + {"steps_since_tge": "100000000000", "steps": 100000000, "expected": 95378.125}, + {"steps_since_tge": "1000000000000", "steps": 1, "expected": 0.0005380434782607852}, + {"steps_since_tge": "1000000000000", "steps": 10, "expected": 0.005380434782600264}, + {"steps_since_tge": "1000000000000", "steps": 100, "expected": 0.05380434782524375}, + {"steps_since_tge": "1000000000000", "steps": 1000, "expected": 0.5380434781765493}, + {"steps_since_tge": "1000000000000", "steps": 10000, "expected": 5.380434774176671}, + {"steps_since_tge": "1000000000000", "steps": 100000, "expected": 53.80434698288449}, + {"steps_since_tge": "1000000000000", "steps": 1000000, "expected": 538.043393940623}, + {"steps_since_tge": "1000000000000", "steps": 10000000, "expected": 5380.426350584036}, + {"steps_since_tge": "1000000000000", "steps": 100000000, "expected": 53803.504623621026}, + {"steps_since_tge": "10000000000000", "steps": 1, "expected": 0.00010531914893616589}, + {"steps_since_tge": "10000000000000", "steps": 10, "expected": 0.0010531914893612702}, + {"steps_since_tge": "10000000000000", "steps": 100, "expected": 0.010531914893573824}, + {"steps_since_tge": "10000000000000", "steps": 1000, "expected": 0.10531914893185049}, + {"steps_since_tge": "10000000000000", "steps": 10000, "expected": 1.0531914889297291}, + {"steps_since_tge": "10000000000000", "steps": 100000, "expected": 10.531914850419714}, + {"steps_since_tge": "10000000000000", "steps": 1000000, "expected": 105.31914461643949}, + {"steps_since_tge": "10000000000000", "steps": 10000000, "expected": 1053.1910573886303}, + {"steps_since_tge": "10000000000000", "steps": 100000000, "expected": 10531.87169630984}, + {"steps_since_tge": "100000000000000", "steps": 1, "expected": 1.1647058823529354e-05}, + {"steps_since_tge": "100000000000000", "steps": 10, "expected": 0.00011647058823528842}, + {"steps_since_tge": "100000000000000", "steps": 100, "expected": 0.0011647058823523713}, + {"steps_since_tge": "100000000000000", "steps": 1000, "expected": 0.011647058823472424}, + {"steps_since_tge": "100000000000000", "steps": 10000, "expected": 0.11647058822959541}, + {"steps_since_tge": "100000000000000", "steps": 100000, "expected": 1.164705881783071}, + {"steps_since_tge": "100000000000000", "steps": 1000000, "expected": 11.647058766542404}, + {"steps_since_tge": "100000000000000", "steps": 10000000, "expected": 116.47058253659338}, + {"steps_since_tge": "100000000000000", "steps": 100000000, "expected": 1164.7053124828683}, + {"steps_since_tge": "1000000000000000", "steps": 1, "expected": 1.1895246692412392e-06}, + {"steps_since_tge": "1000000000000000", "steps": 10, "expected": 1.1891116398421971e-05}, + {"steps_since_tge": "1000000000000000", "steps": 100, "expected": 0.00011890600111673168}, + {"steps_since_tge": "1000000000000000", "steps": 1000, "expected": 0.0011890610437408145}, + {"steps_since_tge": "1000000000000000", "steps": 10000, "expected": 0.011890606307114153}, + {"steps_since_tge": "1000000000000000", "steps": 100000, "expected": 0.11890606410371503}, + {"steps_since_tge": "1000000000000000", "steps": 1000000, "expected": 1.1890606420697238}, + {"steps_since_tge": "1000000000000000", "steps": 10000000, "expected": 11.890606361840549}, + {"steps_since_tge": "1000000000000000", "steps": 100000000, "expected": 118.90605827173992} +] diff --git a/integration-tests/src/common.rs b/integration-tests/src/common.rs deleted file mode 100644 index c7c1fe4..0000000 --- a/integration-tests/src/common.rs +++ /dev/null @@ -1,29 +0,0 @@ -use near_workspaces::result::{ExecutionFailure, ExecutionResult, ExecutionSuccess}; - -pub(crate) trait PanicFinder { - fn has_panic(&self, message: &str) -> bool; -} - -impl PanicFinder for Result { - fn has_panic(&self, message: &str) -> bool { - match self { - Ok(ok) => ok.has_panic(message), - Err(err) => err.has_panic(message), - } - } -} - -impl PanicFinder for ExecutionResult { - fn has_panic(&self, message: &str) -> bool { - self.outcomes() - .into_iter() - .map(|item| match item.clone().into_result() { - Ok(_) => None, - Err(err) => Some(err), - }) - .any(|item| match item { - None => false, - Some(err) => format!("{err:?}").contains(message), - }) - } -} diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs deleted file mode 100644 index 6a3b3da..0000000 --- a/integration-tests/src/formula.rs +++ /dev/null @@ -1,210 +0,0 @@ -use serde_json::json; - -use crate::helpers::step; -use crate::prepare::prepare_contract; - -const TAG: &str = "test_formula"; -const EPS: f64 = 0.00001; - -#[tokio::test] -async fn test_formula() -> anyhow::Result<()> { - let context = prepare_contract(TAG).await?; - - step!(TAG, "view get_steps_since_tge"); - let steps_since_tge: String = context.sweat.view("get_steps_since_tge").await?.json()?; - step!(TAG, " = {}", steps_since_tge); - assert_eq!(0_u64, steps_since_tge.parse::()?); - - let steps_to_convert: [u32; 9] = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; - let steps_from_tge: [u64; 16] = [ - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000, - 10000000000, - 100000000000, - 1000000000000, - 10000000000000, - 100000000000000, - 1000000000000000, - ]; - - let total = steps_from_tge.len() * steps_to_convert.len(); - step!(TAG, "iterating {} formula cases", total); - - let mut test_number = 0; - for tge in steps_from_tge { - for steps in steps_to_convert { - let raw: String = context - .sweat - .view("formula") - .args_json(json!({ "steps_since_tge": tge.to_string(), "steps": steps })) - .await? - .json()?; - let value = raw.parse::()? as f64 / 1e18; - let expected = TEST_RESULTS[test_number]; - let diff = value - expected; - assert!( - diff.abs() < EPS, - "case #{test_number} (tge={tge}, steps={steps}): expected {expected}, got {value} (diff {diff})" - ); - test_number += 1; - } - } - - step!(TAG, "all {} cases passed", test_number); - Ok(()) -} - -const TEST_RESULTS: [f64; 144] = [ - 0.000_999_999_999_999_307, - 0.009_999_999_999_972_283, - 0.099_999_999_997_644_02, - 0.999_999_999_768_559_8, - 9.999_999_976_897_554, - 99.999_997_690_171_2, - 999.999_769_021_277_2, - 9_999.976_902_169_294, - 99_997.690_217_345_11, - 0.000_999_999_999_995_149_5, - 0.009_999_999_999_930_707, - 0.099_999_999_997_228_26, - 0.999_999_999_764_402_1, - 9.999_999_976_855_978, - 99.999_997_689_755_43, - 999.999_769_017_119_5, - 9_999.976_902_127_717, - 99_997.690_216_929_35, - 0.000_999_999_999_953_573_4, - 0.009_999_999_999_514_946, - 0.099_999_999_993_070_65, - 0.999_999_999_722_826, - 9.999_999_976_440_217, - 99.999_997_685_597_82, - 999.999_768_975_543_5, - 9_999.976_901_711_956, - 99_997.690_212_771_73, - 0.000_999_999_999_537_812_4, - 0.009_999_999_995_357_337, - 0.099_999_999_951_494_57, - 0.999_999_999_307_065_2, - 9.999_999_972_282_609, - 99.999_997_644_021_73, - 999.999_768_559_782_6, - 9_999.976_897_554_348, - 99_997.690_171_195_65, - 0.000_999_999_995_380_203_7, - 0.009_999_999_953_781_25, - 0.099_999_999_535_733_7, - 0.999_999_995_149_456_5, - 9.999_999_930_706_522, - 99.999_997_228_260_87, - 999.999_764_402_173_9, - 9_999.976_855_978_26, - 99_997.689_755_434_78, - 0.000_999_999_953_804_116_7, - 0.009_999_999_538_020_38, - 0.099_999_995_378_125, - 0.999_999_953_573_369_6, - 9.999_999_514_945_651, - 99.999_993_070_652_18, - 999.999_722_826_087, - 9_999.976_440_217_391, - 99_997.685_597_826_09, - 0.000_999_999_538_043_247_2, - 0.009_999_995_380_411_684, - 0.099_999_953_802_038_05, - 0.999_999_537_812_5, - 9.999_995_357_336_957, - 99.999_951_494_565_22, - 999.999_307_065_217_4, - 9_999.972_282_608_696, - 99_997.644_021_739_14, - 0.000_999_995_380_434_551_5, - 0.009_999_953_804_324_729, - 0.099_999_538_041_168_48, - 0.999_995_380_203_804_3, - 9.999_953_781_25, - 99.999_535_733_695_65, - 999.995_149_456_521_7, - 9_999.930_706_521_74, - 99_997.228_260_869_57, - 0.000_999_953_804_347_595, - 0.009_999_538_043_455_164, - 0.099_995_380_432_472_83, - 0.999_953_804_116_847_9, - 9.999_538_020_380_434, - 99.995_378_125, - 999.953_573_369_565_2, - 9_999.514_945_652_174, - 99_993.070_652_173_92, - 0.000_999_538_043_478_029_9, - 0.009_995_380_434_759_511, - 0.099_953_804_345_516_3, - 0.999_538_043_247_282_6, - 9.995_380_411_684_783, - 99.953_802_038_043_48, - 999.537_812_5, - 9_995.357_336_956_522, - 99_951.494_565_217_39, - 0.000_995_380_434_782_377_8, - 0.009_953_804_347_802_99, - 0.099_538_043_475_951_09, - 0.995_380_434_551_630_4, - 9.953_804_324_728_26, - 99.538_041_168_478_26, - 995.380_203_804_347_8, - 9953.78125, - 99_535.733_695_652_18, - 0.000_953_804_347_825_855_9, - 0.009_538_043_478_237_772, - 0.095_380_434_780_298_91, - 0.953_804_347_595_108_7, - 9.538_043_455_163_043, - 95.380_432_472_826_09, - 953.804_116_847_826_1, - 9_538.020_380_434_782, - 95378.125, - 0.000_538_043_478_260_785_2, - 0.005_380_434_782_600_264, - 0.053_804_347_825_243_75, - 0.538_043_478_176_549_3, - 5.380_434_774_176_671, - 53.804_346_982_884_49, - 538.043_393_940_623, - 5_380.426_350_584_036, - 53_803.504_623_621_026, - 0.000_105_319_148_936_165_89, - 0.001_053_191_489_361_270_2, - 0.010_531_914_893_573_824, - 0.105_319_148_931_850_49, - 1.053_191_488_929_729_1, - 10.531_914_850_419_714, - 105.319_144_616_439_49, - 1_053.191_057_388_630_3, - 10_531.871_696_309_84, - 1.164_705_882_352_935_4e-5, - 0.000_116_470_588_235_288_42, - 0.001_164_705_882_352_371_3, - 0.011_647_058_823_472_424, - 0.116_470_588_229_595_41, - 1.164_705_881_783_071, - 11.647_058_766_542_404, - 116.470_582_536_593_38, - 1_164.705_312_482_868_3, - 1.189_524_669_241_239_2e-6, - 1.189_111_639_842_197_1e-5, - 0.000_118_906_001_116_731_68, - 0.001_189_061_043_740_814_5, - 0.011_890_606_307_114_153, - 0.118_906_064_103_715_03, - 1.189_060_642_069_723_8, - 11.890_606_361_840_549, - 118.906_058_271_739_92, -]; diff --git a/integration-tests/src/helpers.rs b/integration-tests/src/helpers.rs deleted file mode 100644 index 5f16cda..0000000 --- a/integration-tests/src/helpers.rs +++ /dev/null @@ -1,16 +0,0 @@ -macro_rules! step { - ($tag:expr, $($arg:tt)*) => { - println!("• [{}] {}", $tag, format!($($arg)*)); - }; -} - -pub(crate) use step; - -/// Splits a minted amount into `(amount_for_user, fee)` using the contract's -/// 5%-oracle-fee policy (rounded up). Mirrors `Contract::calculate_tokens_amount` -/// in the sweat contract; kept in sync so tests can predict expected balances -/// without calling into the contract. -pub fn payout(value: u128) -> (u128, u128) { - let fee = (value * 5).div_ceil(100); - (value - fee, fee) -} diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs deleted file mode 100644 index 2449368..0000000 --- a/integration-tests/src/prepare.rs +++ /dev/null @@ -1,151 +0,0 @@ -use std::path::PathBuf; - -use anyhow::{anyhow, Result}; -use near_workspaces::{network::Sandbox, types::NearToken, Account, AccountId, Contract, Worker}; -use serde_json::json; - -use crate::helpers::step; -use crate::storage::{storage_balance_min, storage_deposit}; - -const FT_POSTFIX: &str = ".u.sweat.testnet"; -const LONG_ACCOUNT_NAME: &str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; -const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); - -const SWEAT_WASM: &str = "sweat.wasm"; -const CLAIM_WASM: &str = "sweat_claim.wasm"; -const STUB_WASM: &str = "exploit_stub.wasm"; - -pub struct Context { - pub worker: Worker, - pub sweat: Contract, - pub claim: Contract, - pub stub: Contract, - pub oracle: Account, - pub alice: Account, - pub bob: Account, - pub long: Account, -} - -pub async fn prepare_contract(caller: &str) -> Result { - let tag = format!("{caller}/prepare"); - - step!(&tag, "booting sandbox"); - let worker = near_workspaces::sandbox().await?; - let root = worker.root_account()?; - - step!(&tag, "deploying contracts"); - let sweat = deploy(&worker, integration_wasm_path(), "sweat").await?; - step!(&tag, " sweat → {}", sweat.id()); - let claim = deploy(&worker, res_wasm_path(CLAIM_WASM), "claim").await?; - step!(&tag, " claim → {}", claim.id()); - let stub = deploy(&worker, res_wasm_path(STUB_WASM), "stub").await?; - step!(&tag, " stub → {}", stub.id()); - - step!(&tag, "creating user accounts"); - let oracle = create_user(&root, "oracle").await?; - let alice = create_user(&root, "alice").await?; - let bob = create_user(&root, "bob").await?; - let long = create_user(&root, LONG_ACCOUNT_NAME).await?; - - step!(&tag, "initializing sweat (new + add_oracle)"); - init_sweat(&sweat, oracle.id()).await?; - step!(&tag, "initializing stub (new)"); - init_stub(&stub).await?; - step!(&tag, "initializing claim (init + add_oracle)"); - init_claim(&claim, sweat.id()).await?; - - step!(&tag, "registering accounts for FT storage"); - let min = storage_balance_min(&sweat).await?; - storage_deposit(&sweat, oracle.id(), min).await?; - storage_deposit(&sweat, alice.id(), min).await?; - storage_deposit(&sweat, long.id(), min).await?; - storage_deposit(&sweat, claim.id(), min).await?; - - step!(&tag, "ready"); - Ok(Context { - worker, - sweat, - claim, - stub, - oracle, - alice, - bob, - long, - }) -} - -fn integration_wasm_path() -> PathBuf { - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("target") - .join("integration-wasm") - .join(SWEAT_WASM) -} - -fn res_wasm_path(name: &str) -> PathBuf { - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("res") - .join(name) -} - -async fn deploy(worker: &Worker, path: PathBuf, label: &str) -> Result { - let bytes = std::fs::read(&path).map_err(|e| { - anyhow!( - "failed to read {label} WASM at {} — did you run `make build-integration`? ({e})", - path.display() - ) - })?; - Ok(worker.dev_deploy(&bytes).await?) -} - -async fn create_user(root: &Account, name: &str) -> Result { - Ok(root - .create_subaccount(name) - .initial_balance(INITIAL_USER_BALANCE) - .transact() - .await? - .into_result()?) -} - -async fn init_sweat(sweat: &Contract, oracle_id: &AccountId) -> Result<()> { - sweat - .call("new") - .args_json(json!({ "postfix": FT_POSTFIX })) - .transact() - .await? - .into_result()?; - - sweat - .call("add_oracle") - .args_json(json!({ "account_id": oracle_id })) - .transact() - .await? - .into_result()?; - - Ok(()) -} - -async fn init_stub(stub: &Contract) -> Result<()> { - stub.call("new").transact().await?.into_result()?; - Ok(()) -} - -async fn init_claim(claim: &Contract, token_account_id: &AccountId) -> Result<()> { - claim - .call("init") - .args_json(json!({ "token_account_id": token_account_id })) - .max_gas() - .transact() - .await? - .into_result()?; - - claim - .call("add_oracle") - .args_json(json!({ "account_id": token_account_id })) - .max_gas() - .transact() - .await? - .into_result()?; - - Ok(()) -} diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/tests/callback_attack.rs similarity index 65% rename from integration-tests/src/callback_attack.rs rename to integration-tests/tests/callback_attack.rs index ce5270c..7b29815 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/tests/callback_attack.rs @@ -1,27 +1,28 @@ use serde_json::json; +use tracing::info; -use crate::helpers::step; -use crate::panic::PanicFinder; -use crate::prepare::prepare_contract; +mod common; +use common::panic::PanicFinder; +use common::prepare::Context; #[tokio::test] +#[tracing::instrument] async fn test_call_on_record_in_callback() -> anyhow::Result<()> { - const TAG: &str = "test_call_on_record_in_callback"; - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_stub().build().await?; - step!(TAG, "view ft_balance_of(alice) [before attack]"); + info!("view ft_balance_of(alice) [before attack]"); let balance_before: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", balance_before); + info!(value = %balance_before, "alice balance before"); - step!(TAG, "alice → stub.exploit_on_record(ft, 1_000_000)"); + info!("alice → stub.exploit_on_record(ft, 1_000_000)"); let result = context .alice - .call(context.stub.id(), "exploit_on_record") + .call(context.stub().id(), "exploit_on_record") .args_json(json!({ "ft_account_id": context.sweat.id(), "amount": "1000000", @@ -35,28 +36,28 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { result.has_panic("Method on_record is private"), "expected nested panic \"Method on_record is private\" in receipts" ); - step!(TAG, " ✓ nested panic caught"); + info!("nested panic caught as expected"); - step!(TAG, "view ft_balance_of(alice) [after attack]"); + info!("view ft_balance_of(alice) [after attack]"); let balance_after: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", balance_after); + info!(value = %balance_after, "alice balance after"); assert_eq!(balance_before, balance_after); - step!(TAG, "done"); + info!("done"); Ok(()) } #[tokio::test] +#[tracing::instrument] async fn test_call_on_record_directly() -> anyhow::Result<()> { - const TAG: &str = "test_call_on_record_directly"; - let context = prepare_contract(TAG).await?; + let context = Context::builder().build().await?; - step!(TAG, "sweat → sweat.on_record(...) [direct call, no preceding promise]"); + info!("sweat → sweat.on_record(...) [direct call, no preceding promise]"); let result = context .sweat .as_account() @@ -76,24 +77,24 @@ async fn test_call_on_record_directly() -> anyhow::Result<()> { result.has_panic("Contract expected a single result on the callback"), "expected panic \"Contract expected a single result on the callback\"" ); - step!(TAG, " ✓ panic caught"); + info!("panic caught as expected"); - step!(TAG, "done"); + info!("done"); Ok(()) } #[tokio::test] +#[tracing::instrument] async fn test_call_ft_resolve_transfer() -> anyhow::Result<()> { - const TAG: &str = "test_call_ft_resolve_transfer"; - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_bob().build().await?; - step!(TAG, "alice → sweat.ft_resolve_transfer(...) [private callback]"); + info!("alice → sweat.ft_resolve_transfer(...) [private callback]"); let result = context .alice .call(context.sweat.id(), "ft_resolve_transfer") .args_json(json!({ "sender_id": context.alice.id(), - "receiver_id": context.bob.id(), + "receiver_id": context.bob().id(), "amount": "1000000", })) .max_gas() @@ -105,8 +106,8 @@ async fn test_call_ft_resolve_transfer() -> anyhow::Result<()> { result.has_panic("Method ft_resolve_transfer is private"), "expected panic \"Method ft_resolve_transfer is private\"" ); - step!(TAG, " ✓ panic caught"); + info!("panic caught as expected"); - step!(TAG, "done"); + info!("done"); Ok(()) } diff --git a/integration-tests/tests/common/helpers.rs b/integration-tests/tests/common/helpers.rs new file mode 100644 index 0000000..da9ce16 --- /dev/null +++ b/integration-tests/tests/common/helpers.rs @@ -0,0 +1,31 @@ +use tracing_subscriber::EnvFilter; + +/// Installs a `tracing` subscriber once per test process. Idempotent — +/// safe to call from every test setup. +/// +/// Output is routed through `with_test_writer()` so `cargo test`'s +/// stdout capture works (otherwise spans bypass capture and leak into +/// passing-test output). +/// +/// Override verbosity with `RUST_LOG`, e.g. +/// `RUST_LOG=debug cargo test -- --nocapture`. +/// +/// Default filter is `info,near_workspaces=warn` — info-level events from +/// our tests, but quiet down near-workspaces' chatty sandbox lifecycle logs. +pub(crate) fn init_tracing() { + let filter = EnvFilter::try_from_default_env() + .unwrap_or_else(|_| EnvFilter::new("info,near_workspaces=warn")); + let _ = tracing_subscriber::fmt() + .with_env_filter(filter) + .with_test_writer() + .try_init(); +} + +/// Splits a minted amount into `(amount_for_user, fee)` using the contract's +/// 5%-oracle-fee policy (rounded up). Mirrors `Contract::calculate_tokens_amount` +/// in the sweat contract; kept in sync so tests can predict expected balances +/// without calling into the contract. +pub fn payout(value: u128) -> (u128, u128) { + let fee = (value * 5).div_ceil(100); + (value - fee, fee) +} diff --git a/integration-tests/tests/common/mod.rs b/integration-tests/tests/common/mod.rs new file mode 100644 index 0000000..d05e9d8 --- /dev/null +++ b/integration-tests/tests/common/mod.rs @@ -0,0 +1,11 @@ +// Shared setup, helpers, and traits used by the integration-test binaries. +// +// Each `tests/*.rs` is its own test binary; Rust's dead-code lint runs per +// binary and flags items that are only used by *other* binaries. Silence the +// noise at the module root rather than annotating every helper. +#![allow(dead_code)] + +pub mod helpers; +pub mod panic; +pub mod prepare; +pub mod storage; diff --git a/integration-tests/src/panic.rs b/integration-tests/tests/common/panic.rs similarity index 100% rename from integration-tests/src/panic.rs rename to integration-tests/tests/common/panic.rs diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs new file mode 100644 index 0000000..9c02c78 --- /dev/null +++ b/integration-tests/tests/common/prepare.rs @@ -0,0 +1,252 @@ +use std::path::PathBuf; + +use anyhow::{anyhow, Result}; +use near_workspaces::{network::Sandbox, types::NearToken, Account, AccountId, Contract, Worker}; +use serde_json::json; +use tracing::info; + +use super::helpers::init_tracing; +use super::storage::{storage_balance_min, storage_deposit}; + +const FT_POSTFIX: &str = ".u.sweat.testnet"; +const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); + +const SWEAT_WASM_ENV: &str = "SWEAT_WASM"; +const CLAIM_WASM_ENV: &str = "CLAIM_WASM"; +const STUB_WASM_ENV: &str = "STUB_WASM"; + +pub struct Context { + #[allow(dead_code)] // held to keep the sandbox alive for the test's lifetime + pub worker: Worker, + pub sweat: Contract, + pub alice: Account, + oracle: Option, + bob: Option, + claim: Option, + stub: Option, +} + +impl Context { + pub fn builder() -> ContextBuilder { + ContextBuilder::new() + } + + pub fn oracle(&self) -> &Account { + self.oracle + .as_ref() + .expect("oracle missing — add .with_oracle() to the Context::builder() chain") + } + + pub fn bob(&self) -> &Account { + self.bob + .as_ref() + .expect("bob missing — add .with_bob() to the Context::builder() chain") + } + + pub fn claim(&self) -> &Contract { + self.claim + .as_ref() + .expect("claim missing — add .with_claim() to the Context::builder() chain") + } + + pub fn stub(&self) -> &Contract { + self.stub + .as_ref() + .expect("stub missing — add .with_stub() to the Context::builder() chain") + } +} + +pub struct ContextBuilder { + oracle: bool, + bob: bool, + claim: bool, + stub: bool, +} + +impl ContextBuilder { + fn new() -> Self { + init_tracing(); + Self { + oracle: false, + bob: false, + claim: false, + stub: false, + } + } + + pub fn with_oracle(mut self) -> Self { + self.oracle = true; + self + } + + pub fn with_bob(mut self) -> Self { + self.bob = true; + self + } + + pub fn with_claim(mut self) -> Self { + self.claim = true; + self + } + + pub fn with_stub(mut self) -> Self { + self.stub = true; + self + } + + #[tracing::instrument(name = "prepare", skip(self))] + pub async fn build(self) -> Result { + info!("booting sandbox"); + let worker = near_workspaces::sandbox().await?; + let root = worker.root_account()?; + + info!("deploying sweat"); + let sweat = deploy(&worker, sweat_wasm_path(), "sweat", SWEAT_WASM_ENV).await?; + info!(id = %sweat.id(), "sweat deployed"); + + info!("initializing sweat (new)"); + sweat + .call("new") + .args_json(json!({ "postfix": FT_POSTFIX })) + .transact() + .await? + .into_result()?; + + info!("creating alice"); + let alice = create_user(&root, "alice").await?; + + let min = storage_balance_min(&sweat).await?; + storage_deposit(&sweat, alice.id(), min).await?; + + let oracle = if self.oracle { + info!("creating oracle + sweat.add_oracle"); + let oracle = create_user(&root, "oracle").await?; + sweat + .call("add_oracle") + .args_json(json!({ "account_id": oracle.id() })) + .transact() + .await? + .into_result()?; + storage_deposit(&sweat, oracle.id(), min).await?; + Some(oracle) + } else { + None + }; + + let bob = if self.bob { + info!("creating bob (FT-unregistered)"); + Some(create_user(&root, "bob").await?) + } else { + None + }; + + let claim = if self.claim { + info!("deploying + initializing claim"); + let claim = deploy(&worker, claim_wasm_path(), "claim", CLAIM_WASM_ENV).await?; + info!(id = %claim.id(), "claim deployed"); + init_claim(&claim, sweat.id()).await?; + storage_deposit(&sweat, claim.id(), min).await?; + Some(claim) + } else { + None + }; + + let stub = if self.stub { + info!("deploying + initializing stub"); + let stub = deploy(&worker, stub_wasm_path(), "stub", STUB_WASM_ENV).await?; + info!(id = %stub.id(), "stub deployed"); + stub.call("new").transact().await?.into_result()?; + Some(stub) + } else { + None + }; + + info!("ready"); + Ok(Context { + worker, + sweat, + alice, + oracle, + bob, + claim, + stub, + }) + } +} + +/// Resolve a WASM path, honouring the given env var as an override. +/// Relative paths in the env var are interpreted relative to the test +/// process's cwd (usually the `integration-tests/` crate dir). +fn wasm_path(env_var: &str, default: PathBuf) -> PathBuf { + std::env::var_os(env_var).map(PathBuf::from).unwrap_or(default) +} + +fn sweat_wasm_path() -> PathBuf { + wasm_path( + SWEAT_WASM_ENV, + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("target") + .join("integration-wasm") + .join("sweat.wasm"), + ) +} + +fn claim_wasm_path() -> PathBuf { + wasm_path( + CLAIM_WASM_ENV, + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("..") + .join("res") + .join("sweat_claim.wasm"), + ) +} + +fn stub_wasm_path() -> PathBuf { + wasm_path( + STUB_WASM_ENV, + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("..") + .join("res") + .join("exploit_stub.wasm"), + ) +} + +async fn deploy(worker: &Worker, path: PathBuf, label: &str, env_var: &str) -> Result { + let bytes = std::fs::read(&path).map_err(|e| { + anyhow!( + "failed to read {label} WASM at {} — did you run `make build-integration`? \ + Override the path with the {env_var} env var. ({e})", + path.display() + ) + })?; + Ok(worker.dev_deploy(&bytes).await?) +} + +async fn create_user(root: &Account, name: &str) -> Result { + Ok(root + .create_subaccount(name) + .initial_balance(INITIAL_USER_BALANCE) + .transact() + .await? + .into_result()?) +} + +async fn init_claim(claim: &Contract, token_account_id: &AccountId) -> Result<()> { + claim + .call("init") + .args_json(json!({ "token_account_id": token_account_id })) + .max_gas() + .transact() + .await? + .into_result()?; + + claim + .call("add_oracle") + .args_json(json!({ "account_id": token_account_id })) + .max_gas() + .transact() + .await? + .into_result()?; + + Ok(()) +} diff --git a/integration-tests/src/storage.rs b/integration-tests/tests/common/storage.rs similarity index 100% rename from integration-tests/src/storage.rs rename to integration-tests/tests/common/storage.rs diff --git a/integration-tests/src/defer.rs b/integration-tests/tests/defer.rs similarity index 57% rename from integration-tests/src/defer.rs rename to integration-tests/tests/defer.rs index 09b218f..a6d5090 100644 --- a/integration-tests/src/defer.rs +++ b/integration-tests/tests/defer.rs @@ -1,29 +1,31 @@ use serde_json::json; +use tracing::info; -use crate::helpers::step; -use crate::prepare::prepare_contract; +mod common; +use common::prepare::Context; -const TAG: &str = "test_defer"; const BATCH_SIZE: u32 = 135; const CLAIM_AMOUNT: u32 = 10_000; #[tokio::test] +#[tracing::instrument] async fn test_defer() -> anyhow::Result<()> { - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_oracle().with_claim().build().await?; - step!(TAG, "view ft_balance_of(claim)"); + info!("view ft_balance_of(claim)"); let claim_balance_before: String = context .sweat .view("ft_balance_of") - .args_json(json!({ "account_id": context.claim.id() })) + .args_json(json!({ "account_id": context.claim().id() })) .await? .json()?; - step!(TAG, " = {}", claim_balance_before); + info!(value = %claim_balance_before, "claim balance before"); assert_eq!(0_u128, claim_balance_before.parse::()?); - step!( - TAG, - "view calculate_payout_with_fee_for_batch(batch_size={BATCH_SIZE}, claim_amount={CLAIM_AMOUNT})" + info!( + batch_size = BATCH_SIZE, + claim_amount = CLAIM_AMOUNT, + "view calculate_payout_with_fee_for_batch" ); let (total_fee, total_for_user): (String, String) = context .sweat @@ -34,58 +36,59 @@ async fn test_defer() -> anyhow::Result<()> { })) .await? .json()?; - step!(TAG, " total_fee={total_fee}, total_for_user={total_for_user}"); + info!(%total_fee, %total_for_user, "payout breakdown"); let batch: Vec<_> = (0..BATCH_SIZE) .map(|_| (context.alice.id(), CLAIM_AMOUNT)) .collect(); - step!( - TAG, - "call defer_batch([(alice, {CLAIM_AMOUNT})] × {BATCH_SIZE}, holding=claim) [signer=oracle]" + info!( + batch_size = BATCH_SIZE, + claim_amount = CLAIM_AMOUNT, + "call defer_batch(holding=claim) [signer=oracle]" ); context - .oracle + .oracle() .call(context.sweat.id(), "defer_batch") .args_json(json!({ "steps_batch": batch, - "holding_account_id": context.claim.id(), + "holding_account_id": context.claim().id(), })) .max_gas() .transact() .await? .into_result()?; - step!(TAG, "view ft_balance_of(alice)"); + info!("view ft_balance_of(alice)"); let alice_balance: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", alice_balance); + info!(value = %alice_balance, "alice balance"); assert_eq!(0_u128, alice_balance.parse::()?); - step!(TAG, "view ft_balance_of(claim)"); + info!("view ft_balance_of(claim)"); let claim_balance: String = context .sweat .view("ft_balance_of") - .args_json(json!({ "account_id": context.claim.id() })) + .args_json(json!({ "account_id": context.claim().id() })) .await? .json()?; - step!(TAG, " = {}", claim_balance); + info!(value = %claim_balance, "claim balance"); assert_eq!(total_for_user, claim_balance); - step!(TAG, "view ft_balance_of(oracle)"); + info!("view ft_balance_of(oracle)"); let oracle_balance: String = context .sweat .view("ft_balance_of") - .args_json(json!({ "account_id": context.oracle.id() })) + .args_json(json!({ "account_id": context.oracle().id() })) .await? .json()?; - step!(TAG, " = {}", oracle_balance); + info!(value = %oracle_balance, "oracle balance"); assert_eq!(total_fee, oracle_balance); - step!(TAG, "done"); + info!("done"); Ok(()) } diff --git a/integration-tests/tests/formula.rs b/integration-tests/tests/formula.rs new file mode 100644 index 0000000..dce4c26 --- /dev/null +++ b/integration-tests/tests/formula.rs @@ -0,0 +1,53 @@ +use approx::abs_diff_eq; +use serde::Deserialize; +use serde_json::json; +use tracing::info; + +mod common; +use common::prepare::Context; + +const EPS: f64 = 0.00001; +const CASES_JSON: &str = include_str!("../data/formula_cases.json"); + +#[derive(Deserialize)] +struct Case { + steps_since_tge: String, + steps: u32, + expected: f64, +} + +#[tokio::test] +#[tracing::instrument] +async fn test_formula() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!("view get_steps_since_tge"); + let steps_since_tge: String = context.sweat.view("get_steps_since_tge").await?.json()?; + info!(value = %steps_since_tge, "steps_since_tge"); + assert_eq!(0_u64, steps_since_tge.parse::()?); + + let cases: Vec = serde_json::from_str(CASES_JSON)?; + info!(cases = cases.len(), "iterating formula cases"); + + for (i, case) in cases.iter().enumerate() { + let raw: String = context + .sweat + .view("formula") + .args_json(json!({ "steps_since_tge": case.steps_since_tge, "steps": case.steps })) + .await? + .json()?; + let value = raw.parse::()? as f64 / 1e18; + assert!( + abs_diff_eq!(value, case.expected, epsilon = EPS), + "case #{i} (tge={}, steps={}): expected {}, got {} (diff {})", + case.steps_since_tge, + case.steps, + case.expected, + value, + value - case.expected, + ); + } + + info!(passed = cases.len(), "all cases passed"); + Ok(()) +} diff --git a/integration-tests/src/lib.rs b/integration-tests/tests/happy_flow.rs similarity index 50% rename from integration-tests/src/lib.rs rename to integration-tests/tests/happy_flow.rs index 668ea6d..736ea85 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/tests/happy_flow.rs @@ -1,49 +1,25 @@ -#![cfg(test)] - -mod callback_attack; -mod defer; -mod formula; -mod helpers; -mod mint; -mod panic; -mod prepare; -mod storage; -mod transfer; - use serde_json::json; +use tracing::info; -use crate::helpers::step; -use crate::prepare::prepare_contract; - -// Tests are being resurrected one by one against near-workspaces 0.22. -// Re-enable each module as it's ported off the dead sweat-model + integration-utils deps. -// -// mod callback_attack; -// mod common; -// mod defer; -// mod formula; -// mod interface; -// mod measure; -// mod mint; -// mod transfer; - -const TAG: &str = "happy_flow"; +mod common; +use common::prepare::Context; #[tokio::test] +#[tracing::instrument] async fn happy_flow() -> anyhow::Result<()> { - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_oracle().with_claim().build().await?; - step!(TAG, "view formula(steps_since_tge=100000, steps=100)"); + info!("view formula(steps_since_tge=100000, steps=100)"); let formula: String = context .sweat .view("formula") .args_json(json!({ "steps_since_tge": "100000", "steps": 100 })) .await? .json()?; - step!(TAG, " = {}", formula); + info!(value = %formula, "formula result"); assert_eq!(99_999_995_378_125_008_u128, formula.parse::()?); - step!(TAG, "call tge_mint(alice, 100_000_000) [signer=sweat]"); + info!("call tge_mint(alice, 100_000_000) [signer=sweat]"); context .sweat .call("tge_mint") @@ -52,29 +28,29 @@ async fn happy_flow() -> anyhow::Result<()> { .await? .into_result()?; - step!(TAG, "view ft_balance_of(alice)"); + info!("view ft_balance_of(alice)"); let balance: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", balance); + info!(value = %balance, "alice balance"); assert_eq!(100_000_000_u128, balance.parse::()?); - step!(TAG, "call defer_batch([(alice, 1000)], holding=claim) [signer=oracle]"); + info!("call defer_batch([(alice, 1000)], holding=claim) [signer=oracle]"); context - .oracle + .oracle() .call(context.sweat.id(), "defer_batch") .args_json(json!({ "steps_batch": [[context.alice.id(), 1000]], - "holding_account_id": context.claim.id(), + "holding_account_id": context.claim().id(), })) .max_gas() .transact() .await? .into_result()?; - step!(TAG, "done"); + info!("done"); Ok(()) } diff --git a/integration-tests/src/mint.rs b/integration-tests/tests/mint.rs similarity index 61% rename from integration-tests/src/mint.rs rename to integration-tests/tests/mint.rs index 13e147e..9850f16 100644 --- a/integration-tests/src/mint.rs +++ b/integration-tests/tests/mint.rs @@ -1,34 +1,36 @@ use serde_json::json; +use tracing::info; -use crate::helpers::{payout, step}; -use crate::prepare::prepare_contract; +mod common; +use common::helpers::payout; +use common::prepare::Context; const TARGET_BALANCE: u128 = 9_999_999_976_902_174_720; const TARGET_STEPS_SINCE_TGE: u32 = 10_000; -const TAG: &str = "test_mint"; #[tokio::test] +#[tracing::instrument] async fn test_mint() -> anyhow::Result<()> { - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_oracle().build().await?; - step!(TAG, "view get_steps_since_tge"); + info!("view get_steps_since_tge"); let steps: String = context.sweat.view("get_steps_since_tge").await?.json()?; - step!(TAG, " = {}", steps); + info!(value = %steps, "steps_since_tge"); assert_eq!(0_u64, steps.parse::()?); - step!(TAG, "view formula(0, {})", TARGET_STEPS_SINCE_TGE); + info!(target_steps = TARGET_STEPS_SINCE_TGE, "view formula(0, target_steps)"); let formula: String = context .sweat .view("formula") .args_json(json!({ "steps_since_tge": "0", "steps": TARGET_STEPS_SINCE_TGE })) .await? .json()?; - step!(TAG, " = {}", formula); + info!(value = %formula, "formula result"); assert_eq!(TARGET_BALANCE, formula.parse::()?); - step!(TAG, "call record_batch([(alice, 10_000)]) [signer=oracle]"); + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); context - .oracle + .oracle() .call(context.sweat.id(), "record_batch") .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) .transact() @@ -36,38 +38,33 @@ async fn test_mint() -> anyhow::Result<()> { .into_result()?; let (expected_amount_for_user, expected_fee) = payout(TARGET_BALANCE); - step!( - TAG, - " expected payout: fee={}, amount_for_user={}", - expected_fee, - expected_amount_for_user - ); + info!(fee = expected_fee, for_user = expected_amount_for_user, "expected payout"); - step!(TAG, "view ft_balance_of(oracle)"); + info!("view ft_balance_of(oracle)"); let oracle_balance: String = context .sweat .view("ft_balance_of") - .args_json(json!({ "account_id": context.oracle.id() })) + .args_json(json!({ "account_id": context.oracle().id() })) .await? .json()?; - step!(TAG, " = {}", oracle_balance); + info!(value = %oracle_balance, "oracle balance"); assert_eq!(expected_fee, oracle_balance.parse::()?); - step!(TAG, "view ft_balance_of(alice)"); + info!("view ft_balance_of(alice)"); let alice_balance: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", alice_balance); + info!(value = %alice_balance, "alice balance"); assert_eq!(expected_amount_for_user, alice_balance.parse::()?); - step!(TAG, "view get_steps_since_tge"); + info!("view get_steps_since_tge"); let steps_after: String = context.sweat.view("get_steps_since_tge").await?.json()?; - step!(TAG, " = {}", steps_after); + info!(value = %steps_after, "steps_since_tge"); assert_eq!(u64::from(TARGET_STEPS_SINCE_TGE), steps_after.parse::()?); - step!(TAG, "done"); + info!("done"); Ok(()) } diff --git a/integration-tests/tests/payout.rs b/integration-tests/tests/payout.rs new file mode 100644 index 0000000..0b46cbb --- /dev/null +++ b/integration-tests/tests/payout.rs @@ -0,0 +1,59 @@ +//! Drift guard for `helpers::payout()`. +//! +//! `helpers::payout()` mirrors `Payout::from(u128)` in `contract/src/api.rs`. +//! Nothing forces them to stay in sync. This test asks the deployed contract +//! to compute a single-row payout via `calculate_payout_with_fee_for_batch` +//! (with batch_size=1, internally `Payout::from(formula(0, STEPS))`) and +//! compares to the locally-computed split. Divergence — a fee-percentage +//! change, a rounding-rule change, a swapped tuple order — fails here first. + +use serde_json::json; +use tracing::info; + +mod common; +use common::helpers::payout; +use common::prepare::Context; + +const STEPS: u32 = 10_000; + +#[tokio::test] +#[tracing::instrument] +async fn payout_helper_matches_contract() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!(steps = STEPS, "view formula(0, STEPS)"); + let minted: String = context + .sweat + .view("formula") + .args_json(json!({ "steps_since_tge": "0", "steps": STEPS })) + .await? + .json()?; + let value: u128 = minted.parse()?; + info!(value, "minted amount for one row"); + + info!("view calculate_payout_with_fee_for_batch(batch_size=1, claim_amount=STEPS)"); + let (contract_fee, contract_for_user): (String, String) = context + .sweat + .view("calculate_payout_with_fee_for_batch") + .args_json(json!({ "batch_size": 1, "claim_amount": STEPS })) + .await? + .json()?; + let contract_fee: u128 = contract_fee.parse()?; + let contract_for_user: u128 = contract_for_user.parse()?; + info!(contract_fee, contract_for_user, "contract payout split"); + + let (local_for_user, local_fee) = payout(value); + info!(local_fee, local_for_user, "helper payout split"); + + assert_eq!( + local_fee, contract_fee, + "fee diverged: helper says {local_fee}, contract says {contract_fee} (value={value})" + ); + assert_eq!( + local_for_user, contract_for_user, + "amount_for_user diverged: helper says {local_for_user}, contract says {contract_for_user} (value={value})" + ); + + info!("payout helper matches contract Payout::from"); + Ok(()) +} diff --git a/integration-tests/src/transfer.rs b/integration-tests/tests/transfer.rs similarity index 60% rename from integration-tests/src/transfer.rs rename to integration-tests/tests/transfer.rs index d01dca4..afea07e 100644 --- a/integration-tests/src/transfer.rs +++ b/integration-tests/tests/transfer.rs @@ -1,35 +1,33 @@ use near_workspaces::types::NearToken; use serde_json::json; +use tracing::info; -use crate::helpers::step; -use crate::prepare::prepare_contract; -use crate::storage::register_for_storage; +mod common; +use common::prepare::Context; +use common::storage::register_for_storage; -const TAG: &str = "test_transfer"; const ONE_YOCTO: NearToken = NearToken::from_yoctonear(1); #[tokio::test] +#[tracing::instrument] async fn test_transfer() -> anyhow::Result<()> { - let context = prepare_contract(TAG).await?; + let context = Context::builder().with_oracle().with_bob().build().await?; - step!(TAG, "call record_batch([(alice, 10_000)]) [signer=oracle]"); + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); context - .oracle + .oracle() .call(context.sweat.id(), "record_batch") .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) .transact() .await? .into_result()?; - step!( - TAG, - "call ft_transfer(alice → bob, 9499999991723028480) [bob not registered, expect failure]" - ); + info!("call ft_transfer(alice → bob, 9499999991723028480) [bob not registered, expect failure]"); let res = context .alice .call(context.sweat.id(), "ft_transfer") .args_json(json!({ - "receiver_id": context.bob.id(), + "receiver_id": context.bob().id(), "amount": "9499999991723028480", })) .deposit(ONE_YOCTO) @@ -37,27 +35,27 @@ async fn test_transfer() -> anyhow::Result<()> { .await? .into_result(); assert!(res.is_err(), "ft_transfer to unregistered bob should fail"); - step!(TAG, " ✓ rejected"); + info!("rejected as expected"); - step!(TAG, "register bob for FT storage"); - register_for_storage(&context.sweat, context.bob.id()).await?; + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; - step!(TAG, "view ft_balance_of(alice)"); + info!("view ft_balance_of(alice)"); let alice_balance: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", alice_balance); + info!(value = %alice_balance, "alice balance"); assert_ne!(0_u128, alice_balance.parse::()?); - step!(TAG, "call ft_transfer(alice → bob, {}) [transfer all]", alice_balance); + info!(amount = %alice_balance, "call ft_transfer(alice → bob) [transfer all]"); context .alice .call(context.sweat.id(), "ft_transfer") .args_json(json!({ - "receiver_id": context.bob.id(), + "receiver_id": context.bob().id(), "amount": alice_balance, })) .deposit(ONE_YOCTO) @@ -65,26 +63,26 @@ async fn test_transfer() -> anyhow::Result<()> { .await? .into_result()?; - step!(TAG, "view ft_balance_of(alice)"); + info!("view ft_balance_of(alice)"); let alice_after: String = context .sweat .view("ft_balance_of") .args_json(json!({ "account_id": context.alice.id() })) .await? .json()?; - step!(TAG, " = {}", alice_after); + info!(value = %alice_after, "alice balance"); assert_eq!(0_u128, alice_after.parse::()?); - step!(TAG, "view ft_balance_of(bob)"); + info!("view ft_balance_of(bob)"); let bob_balance: String = context .sweat .view("ft_balance_of") - .args_json(json!({ "account_id": context.bob.id() })) + .args_json(json!({ "account_id": context.bob().id() })) .await? .json()?; - step!(TAG, " = {}", bob_balance); + info!(value = %bob_balance, "bob balance"); assert_eq!(alice_balance, bob_balance); - step!(TAG, "done"); + info!("done"); Ok(()) } From b22e96e409762128eb2c73f14cadcca9ec0b6f5f Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 18 May 2026 15:23:31 +0100 Subject: [PATCH 07/46] feat: add access control extension --- Cargo.lock | 4154 ++++++++++++++++++++++++++++++++++++----- Cargo.toml | 1 + Makefile | 2 +- contract/Cargo.toml | 6 +- contract/src/api.rs | 1 - contract/src/defer.rs | 9 +- contract/src/lib.rs | 212 +-- model/src/lib.rs | 6 - res/sweat.wasm | Bin 273524 -> 386796 bytes res/sweat_abi.json | 598 +++++- res/sweat_abi.zst | Bin 1492 -> 2188 bytes 11 files changed, 4392 insertions(+), 597 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 89b1e89..77f0bec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,30 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -23,18 +47,160 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + [[package]] name = "borsh" version = "1.3.1" @@ -52,13 +218,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" dependencies = [ "once_cell", - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "syn_derive", ] +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "bs58" version = "0.5.0" @@ -70,9 +242,33 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +dependencies = [ + "allocator-api2", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "bytesize" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "2e93abca9e28e0a1b9877922aacb20576e05d4679ffa78c3d6dc22a26a216659" +dependencies = [ + "serde", +] [[package]] name = "cc" @@ -81,6 +277,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -112,756 +310,3483 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] -name = "core-foundation-sys" -version = "0.8.4" +name = "clap" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +dependencies = [ + "clap_builder", + "clap_derive", +] [[package]] -name = "darling" -version = "0.20.11" +name = "clap_builder" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ - "darling_core", - "darling_macro", + "anstream", + "anstyle", + "clap_lex", + "strsim", ] [[package]] -name = "darling_core" -version = "0.20.11" +name = "clap_derive" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ - "fnv", - "ident_case", + "heck 0.5.0", "proc-macro2", "quote", - "strsim", - "syn", + "syn 2.0.117", ] [[package]] -name = "darling_macro" -version = "0.20.11" +name = "clap_lex" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core", - "quote", - "syn", -] +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] -name = "deranged" -version = "0.5.8" +name = "cobs" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "powerfmt", - "serde_core", + "thiserror 2.0.18", ] [[package]] -name = "dyn-clone" -version = "1.0.20" +name = "colorchoice" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +name = "contract" +version = "1.2.1" +dependencies = [ + "near-contract-standards", + "near-plugins", + "near-sdk", + "static_assertions", +] [[package]] -name = "exploit-stub" -version = "0.1.0" +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ - "near-sdk", + "unicode-segmentation", ] [[package]] -name = "find-msvc-tools" -version = "0.1.9" +name = "core-foundation-sys" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] -name = "fnv" -version = "1.0.7" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] [[package]] -name = "futures-core" -version = "0.3.32" +name = "cranelift-assembler-x64" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "44f81cede359311706057b689b91b59f464926de0316f389898a2b028cb494fa" +dependencies = [ + "cranelift-assembler-x64-meta", +] [[package]] -name = "futures-task" -version = "0.3.32" +name = "cranelift-assembler-x64-meta" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "fa6ca11305de425ea08884097b913ebe1a83875253b3c0063ce28411e226bfdc" +dependencies = [ + "cranelift-srcgen", +] [[package]] -name = "futures-util" -version = "0.3.32" +name = "cranelift-bforest" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "7537341a9a4ba9812141927be733e7254bf2318aab6597d567af9cad90609f27" dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "slab", + "cranelift-entity", ] [[package]] -name = "hashbrown" -version = "0.12.3" +name = "cranelift-bitset" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "d28a4ca5faf25ff821fcc768f26e68ffef505e9f71bb06e608862d941fa65086" +dependencies = [ + "serde", + "serde_derive", +] [[package]] -name = "hashbrown" -version = "0.17.1" +name = "cranelift-codegen" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +checksum = "d891057fe1b73910c41e73b32a70fa8454092fce65942b5fa6f72aa6d5487f8a" +dependencies = [ + "bumpalo", + "cranelift-assembler-x64", + "cranelift-bforest", + "cranelift-bitset", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-control", + "cranelift-entity", + "cranelift-isle", + "gimli", + "hashbrown 0.15.5", + "log", + "pulley-interpreter", + "regalloc2", + "rustc-hash", + "serde", + "smallvec", + "target-lexicon", + "wasmtime-internal-math", +] [[package]] -name = "heck" -version = "0.5.0" +name = "cranelift-codegen-meta" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "c29a66028a78eedc534b3a94e5ebfbaeb4e1f6b09038afe41bb24afd614faa4b" +dependencies = [ + "cranelift-assembler-x64-meta", + "cranelift-codegen-shared", + "cranelift-srcgen", + "heck 0.5.0", + "pulley-interpreter", +] [[package]] -name = "hex" -version = "0.4.3" +name = "cranelift-codegen-shared" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "95809ad251fe9422087b4a72d61e584d6ab6eff44dee1335f93cfaea0bedc9ac" [[package]] -name = "iana-time-zone" -version = "0.1.58" +name = "cranelift-control" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "f79d0cacf063c297e5e8d5b73cb355b41b87f6d248e252d1b284e7a7b73673c2" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "arbitrary", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "cranelift-entity" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "b2d73297a195ce3be55997c6307142c4b1e58dd0c2f18ceaa0179444024e312a" dependencies = [ - "cc", + "cranelift-bitset", + "serde", + "serde_derive", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "cranelift-frontend" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "3be38d1ae29ef7c5d611fc6cb694f698dc4ca44152dcaa112ec0fef8d4d34858" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] [[package]] -name = "indexmap" -version = "1.9.3" +name = "cranelift-isle" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] +checksum = "6761926f6636209de7ac568be28b206890f2181761375b9722e0a1e7a7e1637a" [[package]] -name = "indexmap" -version = "2.14.0" +name = "cranelift-native" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "0893472f73f0d530a28e9a573ada6d1f93b9659bb6734dfe17061ac967bd1830" dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", + "cranelift-codegen", + "libc", + "target-lexicon", ] [[package]] -name = "itoa" -version = "1.0.9" +name = "cranelift-srcgen" +version = "0.123.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "c1daccebabb1ccd034dbab0eacc0722af27d3cccc7929dea27a3546cb3562e40" [[package]] -name = "js-sys" -version = "0.3.98" +name = "crc32fast" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if 1.0.0", - "futures-util", - "once_cell", - "wasm-bindgen", ] [[package]] -name = "libc" -version = "0.2.186" +name = "crossbeam-channel" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] [[package]] -name = "memory_units" -version = "0.4.0" +name = "crossbeam-deque" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] [[package]] -name = "near-abi" -version = "0.4.3" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c49593c9e94454a2368a4c0a511bf4bf1413aff4d23f16e1d8f4e64b5215351" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "borsh", - "schemars 0.8.22", - "semver", - "serde", + "crossbeam-utils", ] [[package]] -name = "near-account-id" -version = "2.6.0" +name = "crossbeam-utils" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" -dependencies = [ - "borsh", - "schemars 0.8.22", - "serde", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "near-contract-standards" -version = "5.26.1" -dependencies = [ - "near-sdk", -] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] -name = "near-gas" -version = "0.3.6" +name = "crypto-common" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c33c9c86e05da946358485fa6e7e881a09726f909fbd8bcf357f998d7d03d" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "borsh", - "schemars 0.8.22", - "serde", + "generic-array", + "typenum", ] [[package]] -name = "near-sdk" -version = "5.26.1" +name = "curve25519-dalek" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f78c9d9392f3a0c5acba9e1dd3ea89554804a2c1b533170cc5cce00e483a4e" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "base64", - "borsh", - "bs58", - "near-abi", - "near-account-id", - "near-gas", - "near-sdk-macros", - "near-sys", - "near-token", - "once_cell", - "schemars 0.8.22", - "serde", - "serde_json", - "serde_with", - "wee_alloc", + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", ] [[package]] -name = "near-sdk-macros" -version = "5.26.1" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0bdc1666723a140e41ec8a14cf0b11b5e3ecf8ab55ed7e66d995c962fbac77" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "Inflector", - "darling", "proc-macro2", "quote", - "serde", - "serde_json", - "strum", - "strum_macros", - "syn", + "syn 2.0.117", ] [[package]] -name = "near-sys" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c212278351251aa342eab33a9d64f99294bc5784cda10107867a72dda699bb" - -[[package]] -name = "near-token" -version = "0.3.4" +name = "darling" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8000d5859172ce4cd29d51ae1af18a80571939f2975ffcae2c00d241ef4507" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "borsh", - "schemars 0.8.22", - "serde", + "darling_core", + "darling_macro", ] [[package]] -name = "num-conv" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" - -[[package]] -name = "num-traits" -version = "0.2.17" +name = "darling_core" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ - "autocfg", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", ] [[package]] -name = "once_cell" -version = "1.21.4" +name = "darling_macro" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] [[package]] -name = "pin-project-lite" -version = "0.2.17" +name = "deranged" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "derive_arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] [[package]] -name = "proc-macro-crate" -version = "3.1.0" +name = "derive_builder" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "toml_edit", + "derive_builder_macro", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "derive_builder_core" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "proc-macro-error-attr", + "darling", "proc-macro2", "quote", - "version_check", + "syn 2.0.117", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "derive_builder_macro" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "derive_builder_core", + "syn 2.0.117", ] [[package]] -name = "proc-macro2" -version = "1.0.106" +name = "derive_more" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ - "unicode-ident", + "derive_more-impl", ] [[package]] -name = "quote" -version = "1.0.45" +name = "derive_more-impl" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ + "convert_case", "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", + "unicode-xid", ] [[package]] -name = "ref-cast" -version = "1.0.25" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "ref-cast-impl", + "block-buffer", + "crypto-common", + "subtle", ] [[package]] -name = "ref-cast-impl" -version = "1.0.25" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] -name = "rustversion" -version = "1.0.14" +name = "dissimilar" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" [[package]] -name = "schemars" -version = "0.8.22" +name = "dyn-clone" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] -name = "schemars" -version = "0.9.0" +name = "easy-ext" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", + "signature", ] [[package]] -name = "schemars_derive" -version = "0.8.22" +name = "ed25519-dalek" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn", + "curve25519-dalek", + "ed25519", + "sha2", + "subtle", ] [[package]] -name = "semver" -version = "1.0.28" +name = "either" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] -name = "serde" -version = "1.0.228" +name = "embedded-io" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" [[package]] -name = "serde_core" -version = "1.0.228" +name = "embedded-io" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] -name = "serde_derive" -version = "1.0.228" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ - "proc-macro2", - "quote", - "syn", + "enum-map-derive", ] [[package]] -name = "serde_derive_internals" -version = "0.29.1" +name = "enum-map-derive" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] -name = "serde_json" -version = "1.0.149" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "indexmap 2.14.0", - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "serde_with" -version = "3.13.0" +name = "errno" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ - "base64", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.0", - "schemars 0.8.22", - "schemars 0.9.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", + "libc", + "windows-sys 0.61.2", ] [[package]] -name = "serde_with_macros" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +name = "exploit-stub" +version = "0.1.0" dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn", + "near-sdk", ] [[package]] -name = "shlex" -version = "1.3.0" +name = "fallible-iterator" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] -name = "slab" -version = "0.4.12" +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "finite-wasm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d81b511929c2669eaf64e36471cf27c2508133e62ade9d49e608e8d675e7854" +dependencies = [ + "bitvec", + "dissimilar", + "num-traits", + "prefix-sum-vec", + "thiserror 1.0.69", + "wasm-encoder 0.27.0", + "wasmparser 0.105.0", + "wasmprinter 0.2.57", +] + +[[package]] +name = "finite-wasm" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dce601f45d7bbc875827d3c35fa00f7dfc00ec63cdf327ff34b54ab1f2ac1ad" +dependencies = [ + "bitvec", + "dissimilar", + "num-traits", + "prefix-sum-vec", + "thiserror 1.0.69", + "wasmparser 0.228.0", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +dependencies = [ + "fallible-iterator", + "indexmap 2.14.0", + "stable_deref_trait", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "h2" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.14.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +dependencies = [ + "cfg-if 1.0.0", + "futures-util", + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json_comments" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbbfed4e59ba9750e15ba154fdfd9329cee16ff3df539c2666b70f58cc32105" + +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "leb128" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cc46bac87ef8093eed6f272babb833b6443374399985ac8ed28471ee0918545" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memfd" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" +dependencies = [ + "rustix", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "near-abi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c49593c9e94454a2368a4c0a511bf4bf1413aff4d23f16e1d8f4e64b5215351" +dependencies = [ + "borsh", + "schemars 0.8.22", + "semver", + "serde", +] + +[[package]] +name = "near-account-id" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702dbca982e748975658812c7be2ca53211f454137486f98f6cf768934e2cb29" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "near-config-utils" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec642cfa4996ff9d4bc813abe2cb0ace9f42ffbdd3a5e1a551c3acfd1e7d3ce" +dependencies = [ + "anyhow", + "json_comments", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "near-contract-standards" +version = "5.26.1" +dependencies = [ + "near-sdk", +] + +[[package]] +name = "near-crypto" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "500f7b87df742cc0660c3111b67a6304e5ff95710ceee05e52e5d21e50af57bc" +dependencies = [ + "blake2", + "borsh", + "bs58 0.4.0", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "hex", + "near-account-id", + "near-config-utils", + "near-schema-checker-lib", + "near-stdx", + "primitive-types", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "near-fmt" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f87e301ffb364a91c51746fc6f7f8ca809c22e1393459ecef560d086b3745a" +dependencies = [ + "near-primitives-core", +] + +[[package]] +name = "near-gas" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c33c9c86e05da946358485fa6e7e881a09726f909fbd8bcf357f998d7d03d" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "near-o11y" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80944dc4ec487bfb5140f7b5e54c743f0dbc0a3ad45ea41bd1d7c78ad7e5512f" +dependencies = [ + "base64 0.21.7", + "clap", + "near-crypto", + "near-primitives-core", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "parking_lot", + "prometheus", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", +] + +[[package]] +name = "near-parameters" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67aae312a7529a6067d67df4dc606622b6bdea3cb94f3ef096c3c4e9c9f28184" +dependencies = [ + "borsh", + "enum-map", + "near-account-id", + "near-primitives-core", + "near-schema-checker-lib", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum 0.24.1", + "thiserror 2.0.18", +] + +[[package]] +name = "near-plugins" +version = "0.5.1" +source = "git+https://github.com/near/near-plugins.git?tag=v0.5.1#312e016e0574d5756f6eba37acc82d9a237b2e3e" +dependencies = [ + "bitflags 1.3.2", + "near-plugins-derive", + "near-sdk", + "serde", +] + +[[package]] +name = "near-plugins-derive" +version = "0.5.1" +source = "git+https://github.com/near/near-plugins.git?tag=v0.5.1#312e016e0574d5756f6eba37acc82d9a237b2e3e" +dependencies = [ + "darling", + "proc-macro-crate 0.1.5", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "near-primitives" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad915ada7ceed7aafa5bfc9ccdc8b57d72972c485f69753c3c37c042d8cd5da" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "bitvec", + "borsh", + "bytes", + "bytesize", + "chrono", + "derive_builder", + "derive_more", + "easy-ext", + "enum-map", + "hex", + "itertools", + "near-crypto", + "near-fmt", + "near-parameters", + "near-primitives-core", + "near-schema-checker-lib", + "near-stdx", + "near-time", + "num-rational", + "ordered-float", + "primitive-types", + "serde", + "serde_json", + "serde_with", + "sha3", + "smallvec", + "smart-default", + "strum 0.24.1", + "thiserror 2.0.18", + "tracing", + "zstd", +] + +[[package]] +name = "near-primitives-core" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0840a2e187c91aec833de7a001738bb4b07384ad28e449366ea481a5fe02e861" +dependencies = [ + "arbitrary", + "base64 0.21.7", + "borsh", + "bs58 0.4.0", + "derive_more", + "enum-map", + "near-account-id", + "near-gas", + "near-schema-checker-lib", + "near-token", + "num-rational", + "serde", + "serde_repr", + "serde_with", + "sha2", + "thiserror 2.0.18", +] + +[[package]] +name = "near-schema-checker-core" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d573e560c907f9f89602cf1c748505f1bf93adc1ea11de1eae96579a4e23fee9" + +[[package]] +name = "near-schema-checker-lib" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4daf9accc21c16ea994d309de64f996afffa2f9846ae7386fe98e3c8043bd1" +dependencies = [ + "near-schema-checker-core", + "near-schema-checker-macro", +] + +[[package]] +name = "near-schema-checker-macro" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee4669ee1f3f8d0fe467c367188d6bf7ba17c215f5b2c0edec593cf4b76bbb3" + +[[package]] +name = "near-sdk" +version = "5.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f78c9d9392f3a0c5acba9e1dd3ea89554804a2c1b533170cc5cce00e483a4e" +dependencies = [ + "base64 0.22.1", + "borsh", + "bs58 0.5.0", + "near-abi", + "near-account-id", + "near-crypto", + "near-gas", + "near-parameters", + "near-primitives", + "near-primitives-core", + "near-sdk-macros", + "near-sys", + "near-token", + "near-vm-runner", + "once_cell", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_with", + "unicode-segmentation", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "5.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0bdc1666723a140e41ec8a14cf0b11b5e3ecf8ab55ed7e66d995c962fbac77" +dependencies = [ + "Inflector", + "darling", + "proc-macro2", + "quote", + "serde", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "syn 2.0.117", +] + +[[package]] +name = "near-stdx" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "586d4ca605c2540a158a4c89d46de0d2649fe52bb94db6a0ddff42a243d37d04" + +[[package]] +name = "near-sys" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c212278351251aa342eab33a9d64f99294bc5784cda10107867a72dda699bb" + +[[package]] +name = "near-time" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e058f77b8ea607c03f77727bd39282bf55222841cd084e921e1037647f38cac" +dependencies = [ + "parking_lot", + "serde", + "time", +] + +[[package]] +name = "near-token" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8000d5859172ce4cd29d51ae1af18a80571939f2975ffcae2c00d241ef4507" +dependencies = [ + "borsh", + "schemars 0.8.22", + "serde", +] + +[[package]] +name = "near-vm-runner" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a154d855ac0c32e41b671a4c3a34d206fed24c16d7e73ebe6fe36495bae97b51" +dependencies = [ + "anyhow", + "blst", + "borsh", + "bytesize", + "ed25519-dalek", + "enum-map", + "finite-wasm 0.5.0", + "finite-wasm 0.6.0", + "lru", + "near-crypto", + "near-o11y", + "near-parameters", + "near-primitives-core", + "near-schema-checker-lib", + "near-stdx", + "num-rational", + "parking_lot", + "prefix-sum-vec", + "prometheus", + "rand 0.8.6", + "rayon", + "ripemd", + "rustix", + "serde", + "sha2", + "sha3", + "strum 0.24.1", + "tempfile", + "thiserror 2.0.18", + "tracing", + "wasm-encoder 0.236.1", + "wasmparser 0.236.1", + "wasmparser 0.78.2", + "wasmtime", + "zeropool-bn", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "crc32fast", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "opentelemetry" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b" +dependencies = [ + "http", + "opentelemetry", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost", + "thiserror 2.0.18", + "tokio", + "tonic", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d059a296a47436748557a353c5e6c5705b9470ef6c95cfc52c21a8814ddac2" + +[[package]] +name = "opentelemetry_sdk" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry", + "percent-encoding", + "rand 0.9.4", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-stream", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "borsh", + "num-traits", + "rand 0.8.6", + "serde", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prefix-sum-vec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror 1.0.69", +] + +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pulley-interpreter" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b78fdec962b639b921badfcfe77db7d18aa3c0c1e292ac2aa268c0efe8fe683" +dependencies = [ + "cranelift-bitset", + "log", + "pulley-macros", + "wasmtime-internal-math", +] + +[[package]] +name = "pulley-macros" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f718f4e8cd5fdfa08b3b1d2d25fe288350051be330544305f0a9b93a937b3d42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", + "serde", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.1", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regalloc2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5216b1837de2149f8bc8e6d5f88a9326b63b8c836ed58ce4a0a29ec736a59734" +dependencies = [ + "allocator-api2", + "bumpalo", + "hashbrown 0.15.5", + "log", + "rustc-hash", + "smallvec", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest", +] + +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_with" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.8.22", + "schemars 0.9.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.14.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] -name = "static_assertions" -version = "1.1.0" +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "smart-default" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.117", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] [[package]] -name = "strsim" -version = "0.11.1" +name = "tower" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 2.14.0", + "pin-project-lite", + "slab", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] [[package]] -name = "strum" -version = "0.26.3" +name = "tower-layer" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] -name = "strum_macros" -version = "0.26.4" +name = "tower-service" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" +dependencies = [ + "crossbeam-channel", + "symlink", + "thiserror 2.0.18", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ - "heck", "proc-macro2", "quote", - "rustversion", - "syn", + "syn 2.0.117", ] [[package]] -name = "sweat" -version = "1.2.1" +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ - "near-contract-standards", - "near-sdk", + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c" +dependencies = [ + "js-sys", + "once_cell", + "opentelemetry", + "opentelemetry_sdk", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", + "web-time", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", "static_assertions", ] [[package]] -name = "syn" -version = "2.0.117" +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen 0.51.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.121" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.121" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ - "proc-macro2", "quote", - "unicode-ident", + "wasm-bindgen-macro-support", ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "wasm-bindgen-macro-support" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ - "proc-macro-error", + "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", + "wasm-bindgen-shared", ] [[package]] -name = "time" -version = "0.3.47" +name = "wasm-bindgen-shared" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", + "unicode-ident", ] [[package]] -name = "time-core" -version = "0.1.8" +name = "wasm-encoder" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "e77053dc709db790691d3732cfc458adc5acc881dec524965c608effdcd9c581" +dependencies = [ + "leb128", +] [[package]] -name = "time-macros" -version = "0.2.27" +name = "wasm-encoder" +version = "0.236.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "724fccfd4f3c24b7e589d333fc0429c68042897a7e8a5f8694f31792471841e7" dependencies = [ - "num-conv", - "time-core", + "leb128fmt", + "wasmparser 0.236.1", ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ - "tinyvec_macros", + "leb128fmt", + "wasmparser 0.244.0", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "wasm-metadata" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder 0.244.0", + "wasmparser 0.244.0", +] + +[[package]] +name = "wasmparser" +version = "0.78.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" + +[[package]] +name = "wasmparser" +version = "0.105.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83be9e0b3f9570dc1979a33ae7b89d032c73211564232b99976553e5c155ec32" +dependencies = [ + "indexmap 1.9.3", + "url", +] + +[[package]] +name = "wasmparser" +version = "0.228.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abf1132c1fdf747d56bbc1bb52152400c70f336870f968b85e89ea422198ae3" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", + "serde", +] + +[[package]] +name = "wasmparser" +version = "0.236.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9b1e81f3eb254cf7404a82cee6926a4a3ccc5aad80cc3d43608a070c67aa1d7" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", + "serde", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + +[[package]] +name = "wasmprinter" +version = "0.2.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b0e5ed7a74a065637f0d7798ce5f29cadb064980d24b0c82af5200122fa0d8" +dependencies = [ + "anyhow", + "wasmparser 0.105.0", +] + +[[package]] +name = "wasmprinter" +version = "0.236.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2df225df06a6df15b46e3f73ca066ff92c2e023670969f7d50ce7d5e695abbb1" +dependencies = [ + "anyhow", + "termcolor", + "wasmparser 0.236.1", +] + +[[package]] +name = "wasmtime" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10306ead921db2c4645ff99867b7539b65e18afd8816d471547f5e6f3b09492" +dependencies = [ + "addr2line", + "anyhow", + "bitflags 2.11.1", + "bumpalo", + "cc", + "cfg-if 1.0.0", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "libc", + "log", + "mach2", + "memfd", + "object", + "once_cell", + "postcard", + "pulley-interpreter", + "rayon", + "rustix", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasmparser 0.236.1", + "wasmtime-environ", + "wasmtime-internal-asm-macros", + "wasmtime-internal-cranelift", + "wasmtime-internal-fiber", + "wasmtime-internal-jit-debug", + "wasmtime-internal-jit-icache-coherence", + "wasmtime-internal-math", + "wasmtime-internal-slab", + "wasmtime-internal-unwinder", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.60.2", +] + +[[package]] +name = "wasmtime-environ" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7fb2c37ca263d444f33871bf0221e7de0707b2b2bb88165df6db6d58c73375f" +dependencies = [ + "anyhow", + "cranelift-bitset", + "cranelift-entity", + "gimli", + "indexmap 2.14.0", + "log", + "object", + "postcard", + "serde", + "serde_derive", + "smallvec", + "target-lexicon", + "wasm-encoder 0.236.1", + "wasmparser 0.236.1", + "wasmprinter 0.236.1", +] + +[[package]] +name = "wasmtime-internal-asm-macros" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19c6c0d3c8d2db554a3af8e8d413ff2815362ebce0911808ecfdaaa257438f93" +dependencies = [ + "cfg-if 1.0.0", +] [[package]] -name = "toml_datetime" -version = "0.6.5" +name = "wasmtime-internal-cranelift" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "5a2412f2afb0a5db2a4ac1cfff73247e240aeaa90bf41497ad0a5084b6a24eca" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "cranelift-codegen", + "cranelift-control", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "gimli", + "itertools", + "log", + "object", + "pulley-interpreter", + "smallvec", + "target-lexicon", + "thiserror 2.0.18", + "wasmparser 0.236.1", + "wasmtime-environ", + "wasmtime-internal-math", + "wasmtime-internal-versioned-export-macros", +] [[package]] -name = "toml_edit" -version = "0.21.0" +name = "wasmtime-internal-fiber" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "ecfdc460dd5d343d88ff1ffaf65ae019feeb6124ddcfd3f39d28331068d25b1f" dependencies = [ - "indexmap 2.14.0", - "toml_datetime", - "winnow", + "anyhow", + "cc", + "cfg-if 1.0.0", + "libc", + "rustix", + "wasmtime-internal-asm-macros", + "wasmtime-internal-versioned-export-macros", + "windows-sys 0.60.2", ] [[package]] -name = "unicode-ident" -version = "1.0.12" +name = "wasmtime-internal-jit-debug" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "b5abb428a71827b7f90fc64406749883ccc6e58addf6d36974d5e06942011707" +dependencies = [ + "cc", + "wasmtime-internal-versioned-export-macros", +] [[package]] -name = "version_check" -version = "0.9.4" +name = "wasmtime-internal-jit-icache-coherence" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "ba6cc13f14c3fb83fb877cb1d5c605e93f7ec1bf7fc1a5e8b361209d2f8ca028" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "libc", + "windows-sys 0.60.2", +] [[package]] -name = "wasm-bindgen" -version = "0.2.121" +name = "wasmtime-internal-math" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "1cb209473a09f4dbd9c87bb9f18b8dcb0c9da30d12a260e3eacf7a1a53b41480" dependencies = [ - "cfg-if 1.0.0", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", + "libm", ] [[package]] -name = "wasm-bindgen-macro" -version = "0.2.121" +name = "wasmtime-internal-slab" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "aab4df5a04752106e1ecef9d40145ef28fa033b0d5dd3c839c9b208b2d522183" + +[[package]] +name = "wasmtime-internal-unwinder" +version = "36.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5359875d29bddb6f7e65e698157714d8d35ebd8ea2a92893d05d6b062147b639" dependencies = [ - "quote", - "wasm-bindgen-macro-support", + "anyhow", + "cfg-if 1.0.0", + "cranelift-codegen", + "log", + "object", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.121" +name = "wasmtime-internal-versioned-export-macros" +version = "36.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "2e247bcdd69701743ba386c933b26ebad2ce912ff9cb68b5b71fdb29d39ba04a" dependencies = [ - "bumpalo", "proc-macro2", "quote", - "syn", - "wasm-bindgen-shared", + "syn 2.0.117", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.121" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "unicode-ident", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -892,6 +3817,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -904,7 +3838,31 @@ version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", ] [[package]] @@ -913,13 +3871,30 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -928,42 +3903,90 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" version = "0.5.17" @@ -973,8 +3996,275 @@ dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.14.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder 0.244.0", + "wasm-metadata", + "wasmparser 0.244.0", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser 0.244.0", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.6", + "rustc-hex", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 737f27c..5b14547 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,4 @@ resolver = "2" [workspace.dependencies] near-sdk = "5.26.1" near-contract-standards = { path = "vendors/near-contract-standards" } +near-plugins = { git = "https://github.com/near/near-plugins.git", tag = "v0.5.1" } diff --git a/Makefile b/Makefile index 2f776c3..9863d6b 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ cov: ##@Testing Run unit tests with coverage. cargo llvm-cov --hide-instantiations --open test: ##@Testing Run unit tests. - cargo test --package sweat + cargo test --package contract integration: build-integration ##@Testing Run integration tests. cd integration-tests && cargo test diff --git a/contract/Cargo.toml b/contract/Cargo.toml index 0d28332..02b7257 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sweat" +name = "contract" version = "1.2.1" authors = [] edition = "2021" @@ -16,3 +16,7 @@ integration-test = [] static_assertions = "1.1.0" near-sdk = { workspace = true } near-contract-standards = { workspace = true } +near-plugins = { workspace = true } + +[dev-dependencies] +near-sdk = { workspace = true, features = ["unit-testing"] } diff --git a/contract/src/api.rs b/contract/src/api.rs index 0368c15..3106ee6 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -7,7 +7,6 @@ pub trait SweatApi { fn new(postfix: Option) -> Self; fn add_oracle(&mut self, account_id: &AccountId); fn remove_oracle(&mut self, account_id: &AccountId); - fn get_oracles(&self) -> Vec; fn tge_mint(&mut self, account_id: &AccountId, amount: U128); fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); fn burn(&mut self, amount: U128); diff --git a/contract/src/defer.rs b/contract/src/defer.rs index ed5c494..d921e3d 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -8,24 +8,21 @@ use near_sdk::{ AccountId, Gas, NearToken, Promise, PromiseOrValue, }; -use crate::{api::SweatDefer, internal_deposit, Contract, ContractExt}; +use crate::{api::SweatDefer, internal_deposit, Contract, ContractExt, Role}; +use near_plugins::{access_control_any, AccessControlRole, AccessControllable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); #[near] impl SweatDefer for Contract { + #[access_control_any(roles(Role::Oracle))] fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { require!( env::prepaid_gas() > GAS_FOR_DEFER, "Not enough gas to complete the operation" ); - require!( - self.oracles.contains(&env::predecessor_account_id()), - "Unauthorized access! Only oracle can call that!" - ); - let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); let mut total_effective: U128 = U128(0); let mut total_fee: U128 = U128(0); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 3c7c521..d59de5c 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -7,11 +7,14 @@ use near_contract_standards::fungible_token::{ metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, Balance, FungibleToken, }; +use near_plugins::{access_control, access_control_any, AccessControlRole, AccessControllable}; use near_sdk::{ collections::UnorderedSet, env, json_types::{U128, U64}, - near, require, AccountId, PanicOnDefault, + near, require, + serde::{Deserialize, Serialize}, + AccountId, PanicOnDefault, }; mod api; @@ -20,7 +23,14 @@ mod defer; mod integration; mod math; +#[derive(AccessControlRole, Deserialize, Serialize, Clone, Copy)] +#[serde(crate = "near_sdk::serde")] +pub enum Role { + Oracle, +} + #[near(contract_state)] +#[access_control(role_type(Role))] #[derive(PanicOnDefault)] pub struct Contract { oracles: UnorderedSet, @@ -33,40 +43,30 @@ pub struct Contract { impl SweatApi for Contract { #[init] fn new(postfix: Option) -> Self { - Self { + let mut contract = Self { oracles: UnorderedSet::new(b"s"), token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), - } + }; + + contract.acl_init_super_admin(env::current_account_id()); + + contract } + + #[private] fn add_oracle(&mut self, account_id: &AccountId) { - require!( - env::predecessor_account_id() == env::current_account_id(), - "Unauthorized access! Only token owner can add oracles!" - ); - require!(self.oracles.insert(account_id), "Already exists!"); - env::log_str(&format!("Oracle {account_id} was added")); + self.acl_grant_role(Role::Oracle.into(), account_id.clone()); } + #[private] fn remove_oracle(&mut self, account_id: &AccountId) { - require!( - env::predecessor_account_id() == env::current_account_id(), - "Unauthorized access! Only token owner can remove oracles!" - ); - require!(self.oracles.remove(account_id), "No such oracle was found!"); - env::log_str(&format!("Oracle {account_id} was removed")); - } - - fn get_oracles(&self) -> Vec { - self.oracles.to_vec() + self.acl_revoke_role(Role::Oracle.into(), account_id.clone()); } + #[private] fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { - require!( - env::predecessor_account_id() == env::current_account_id(), - "Unauthorized access! Only token owner can do TGE!" - ); internal_deposit(&mut self.token, account_id, amount.0); FtMint { owner_id: account_id, @@ -76,11 +76,8 @@ impl SweatApi for Contract { .emit(); } + #[private] fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { - require!( - env::predecessor_account_id() == env::current_account_id(), - "Unauthorized access! Only token owner can do TGE!" - ); let mut events = Vec::with_capacity(batch.len()); for (account_id, steps_count) in &batch { // let steps_count = steps_count.0; @@ -112,11 +109,8 @@ impl SweatApi for Contract { self.steps_since_tge } + #[access_control_any(roles(Role::Oracle))] fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) { - require!( - self.oracles.contains(&env::predecessor_account_id()), - "Unauthorized access! Only oracle can call that!" - ); let mut oracle_fee: U128 = U128(0); let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); let mut events = Vec::with_capacity(steps_batch.len() + 1); @@ -159,12 +153,8 @@ impl RestrictionApi for Contract { self.denylist.contains(account_id) } + #[private] fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool) { - require!( - env::predecessor_account_id() == env::current_account_id(), - "Unauthorized access! Only token owner can do restrict accounts!" - ); - if is_restricted { self.denylist.insert(account_id); } else { @@ -225,29 +215,38 @@ impl FungibleTokenMetadataProvider for Contract { #[cfg(test)] mod tests { + use std::str::FromStr; + use near_contract_standards::fungible_token::core::FungibleTokenCore; + use near_plugins::AccessControllable; use near_sdk::{ json_types::{U128, U64}, test_utils::VMContextBuilder, - testing_env, AccountId, + testing_env, AccountId, NearToken, }; - use sweat_model::{RestrictionApi, SweatApi}; - use crate::Contract; + use crate::{ + api::{RestrictionApi, SweatApi}, + Contract, Role, + }; const EPS: f64 = 0.00001; + fn account_id(account_id: &str) -> AccountId { + AccountId::from_str(account_id).unwrap() + } + fn sweat_the_token() -> AccountId { - AccountId::new_unchecked("sweat_the_token".to_string()) + account_id("sweat_the_token") } fn sweat_oracle() -> AccountId { - AccountId::new_unchecked("sweat_the_oracle".to_string()) + account_id("sweat_the_oracle") } fn user1() -> AccountId { - AccountId::new_unchecked("sweat_user1".to_string()) + account_id("sweat_user1") } fn user2() -> AccountId { - AccountId::new_unchecked("sweat_user2".to_string()) + account_id("sweat_user2") } fn get_context(owner: AccountId, sender: AccountId) -> VMContextBuilder { @@ -256,85 +255,20 @@ mod tests { .current_account_id(owner.clone()) .signer_account_id(sender.clone()) .predecessor_account_id(sender) - .attached_deposit(1); - builder - } - - #[test] - #[should_panic(expected = r#"Unauthorized access! Only token owner can add oracles!"#)] - fn add_oracle_access() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); - token.add_oracle(&sweat_oracle()); - } - - #[test] - #[should_panic(expected = r#"Unauthorized access! Only token owner can remove oracles!"#)] - fn remove_oracle_access() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); - testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); - token.remove_oracle(&sweat_oracle()); - } - - #[test] - #[should_panic(expected = r#"Already exists!"#)] - fn add_same_oracle() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - token.add_oracle(&sweat_oracle()); - } + .attached_deposit(NearToken::from_yoctonear(1)); - #[test] - #[should_panic(expected = r#"No such oracle was found!"#)] - fn remove_fake_oracle() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); - token.remove_oracle(&user1()); + builder } #[test] fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); + assert_eq!(vec![sweat_oracle()], get_oracles(&token)); token.remove_oracle(&sweat_oracle()); - assert!(token.get_oracles().is_empty()); - } - - #[test] - #[should_panic(expected = r#"Unauthorized access! Only oracle can call that!"#)] - fn mint_steps_access_1() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); - token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); - } - - #[test] - #[should_panic(expected = r#"Unauthorized access! Only oracle can call that!"#)] - fn minting_steps_access_2() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); - testing_env!(get_context(sweat_the_token(), user1()).build()); - token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); + assert!(get_oracles(&token).is_empty()); } #[test] @@ -342,9 +276,9 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); assert_eq!(U64(0), token.get_steps_since_tge()); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - assert_eq!(vec![sweat_oracle()], token.get_oracles()); + assert_eq!(vec![sweat_oracle()], get_oracles(&token)); testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); @@ -353,35 +287,11 @@ mod tests { assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); } - #[test] - #[should_panic(expected = r#"Unauthorized access! Only token owner can do TGE!"#)] - fn tge_access_1() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); - token.add_oracle(&sweat_oracle()); - testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); - token.tge_mint(&user1(), U128(9499999991723028480)); - } - - #[test] - #[should_panic(expected = r#"Unauthorized access! Only token owner can do TGE!"#)] - fn tge_access_2() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); - token.add_oracle(&sweat_oracle()); - testing_env!(get_context(sweat_the_token(), user1()).build()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); - } - #[test] fn tge_liquid() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); @@ -391,7 +301,7 @@ mod tests { fn tge_liquid_batch() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -405,11 +315,11 @@ mod tests { fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); - token.burn(&U128(9499999991723028480)); + token.burn(U128(9499999991723028480)); assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); } @@ -418,7 +328,7 @@ mod tests { fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -434,7 +344,7 @@ mod tests { fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -454,7 +364,7 @@ mod tests { fn transfer_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -471,7 +381,7 @@ mod tests { fn transfer_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -488,7 +398,7 @@ mod tests { fn ft_transfer_call_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -505,7 +415,7 @@ mod tests { fn ft_transfer_call_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert!(token.get_oracles().is_empty()); + assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -516,4 +426,8 @@ mod tests { testing_env!(get_context(sweat_the_token(), user1()).build()); token.ft_transfer_call(user2(), U128(9499999991723028480), None, String::from("test")); } + + fn get_oracles(contract: &Contract) -> Vec { + contract.acl_get_grantees(Role::Oracle.into(), 0, 10) + } } diff --git a/model/src/lib.rs b/model/src/lib.rs index f9dc3a8..d737361 100644 --- a/model/src/lib.rs +++ b/model/src/lib.rs @@ -6,16 +6,10 @@ use near_sdk::{ AccountId, PromiseOrValue, }; -#[cfg(feature = "integration-test")] -pub struct SweatContract<'a> { - pub contract: &'a near_workspaces::Contract, -} - pub trait SweatApi { fn new(postfix: Option) -> Self; fn add_oracle(&mut self, account_id: &AccountId); fn remove_oracle(&mut self, account_id: &AccountId); - fn get_oracles(&self) -> Vec; fn tge_mint(&mut self, account_id: &AccountId, amount: U128); fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); fn burn(&mut self, amount: &U128); diff --git a/res/sweat.wasm b/res/sweat.wasm index f4552c772429ec74125f2de5ff136bcd41b9280e..ac3da2d8bc4354969310eecb7dd29922e5168209 100644 GIT binary patch literal 386796 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.is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_add_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_get_admins", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_get_grantees", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_get_permissioned_accounts", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PermissionedAccounts" + } + } + }, + { + "name": "acl_get_super_admins", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_grant_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_has_any_role", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "roles", + "type_schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_has_role", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_init_super_admin", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_is_admin", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_is_super_admin", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_renounce_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_renounce_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_revoke_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_revoke_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_revoke_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_role_variants", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + { + "name": "acl_storage_prefix", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + }, + { + "name": "acl_transfer_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, { "name": "add_oracle", "kind": "call", + "modifiers": [ + "private" + ], "params": { "serialization_type": "json", "args": [ @@ -418,6 +951,9 @@ { "name": "remove_oracle", "kind": "call", + "modifiers": [ + "private" + ], "params": { "serialization_type": "json", "args": [ @@ -434,6 +970,9 @@ { "name": "set_restricted", "kind": "call", + "modifiers": [ + "private" + ], "params": { "serialization_type": "json", "args": [ @@ -586,6 +1125,9 @@ { "name": "tge_mint", "kind": "call", + "modifiers": [ + "private" + ], "params": { "serialization_type": "json", "args": [ @@ -608,6 +1150,9 @@ { "name": "tge_mint_batch", "kind": "call", + "modifiers": [ + "private" + ], "params": { "serialization_type": "json", "args": [ @@ -696,6 +1241,57 @@ } } }, + "PermissionedAccounts": { + "description": "Collects super admin accounts and accounts that have been granted permissions defined by `AccessControlRole`.\n\n# Data structure\n\nAssume `AccessControlRole` is derived for the following enum, which is then passed as `role` attribute to `AccessControllable`.\n\n```rust pub enum Role { PauseManager, UnpauseManager, } ```\n\nThen the returned data has the following structure:\n\n```ignore PermissionedAccounts { super_admins: vec![\"acc1.near\", \"acc2.near\"], roles: HashMap::from([ (\"PauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc3.near\", \"acc4.near\"], grantees: vec![\"acc5.near\", \"acc6.near\"], }), (\"UnpauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc7.near\", \"acc8.near\"], grantees: vec![\"acc9.near\", \"acc10.near\"], }), ]) } ```\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", + "type": "object", + "required": [ + "roles", + "super_admins" + ], + "properties": { + "roles": { + "description": "The admins and grantees of all roles.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/PermissionedAccountsPerRole" + } + }, + "super_admins": { + "description": "The accounts that have super admin permissions.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + "PermissionedAccountsPerRole": { + "description": "Collects all admins and grantees of a role.\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", + "type": "object", + "required": [ + "admins", + "grantees" + ], + "properties": { + "admins": { + "description": "The accounts that have admin permissions for the role.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + "grantees": { + "description": "The accounts that have been granted the role.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, "PromiseOrValueNull": { "type": "null" }, diff --git a/res/sweat_abi.zst b/res/sweat_abi.zst index 6959ad40dc361a63fbe51e97f442a97f7ae59c73..a35f6c6e70d210482f21f23f5617d6985c11fc51 100644 GIT binary patch literal 2188 zcmV;72y^!+wJ-euh#f=#x=!>BH9&2X4#O}E!@xR*^^qG}+ftH|y=f@cT9WoAnW}{o zJWKRU9gnk4MdDca$VjhqeNxLX>|DkE9cm28Lv@{ zY2=npAcr4py9B) z8<3-|O#74raUhx>3zRJP?pW zMXF6u#J%PHTGcW*^M>KRWnV?!P#ovt(>pk67x_zpIQf{e;p5Q3krGK7csv}tkGLf` z072T$p@W0r0ML78eK;!J%!|*%abB$+2jg)t5P)tqME8GxWD&oL{N3g1Dki8=1L75=nbxaIwAP~fyVFQ9P7&pgF zsgj@~9;oD*H9naVR)#jHz>) z6HJKnu;+JSzs6?^`R_tLJSY$m1u6(Y9vg}QpAe7}2L*S6ph_cLSRW*WB9V{?j0u2s zOhWmE&(a{avA?h0g@o)a`ZU5hDut9{C8>j*? z2Lh2Kh(RR8Fc3o+F@`V!Aw)okA|jClBEiTENqPq)YrQ&u4#U$@TrxXu50($+mc30@ z0q672gB|c@{mkY2<$gumHNRJgNIj?&2^iuu2SuD|T0a+zQYEysK~4K5H^;nytZ*Ov{|5+E=B%0seu!G=joYq0UquYnYn&#rWS zaF6*Qg`?YUW%>hu?9bMtNPUt-lKTd1{l#ksp$iA>znAjeUVS^-S?7cc+eLK7@UjNX z1rwlIe3$q^C$c2y2#zg*yk?IhwxYoJ^ji%I`R1dxc8uC`9U;%mg12g98b_>#UZUBM z!tor2CJ{(6u9LNeaZ7(zo={*uR~vbo4EWTx0l3T!dk^-d507{*h&kIt)0Rw8tTBw5xj6KYqMZb5)^^bi_aGtqDCS-2xiqZo1 zQNEFq0XOy2#2;|Ee{V27!FTQcd}Bw5X^A7LAnFzuxXB>_n}3Tr^#ysaWHH!%rdE?C z4-~Xq#(Z@Si`lNHD^ckKx*wDTeoKa8naq*#;`OsT|48`(VbD&!Cy0+G!qE_CB_3l} z1&61cF2oZGJ}UAf6WKAy>kEIj#DHjSlQWh#WSRj*%@0yq8kgyvNu{~CsTP&J^anP6 z5Dm%G4)WoiPX)s`nY_h?rH_&Oxf9UgIn^MfqkYMCfVMcu3s3BrBky!LKqx-Piky~5 zu6~oh{uD_%>Cd%-8?m`rlS>Dtt#7g7@c_#U*WIzRlQ1&|)8)D>xP`TIULo!v#t``s zNL2R9na)evYnp2P1TgQq2`#NF%#c*MXP~O>Z(JozP9_g3obD_%Z2$>v*U3(myb?f; zIRj*v&yjKfbZ34XTZ>FgyV-2R9L+bfkQW0FMgTR0V*$7r zWtI%%#uMToUk>1bCl+DkAml#|K7X(rf3aQ{+sF0F3fdEIMj3vqDhH}rjVmQ`kYP@O z40U5#4PA-M(4%sRxNL%jebG?tJ0bfvHhz$C%>9Yj6I_y)e>N)jZP z_7VtNiq?vSb>P+Cd@^yuhTc=b?fbEwot|^sz5K?D&$)Miivw@7O_(3BjJrBDi z42@{FViQf1@fd$UJSa17R1={P^dv7Arh43ewn9Mn-h1;<(sZ=*5See!OrQ^o4=T#t zctq32axUO$e#Zs?`uqu_=s&3E3RIFR-!NT>Uiki O-CiFNn2<$sJ{784_98<7 literal 1492 zcmV;_1uOa}wJ-euh+QrK);p~(U~f7w48w4^1Z-*~M5dD7Qch@+ke#Gl+V*;(0%+d% zA6HaRZM`pkMzRG#TnV25q5zx#$`(@kbo&z3njL0&4AsLx{7yfDoLP2)aGXq;b0;Hm zM2@JJEB?4of;F&qbS_HwxIjOt2t(ywcS~C@2w&unW@!tZww&Hm zjnq6!eivs2dNLFe5QsAD!df?8B&XFGAVdPpz0dB2d|A>x$deL?1|osi{rFlM+lbWk z_35wGEG-iiM42YFDA{{GlUmzx-bMnSWzV#(r}XKa_DAWg*pu3DBKNaO#a>2|5(>j$ zSVE;j>E6kiK|zv~m!za|PyoKyT`QDJ`x9qWp{%!FQR9dj2U}oFTE|e?FHDf6iLFo8 z(b3@xFH1un*kn?t~2Sdq2dc?Umjm3(E3gkvM(}a6aAEw zGAlA`SuuC=F}R+Emwj!wi=p{w`T31(JI|tI9P8_m)^7D$y6q6I-sSb#7#DO__T={X{`k*1t|z#*YpYM%lB~ai@Rz2>fyfHlU8r#QTwO$KsgcjLuM?bm=h;N zB^4?)y=6H+t&8k%HV7xhPN*AQvCfuk3ygE*Y9D4&Z3jG@zTGU-gR&DEkON2S(r?M%H@ly3QZFWFF1 z7Rc@8mgZ0`cKhBoPmp)(LCI!82r=ow<%*49e3pW}o14l;v*1n9B!n!I(~MzV zd6jlxVrdi3jkfq9GEQ3%4FB^9iVocdY*s+Z1;lLBfu8PnMF9Ng%o+Z#B6{ZPmBTbQZ=I zx@=whqG0azF1X<4C0VY$PFZLS)vWU zxIqdZUhmj>w(<{FgGRv{LfL3f3d!Li83N>?9M0v=@wj)PS?u{z&PFEoAttPg?XR`p z6^HRQ$QjGqmqtIKhDUXlJ7of9#x%!@a^NYcMF2Azb~XK8Vao&dEP-0xe+>6s z7;~zjT}KY(i)BS&wuKvQMPM&XMj|&PGgWGgh$#!)HA{{3{5Sir>=day+@1_4%*C`AI?@DS<=fn@`Dd!7UO zau@(5Al4!daTFwJb%$ajYYS|WdBA@DVhIh4W)L$7x2otN9_&(=TyTNacMdG)xXGAm z-7&L}DT&lab9t%)h!{rM)4KlGSw&;{hS5NKD?#967s-H>Bq2sgV|(;~kQZdCK+4mGsieWXez~q=>B?o0P+s27 uMBJH;fbw1|AuKnG?@+sSFeO8hGRT~LhBp{~n5^d|Yh(!^BrxbRFA7!NamddA From c1efbe1e3637fb98bcb0d613cd29cbc90b82df94 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 21 May 2026 18:53:26 +0100 Subject: [PATCH 08/46] test: add pausable tests --- .zed/settings.json | 12 + contract/src/core.rs | 3 + contract/src/defer.rs | 3 +- contract/src/lib.rs | 10 +- exploit-stub/src/lib.rs | 13 +- integration-tests/tests/common/prepare.rs | 2 +- integration-tests/tests/defer.rs | 4 +- integration-tests/tests/pause.rs | 438 +++++++ model/Cargo.toml | 17 - model/src/lib.rs | 105 -- res/contract.wasm | Bin 0 -> 422428 bytes res/contract_abi.json | 1417 +++++++++++++++++++++ res/contract_abi.zst | Bin 0 -> 2248 bytes scripts/build-integration.sh | 2 - 14 files changed, 1888 insertions(+), 138 deletions(-) create mode 100644 .zed/settings.json create mode 100644 integration-tests/tests/pause.rs delete mode 100644 model/Cargo.toml delete mode 100644 model/src/lib.rs create mode 100644 res/contract.wasm create mode 100644 res/contract_abi.json create mode 100644 res/contract_abi.zst diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..f239190 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,12 @@ +{ + "lsp": { + "rust-analyzer": { + "initialization_options": { + "linkedProjects": [ + "Cargo.toml", + "integration-tests/Cargo.toml" + ], + } + } + } +} diff --git a/contract/src/core.rs b/contract/src/core.rs index 7dea792..dbf4b62 100644 --- a/contract/src/core.rs +++ b/contract/src/core.rs @@ -2,6 +2,7 @@ use near_contract_standards::{ fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver}, storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, }; +use near_plugins::{pause, Pausable}; use near_sdk::{env, json_types::U128, near, AccountId, NearToken, PromiseOrValue}; use crate::{Contract, ContractExt}; @@ -9,6 +10,7 @@ use crate::{Contract, ContractExt}; #[near] impl FungibleTokenCore for Contract { #[payable] + #[pause(name = "token")] fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) { self.assert_not_in_denylist(vec![&env::predecessor_account_id(), &receiver_id]); @@ -16,6 +18,7 @@ impl FungibleTokenCore for Contract { } #[payable] + #[pause(name = "token")] fn ft_transfer_call( &mut self, receiver_id: AccountId, diff --git a/contract/src/defer.rs b/contract/src/defer.rs index d921e3d..4ba23dc 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -9,7 +9,7 @@ use near_sdk::{ }; use crate::{api::SweatDefer, internal_deposit, Contract, ContractExt, Role}; -use near_plugins::{access_control_any, AccessControlRole, AccessControllable}; +use near_plugins::{access_control_any, pause, AccessControllable, Pausable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); @@ -17,6 +17,7 @@ const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); #[near] impl SweatDefer for Contract { #[access_control_any(roles(Role::Oracle))] + #[pause(name = "minting")] fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { require!( env::prepaid_gas() > GAS_FOR_DEFER, diff --git a/contract/src/lib.rs b/contract/src/lib.rs index d59de5c..42b5db4 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -7,8 +7,9 @@ use near_contract_standards::fungible_token::{ metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, Balance, FungibleToken, }; -use near_plugins::{access_control, access_control_any, AccessControlRole, AccessControllable}; +use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ + borsh::BorshDeserialize, collections::UnorderedSet, env, json_types::{U128, U64}, @@ -27,11 +28,14 @@ mod math; #[serde(crate = "near_sdk::serde")] pub enum Role { Oracle, + PauseManager, + UnpauseManager, } #[near(contract_state)] #[access_control(role_type(Role))] -#[derive(PanicOnDefault)] +#[derive(Pausable, PanicOnDefault)] +#[pausable(pause_roles(Role::PauseManager), unpause_roles(Role::UnpauseManager))] pub struct Contract { oracles: UnorderedSet, token: FungibleToken, @@ -95,6 +99,7 @@ impl SweatApi for Contract { } } + #[pause(name = "token")] fn burn(&mut self, amount: U128) { self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); FtBurn { @@ -110,6 +115,7 @@ impl SweatApi for Contract { } #[access_control_any(roles(Role::Oracle))] + #[pause(name = "minting")] fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) { let mut oracle_fee: U128 = U128(0); let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); diff --git a/exploit-stub/src/lib.rs b/exploit-stub/src/lib.rs index 0875f3b..196e44d 100644 --- a/exploit-stub/src/lib.rs +++ b/exploit-stub/src/lib.rs @@ -1,17 +1,16 @@ use near_sdk::{ borsh::{self, BorshDeserialize, BorshSerialize}, - env, - env::log_str, + env::{self, log_str}, ext_contract, json_types::U128, - near_bindgen, AccountId, PanicOnDefault, + near, AccountId, PanicOnDefault, }; -#[near_bindgen] -#[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] +#[near(contract_state)] +#[derive(PanicOnDefault)] struct Contract {} -#[near_bindgen] +#[near] #[allow(dead_code)] impl Contract { #[init] @@ -42,7 +41,7 @@ pub trait Callback { fn some_function(&mut self); } -#[near_bindgen] +#[near] impl Callback for Contract { fn some_function(&mut self) { log_str("Call some_function in stub contract"); diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 9c02c78..275597a 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -187,7 +187,7 @@ fn sweat_wasm_path() -> PathBuf { PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("target") .join("integration-wasm") - .join("sweat.wasm"), + .join("contract.wasm"), ) } diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index a6d5090..ddb6ed8 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -38,9 +38,7 @@ async fn test_defer() -> anyhow::Result<()> { .json()?; info!(%total_fee, %total_for_user, "payout breakdown"); - let batch: Vec<_> = (0..BATCH_SIZE) - .map(|_| (context.alice.id(), CLAIM_AMOUNT)) - .collect(); + let batch: Vec<_> = (0..BATCH_SIZE).map(|_| (context.alice.id(), CLAIM_AMOUNT)).collect(); info!( batch_size = BATCH_SIZE, diff --git a/integration-tests/tests/pause.rs b/integration-tests/tests/pause.rs new file mode 100644 index 0000000..7059da9 --- /dev/null +++ b/integration-tests/tests/pause.rs @@ -0,0 +1,438 @@ +use near_workspaces::types::NearToken; +use serde_json::json; +use tracing::info; + +mod common; +use common::{panic::PanicFinder, prepare::Context}; + +use crate::common::storage::register_for_storage; + +#[tokio::test] +#[tracing::instrument] +async fn test_pause_all() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_bob().build().await?; + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; + + info!("call pa_pause_feature(ALL) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method pa_pause_feature restricted by access control.")); + info!("pa_pause_feature: {result:?}"); + + info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(!role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_pause_feature(ALL) [signer=alice]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + info!("call pa_pause_feature(ALL) [signer=alice]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(!is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("ft_transfer: {result:?}"); + + info!("call pa_unpause_feature(ALL) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method pa_unpause_feature restricted by access control.")); + info!("pa_unpause_feature: {result:?}"); + + info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "UnpauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_unpause_feature(ALL) [signer=alice]"); + let is_unpaused: bool = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(is_unpaused); + info!("pa_unpause_feature: {is_unpaused:?}"); + + info!("call pa_unpause_feature(ALL) [signer=alice]"); + let is_unpaused: bool = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(!is_unpaused); + info!("pa_unpause_feature: {is_unpaused:?}"); + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("ft_transfer: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_pause_minting() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_bob().build().await?; + + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + + info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_pause_feature(minting) [signer=alice]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "minting" })) + .transact() + .await? + .json()?; + assert!(is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + let result = context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("record_batch: {result:?}"); + + info!("call defer_batch([(alice, 10_000)], holding=alice) [signer=oracle]"); + let result = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": [[context.alice.id(), 10_000]], + "holding_account_id": context.alice.id(), + })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("defer_batch: {result:?}"); + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("ft_transfer (token feature not paused): {result:?}"); + + info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "UnpauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_unpause_feature(minting) [signer=alice]"); + let is_unpaused: bool = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "minting" })) + .transact() + .await? + .json()?; + assert!(is_unpaused); + info!("pa_unpause_feature: {is_unpaused:?}"); + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + let result = context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("record_batch: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_pause_token() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_bob().build().await?; + + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + + info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_pause_feature(token) [signer=alice]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "token" })) + .transact() + .await? + .json()?; + assert!(is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("ft_transfer: {result:?}"); + + info!("call ft_transfer_call(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer_call") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + "msg": "", + })) + .deposit(NearToken::from_yoctonear(1)) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("ft_transfer_call: {result:?}"); + + info!("call burn(1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "burn") + .args_json(json!({ "amount": "1000000000000000000" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("burn: {result:?}"); + + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + let result = context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("record_batch (minting feature not paused): {result:?}"); + + info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); + let role_is_granted: bool = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "UnpauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert!(role_is_granted); + info!("acl_grant_role: {role_is_granted:?}"); + + info!("call pa_unpause_feature(token) [signer=alice]"); + let is_unpaused: bool = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "token" })) + .transact() + .await? + .json()?; + assert!(is_unpaused); + info!("pa_unpause_feature: {is_unpaused:?}"); + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("ft_transfer: {result:?}"); + + info!("call burn(1000000000000000000) [signer=alice]"); + let result = context + .alice + .call(context.sweat.id(), "burn") + .args_json(json!({ "amount": "1000000000000000000" })) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("burn: {result:?}"); + + Ok(()) +} diff --git a/model/Cargo.toml b/model/Cargo.toml deleted file mode 100644 index ff54b52..0000000 --- a/model/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "sweat-model" -version = "0.1.0" -edition = "2021" - -[features] -default = [] -integration-test = ["dep:integration-utils", "dep:near-workspaces"] - -[dependencies] -anyhow = { workspace = true } -async-trait = { workspace = true } - -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } - -near-workspaces = { workspace = true, optional = true } diff --git a/model/src/lib.rs b/model/src/lib.rs deleted file mode 100644 index d737361..0000000 --- a/model/src/lib.rs +++ /dev/null @@ -1,105 +0,0 @@ -#![allow(clippy::new_ret_no_self, clippy::wrong_self_convention)] - -use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds}; -use near_sdk::{ - json_types::{U128, U64}, - AccountId, PromiseOrValue, -}; - -pub trait SweatApi { - fn new(postfix: Option) -> Self; - fn add_oracle(&mut self, account_id: &AccountId); - fn remove_oracle(&mut self, account_id: &AccountId); - fn tge_mint(&mut self, account_id: &AccountId, amount: U128); - fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); - fn burn(&mut self, amount: &U128); - fn get_steps_since_tge(&self) -> U64; - fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); - fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; -} - -pub trait RestrictionApi { - fn is_restricted(&self, account_id: &AccountId) -> bool; - fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool); -} - -#[make_integration_version] -pub trait SweatDefer { - fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()>; -} - -/// Copy of near_sdk trait to use in integration tests -pub trait FungibleTokenCore { - #[deposit_one_yocto] - fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option); - fn ft_transfer_call( - &mut self, - receiver_id: AccountId, - amount: U128, - memo: Option, - msg: String, - ) -> PromiseOrValue; - fn ft_total_supply(&self) -> U128; - fn ft_balance_of(&self, account_id: AccountId) -> U128; -} - -/// Copy of near_sdk trait to use in integration tests -pub trait StorageManagement { - // if `registration_only=true` MUST refund above the minimum balance if the account didn't exist and - // refund full deposit if the account exists. - #[deposit_yocto = near_sdk::env::storage_byte_cost() * 125] - fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance; - - /// Withdraw specified amount of available Ⓝ for predecessor account. - /// - /// This method is safe to call. It MUST NOT remove data. - /// - /// `amount` is sent as a string representing an unsigned 128-bit integer. If - /// omitted, contract MUST refund full `available` balance. If `amount` exceeds - /// predecessor account's available balance, contract MUST panic. - /// - /// If predecessor account not registered, contract MUST panic. - /// - /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted - /// function-call access-key call (UX wallet security) - /// - /// Returns the StorageBalance structure showing updated balances. - fn storage_withdraw(&mut self, amount: Option) -> StorageBalance; - - /// Unregisters the predecessor account and returns the storage NEAR deposit back. - /// - /// If the predecessor account is not registered, the function MUST return `false` without panic. - /// - /// If `force=true` the function SHOULD ignore account balances (burn them) and close the account. - /// Otherwise, MUST panic if caller has a positive registered balance (eg token holdings) or - /// the contract doesn't support force unregistration. - /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted function-call access-key call - /// (UX wallet security) - /// Returns `true` iff the account was unregistered. - /// Returns `false` iff account was not registered before. - fn storage_unregister(&mut self, force: Option) -> bool; - - fn storage_balance_bounds(&self) -> StorageBalanceBounds; - - fn storage_balance_of(&self, account_id: AccountId) -> Option; -} - -pub trait IntegrationTestMethods { - fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128); -} - -pub struct Payout { - pub amount_for_user: u128, - pub fee: u128, -} - -impl From for Payout { - fn from(value: u128) -> Self { - let fee = (value * 5).div_ceil(100); - - Self { - fee, - amount_for_user: value - fee, - } - } -} diff --git a/res/contract.wasm b/res/contract.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3acf46f19252dfc2f5086d5045769a907454a9b GIT binary patch literal 422428 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

(5Aa+0)mWCo2S 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 _%ye^&R%4 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

}TW=`yP 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.is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_add_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_get_admins", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_get_grantees", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_get_permissioned_accounts", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PermissionedAccounts" + } + } + }, + { + "name": "acl_get_super_admins", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "skip", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + { + "name": "limit", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + { + "name": "acl_grant_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_has_any_role", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "roles", + "type_schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_has_role", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_init_super_admin", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_is_admin", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_is_super_admin", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_renounce_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_renounce_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "acl_revoke_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_revoke_role", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "role", + "type_schema": { + "type": "string" + } + }, + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_revoke_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "acl_role_variants", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + { + "name": "acl_storage_prefix", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + }, + { + "name": "acl_transfer_super_admin", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + }, + { + "name": "add_oracle", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } + }, + { + "name": "burn", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "contract_source_metadata", + "kind": "view" + }, + { + "name": "defer_batch", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + ], + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "name": "holding_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PromiseOrValueNull" + } + } + }, + { + "name": "formula", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_since_tge", + "type_schema": { + "type": "string" + } + }, + { + "name": "steps", + "type_schema": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_balance_of", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_metadata", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/FungibleTokenMetadata" + } + } + }, + { + "name": "ft_resolve_transfer", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "sender_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_total_supply", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "ft_transfer", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "memo", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + } + }, + { + "name": "ft_transfer_call", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "memo", + "type_schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "msg", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/PromiseOrValueString" + } + } + }, + { + "name": "get_steps_since_tge", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "string" + } + } + }, + { + "name": "is_restricted", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "new", + "kind": "call", + "modifiers": [ + "init" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "postfix", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + } + }, + { + "name": "on_record", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "receiver_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + }, + { + "name": "fee_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "fee", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "pa_all_paused", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + }, + "uniqueItems": true + } + } + }, + { + "name": "pa_is_paused", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "key", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "pa_pause_feature", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "key", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "pa_storage_key", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + }, + { + "name": "pa_unpause_feature", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "key", + "type_schema": { + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "record_batch", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "steps_batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + ], + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + { + "name": "remove_oracle", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } + }, + { + "name": "set_restricted", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "is_restricted", + "type_schema": { + "type": "boolean" + } + } + ] + } + }, + { + "name": "storage_balance_bounds", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalanceBounds" + } + } + }, + { + "name": "storage_balance_of", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "anyOf": [ + { + "$ref": "#/definitions/StorageBalance" + }, + { + "type": "null" + } + ] + } + } + }, + { + "name": "storage_deposit", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": [ + "string", + "null" + ] + } + }, + { + "name": "registration_only", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalance" + } + } + }, + { + "name": "storage_unregister", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "force", + "type_schema": { + "type": [ + "boolean", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, + { + "name": "storage_withdraw", + "kind": "call", + "modifiers": [ + "payable" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "amount", + "type_schema": { + "type": [ + "string", + "null" + ] + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "$ref": "#/definitions/StorageBalance" + } + } + }, + { + "name": "tge_mint", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "amount", + "type_schema": { + "type": "string" + } + } + ] + } + }, + { + "name": "tge_mint_batch", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "batch", + "type_schema": { + "type": "array", + "items": { + "type": "array", + "items": [ + { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + }, + { + "type": "string" + } + ], + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + } + ], + "root_schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "String", + "type": "string", + "definitions": { + "Base64VecU8": { + "description": "Helper class to serialize/deserialize `Vec` to base64 string.\n\n# Example ```rust use near_sdk::{json_types::Base64VecU8, near};\n\n#[near(serializers=[json])] struct NewStruct { field: Base64VecU8, } ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "FungibleTokenMetadata": { + "type": "object", + "required": [ + "decimals", + "name", + "spec", + "symbol" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "icon": { + "type": [ + "string", + "null" + ] + }, + "name": { + "type": "string" + }, + "reference": { + "type": [ + "string", + "null" + ] + }, + "reference_hash": { + "anyOf": [ + { + "$ref": "#/definitions/Base64VecU8" + }, + { + "type": "null" + } + ] + }, + "spec": { + "type": "string" + }, + "symbol": { + "type": "string" + } + } + }, + "PermissionedAccounts": { + "description": "Collects super admin accounts and accounts that have been granted permissions defined by `AccessControlRole`.\n\n# Data structure\n\nAssume `AccessControlRole` is derived for the following enum, which is then passed as `role` attribute to `AccessControllable`.\n\n```rust pub enum Role { PauseManager, UnpauseManager, } ```\n\nThen the returned data has the following structure:\n\n```ignore PermissionedAccounts { super_admins: vec![\"acc1.near\", \"acc2.near\"], roles: HashMap::from([ (\"PauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc3.near\", \"acc4.near\"], grantees: vec![\"acc5.near\", \"acc6.near\"], }), (\"UnpauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc7.near\", \"acc8.near\"], grantees: vec![\"acc9.near\", \"acc10.near\"], }), ]) } ```\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", + "type": "object", + "required": [ + "roles", + "super_admins" + ], + "properties": { + "roles": { + "description": "The admins and grantees of all roles.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/PermissionedAccountsPerRole" + } + }, + "super_admins": { + "description": "The accounts that have super admin permissions.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + "PermissionedAccountsPerRole": { + "description": "Collects all admins and grantees of a role.\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", + "type": "object", + "required": [ + "admins", + "grantees" + ], + "properties": { + "admins": { + "description": "The accounts that have admin permissions for the role.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + "grantees": { + "description": "The accounts that have been granted the role.", + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + } + }, + "PromiseOrValueNull": { + "type": "null" + }, + "PromiseOrValueString": { + "type": "string" + }, + "StorageBalance": { + "type": "object", + "required": [ + "available", + "total" + ], + "properties": { + "available": { + "type": "string" + }, + "total": { + "type": "string" + } + } + }, + "StorageBalanceBounds": { + "type": "object", + "required": [ + "min" + ], + "properties": { + "max": { + "type": [ + "string", + "null" + ] + }, + "min": { + "type": "string" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/res/contract_abi.zst b/res/contract_abi.zst new file mode 100644 index 0000000000000000000000000000000000000000..50d36f9125016ec8db8b9ab8c27a256f4ccd224d GIT binary patch literal 2248 zcmV;(2sigAwJ-eui2X$XI#4VQH9&2X4#O}E!@xR*^^qG}+ftH|y=f@cT9WoAnW}{o zJWKRU9gnk4MdDca$VjhqeNxLX>|D|S)BxB3d>1#uTI9h|eR(v_UUN{Mj!@F1Udx43 z@`5bgF?W%-?)on#84EN0m%nsAm`(FeQl{U?Qz~8(!kSY|YFaPtr{RP=YG^N}Cbx@) zhw(6;eVbapGYDys6)YM^=&J4FGuEPh5iZMX+Z^4&g`A<%bfg=a)3#@(bhUDhy_WGB z#h6BJ=>&54!Pe`=NyFe~6A|%1WF%MrBG9tBC@P+aT+MO!u2mFV%(W;*JQ7btFWr7{ zozmxQK#sOD?NbiKfp{h!2nTW=Y`n)rO8v6f*$5m_8>PFY3nRw%6F=Rq&}h@Qif++` z&DvHm(K8_C>wTFi&Ra2UD~CafHBTefOJqSo!tJ%`O!6>&1F%2Xm>adP{(ia^rru4X zyXthKnuB;CAcu-no1ln$%loyeWpL&V!+p!XioBsX&c&y9aMCXFmjZF}F=fNYp@SnO zk~HvmICdX#OK<>!w4Fl-2g3oN_ssfmRJxfLpNHeTT0IWN<6tC$Oz5jQ&Au}LK~bJ# zRw@;~t0>iIkPi=!NaPO;f`jt)&c41??lzd@&k5OCJOU5O1OcyOVqgP-Am$7k5R}2V zIc`do1Qqc>CC?;J*vYJJ<-T%%P;p@$!vw`y6-NF-3zeQ_GX z?boR2md@z1OSjC|iyHUfHaE++8^h{snxJ{QQJ~<0Nqs&BQj{0JvGr4=mF5}THjmp5 zWWvr-tH?QxwE8EuaD6q})C{Z4AA7Iwg@q#uq)us6<0_{O8`JjeosV%a!g~g^a3?j( ziw-8JPNk?POE-2=!lP3RJK=C6=HNvFf`(Eg1VAQSz4@|QrL*X3BMh6(X7d`Q4Vz*V zdK?N)8)NF6<^&VsJnZ>h*st-~LjJpu4-X1NM1cwdkjI8%z$XOc#6iKGAgIy^7uE*} zp-3bo0%HPT9g|Rg;j=V|ZS3!>cOfBri$0BTj!Ge=SV`(&=Q~PmyLBtcXV$9aWwlEt zAyj9t&DtEAggWC@-V16YvQgW3n-!J7cddXJyG&yo|uR8}9I2YDS zw4c5YuD9M-a2=E=&3eV`lxpjYeOuJf>lq~IKsE_6_crCmMdlK+SEK}j2B`9jQaXmH zL?lU)v<6}r2*bfV(!sfuH}a??Niiq{A;u772r*1R2r&Y}NFb2}BEiTENqPq%V_#=H zln|u`4^yzr?87ry5#~fLn%_H|5uevSpf34YOZzo`MYS|v9pbwW+LIy?$}}k<&NQW= zGjM2#02$0`-$jy6o7Ev-6&pYkO~v|FJsuO#Ln)q0`C+8ht;t6g%kKOaj;?=A`?(9PR~DwD9FsYG+>>S;abKPi(B+FL$(FeA=&-ggz;0PIlyP{e=i5x z?5`yRj?l(H3wJnGR;EGWa|=$b8_*xyNoE34l2o}h;iCZ~k4ax=;KmfpLG#kLQP~nP zYF~sgJpZR=IbpU$1 zMY;c z^>nE|W2N#Jzo%r;-szbZ7a7h_MkqI#4&8LvLPj-7+5tD9ix;7?;m5!9ldfR1qJt)g z-#sWABWfiSeK$uBC^Yn!lmyt)j>)8?HvbP2dm9ZqW(5lPC$Je0hhp}`EiOZWcA9sT zb{?1q;Eem6g}bgUtdH2KE|yBvVp^y1!C3;E;Y_Fj_n?mtOgZJU@EogW9FE+3w5C9NXN1?=(bCIIN6GDzNk-GeLl*%bSh_`2^%q9x|~j0e!%$r$T=Bh91HIE1d@ zbQ}amy4&X=@*EI1a;8Y4KVnauLhxWURa%|DgDcY^5s$d6^!@~f22XxWzsfcgbka=Q zQ1pd Date: Thu, 21 May 2026 19:21:09 +0100 Subject: [PATCH 09/46] test: add acl tests --- integration-tests/tests/access_control.rs | 276 ++++++++++++++++++++++ 1 file changed, 276 insertions(+) create mode 100644 integration-tests/tests/access_control.rs diff --git a/integration-tests/tests/access_control.rs b/integration-tests/tests/access_control.rs new file mode 100644 index 0000000..5857c06 --- /dev/null +++ b/integration-tests/tests/access_control.rs @@ -0,0 +1,276 @@ +use serde_json::json; +use tracing::info; + +mod common; +use common::{panic::PanicFinder, prepare::Context}; + +#[tokio::test] +#[tracing::instrument] +async fn test_acl_grant_role() -> anyhow::Result<()> { + let context = Context::builder().with_bob().build().await?; + + info!("call acl_grant_role(Oracle, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("view acl_has_role(Oracle, alice)"); + let has_role: bool = context + .sweat + .view("acl_has_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.alice.id(), + })) + .await? + .json()?; + assert!(has_role); + info!("acl_has_role: {has_role:?}"); + + info!("call acl_grant_role(Oracle, bob) [signer=alice, unauthorized]"); + let granted: Option = context + .alice + .call(context.sweat.id(), "acl_grant_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.bob().id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, None); + info!("acl_grant_role: {granted:?}"); + + info!("view acl_has_role(Oracle, bob)"); + let has_role: bool = context + .sweat + .view("acl_has_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.bob().id(), + })) + .await? + .json()?; + assert!(!has_role); + info!("acl_has_role: {has_role:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_acl_record_batch() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!("call record_batch([(alice, 10_000)]) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method record_batch restricted by access control.")); + info!("record_batch: {result:?}"); + + info!("call acl_grant_role(Oracle, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call record_batch([(alice, 10_000)]) [signer=alice, authorized]"); + let result = context + .alice + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("record_batch: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_acl_defer_batch() -> anyhow::Result<()> { + let context = Context::builder().with_claim().build().await?; + + info!("call defer_batch([(alice, 10_000)], holding=claim) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": [[context.alice.id(), 10_000]], + "holding_account_id": context.claim().id(), + })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method defer_batch restricted by access control.")); + info!("defer_batch: {result:?}"); + + info!("call acl_grant_role(Oracle, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "Oracle", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call defer_batch([(alice, 10_000)], holding=claim) [signer=alice, authorized]"); + let result = context + .alice + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": [[context.alice.id(), 10_000]], + "holding_account_id": context.claim().id(), + })) + .max_gas() + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("defer_batch: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_acl_pause_feature() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!("call pa_pause_feature(ALL) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method pa_pause_feature restricted by access control.")); + info!("pa_pause_feature: {result:?}"); + + info!("call acl_grant_role(PauseManager, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call pa_pause_feature(ALL) [signer=alice, authorized]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_acl_unpause_feature() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!("call pa_unpause_feature(ALL) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method pa_unpause_feature restricted by access control.")); + info!("pa_unpause_feature: {result:?}"); + + info!("call acl_grant_role(PauseManager, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "PauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call acl_grant_role(UnpauseManager, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "UnpauseManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call pa_pause_feature(ALL) [signer=alice, authorized]"); + let is_paused: bool = context + .alice + .call(context.sweat.id(), "pa_pause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(is_paused); + info!("pa_pause_feature: {is_paused:?}"); + + info!("call pa_unpause_feature(ALL) [signer=alice, authorized]"); + let is_unpaused: bool = context + .alice + .call(context.sweat.id(), "pa_unpause_feature") + .args_json(json!({ "key": "ALL" })) + .transact() + .await? + .json()?; + assert!(is_unpaused); + info!("pa_unpause_feature: {is_unpaused:?}"); + + Ok(()) +} From fdfd5dc85014a4223a2853e938c13c797551dad5 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 21 May 2026 19:45:13 +0100 Subject: [PATCH 10/46] fix: check denylist for burn and storage_unregister --- contract/src/core.rs | 2 + contract/src/lib.rs | 2 + integration-tests/tests/restriction.rs | 165 +++++++++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 integration-tests/tests/restriction.rs diff --git a/contract/src/core.rs b/contract/src/core.rs index dbf4b62..0f6adea 100644 --- a/contract/src/core.rs +++ b/contract/src/core.rs @@ -54,6 +54,8 @@ impl StorageManagement for Contract { #[payable] fn storage_unregister(&mut self, force: Option) -> bool { + self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); + self.token.internal_storage_unregister(force).is_some() } diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 42b5db4..f23e726 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -101,6 +101,8 @@ impl SweatApi for Contract { #[pause(name = "token")] fn burn(&mut self, amount: U128) { + self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); + self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); FtBurn { amount, diff --git a/integration-tests/tests/restriction.rs b/integration-tests/tests/restriction.rs new file mode 100644 index 0000000..1161ca2 --- /dev/null +++ b/integration-tests/tests/restriction.rs @@ -0,0 +1,165 @@ +use near_workspaces::types::NearToken; +use serde_json::json; +use tracing::info; + +mod common; +use common::{panic::PanicFinder, prepare::Context, storage::register_for_storage}; + +/// Mint tokens to alice, then add her to the contract denylist. +async fn mint_and_restrict(context: &Context) -> anyhow::Result<()> { + info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .transact() + .await? + .into_result()?; + + info!("call set_restricted(alice, true) [signer=contract]"); + context + .sweat + .call("set_restricted") + .args_json(json!({ + "account_id": context.alice.id(), + "is_restricted": true, + })) + .transact() + .await? + .into_result()?; + + let is_restricted: bool = context + .sweat + .view("is_restricted") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + assert!(is_restricted); + info!("alice is restricted"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_restricted_cannot_ft_transfer() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_bob().build().await?; + + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; + + mint_and_restrict(&context).await?; + + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice, restricted]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result(); + assert!(result.has_panic(&format!("The account {} is restricted", context.alice.id()))); + info!("ft_transfer: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_restricted_cannot_ft_transfer_call() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_bob().build().await?; + + info!("register bob for FT storage"); + register_for_storage(&context.sweat, context.bob().id()).await?; + + mint_and_restrict(&context).await?; + + info!("call ft_transfer_call(bob, 1000000000000000000) [signer=alice, restricted]"); + let result = context + .alice + .call(context.sweat.id(), "ft_transfer_call") + .args_json(json!({ + "receiver_id": context.bob().id(), + "amount": "1000000000000000000", + "msg": "", + })) + .deposit(NearToken::from_yoctonear(1)) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic(&format!("The account {} is restricted", context.alice.id()))); + info!("ft_transfer_call: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_restricted_cannot_burn() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().build().await?; + + mint_and_restrict(&context).await?; + + info!("call burn(1000000000000000000) [signer=alice, restricted]"); + let result = context + .alice + .call(context.sweat.id(), "burn") + .args_json(json!({ "amount": "1000000000000000000" })) + .transact() + .await? + .into_result(); + assert!(result.has_panic(&format!("The account {} is restricted", context.alice.id()))); + info!("burn: {result:?}"); + + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_restricted_cannot_storage_unregister() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().build().await?; + + mint_and_restrict(&context).await?; + + info!("view ft_balance_of(alice) before storage_unregister"); + let balance_before: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + assert_ne!(balance_before, "0"); + info!(value = %balance_before, "alice balance before"); + + info!("call storage_unregister(force=true) [signer=alice, restricted]"); + let result = context + .alice + .call(context.sweat.id(), "storage_unregister") + .args_json(json!({ "force": true })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result(); + assert!(result.has_panic(&format!("The account {} is restricted", context.alice.id()))); + info!("storage_unregister: {result:?}"); + + info!("view ft_balance_of(alice) after storage_unregister"); + let balance_after: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + assert_eq!( + balance_before, balance_after, + "restricted account's tokens must be preserved" + ); + info!(value = %balance_after, "alice balance after"); + + Ok(()) +} From 72a0d9938eec14024c8834518a203c4d44be9c48 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 21 May 2026 20:51:28 +0100 Subject: [PATCH 11/46] fix: lock holding account id --- contract/src/api.rs | 6 +- contract/src/defer.rs | 10 +- contract/src/lib.rs | 37 ++++-- integration-tests/tests/access_control.rs | 14 +-- integration-tests/tests/common/prepare.rs | 30 +++-- integration-tests/tests/defer.rs | 147 +++++++++++++++++++++- integration-tests/tests/happy_flow.rs | 7 +- integration-tests/tests/pause.rs | 7 +- scripts/build-integration.sh | 1 + 9 files changed, 208 insertions(+), 51 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index 3106ee6..dd76f80 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -4,9 +4,11 @@ use near_sdk::{ }; pub trait SweatApi { - fn new(postfix: Option) -> Self; + fn new(postfix: Option, holding_account_id: Option) -> Self; fn add_oracle(&mut self, account_id: &AccountId); fn remove_oracle(&mut self, account_id: &AccountId); + fn set_holding_account_id(&mut self, account_id: AccountId); + fn get_holding_account_id(&self) -> Option; fn tge_mint(&mut self, account_id: &AccountId, amount: U128); fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); fn burn(&mut self, amount: U128); @@ -21,7 +23,7 @@ pub trait RestrictionApi { } pub trait SweatDefer { - fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()>; + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()>; } pub struct Payout { diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 4ba23dc..2b6b639 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -18,12 +18,20 @@ const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); impl SweatDefer for Contract { #[access_control_any(roles(Role::Oracle))] #[pause(name = "minting")] - fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()> { require!( env::prepaid_gas() > GAS_FOR_DEFER, "Not enough gas to complete the operation" ); + // F-03: the holding account is a fixed, super-admin-configured value — + // never an Oracle-supplied argument — so deferred mints cannot be + // redirected to an arbitrary contract that skips staging. + let holding_account_id = self + .holding_account_id + .clone() + .unwrap_or_else(|| panic_str("Holding account is not set")); + let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); let mut total_effective: U128 = U128(0); let mut total_fee: U128 = U128(0); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index f23e726..9ea647f 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -41,17 +41,21 @@ pub struct Contract { token: FungibleToken, steps_since_tge: U64, denylist: UnorderedSet, + /// The single trusted account that `defer_batch` stages deferred mints + /// through. Set by the super admin; never supplied by the Oracle. + holding_account_id: Option, } #[near] impl SweatApi for Contract { #[init] - fn new(postfix: Option) -> Self { + fn new(postfix: Option, holding_account_id: Option) -> Self { let mut contract = Self { oracles: UnorderedSet::new(b"s"), token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), + holding_account_id, }; contract.acl_init_super_admin(env::current_account_id()); @@ -69,6 +73,15 @@ impl SweatApi for Contract { self.acl_revoke_role(Role::Oracle.into(), account_id.clone()); } + #[private] + fn set_holding_account_id(&mut self, account_id: AccountId) { + self.holding_account_id = Some(account_id); + } + + fn get_holding_account_id(&self) -> Option { + self.holding_account_id.clone() + } + #[private] fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { internal_deposit(&mut self.token, account_id, amount.0); @@ -271,7 +284,7 @@ mod tests { #[test] fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); @@ -282,7 +295,7 @@ mod tests { #[test] fn oracle_fee_test() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); @@ -298,7 +311,7 @@ mod tests { #[test] fn tge_liquid() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); @@ -308,7 +321,7 @@ mod tests { #[test] fn tge_liquid_batch() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ @@ -322,7 +335,7 @@ mod tests { #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); @@ -335,7 +348,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is not registered"#)] fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); @@ -351,7 +364,7 @@ mod tests { #[test] fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ @@ -371,7 +384,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn transfer_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ @@ -388,7 +401,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn transfer_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ @@ -405,7 +418,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn ft_transfer_call_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ @@ -422,7 +435,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn ft_transfer_call_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string())); + let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ diff --git a/integration-tests/tests/access_control.rs b/integration-tests/tests/access_control.rs index 5857c06..5f2e6ea 100644 --- a/integration-tests/tests/access_control.rs +++ b/integration-tests/tests/access_control.rs @@ -115,14 +115,11 @@ async fn test_acl_record_batch() -> anyhow::Result<()> { async fn test_acl_defer_batch() -> anyhow::Result<()> { let context = Context::builder().with_claim().build().await?; - info!("call defer_batch([(alice, 10_000)], holding=claim) [signer=alice, unauthorized]"); + info!("call defer_batch([(alice, 10_000)]) [signer=alice, unauthorized]"); let result = context .alice .call(context.sweat.id(), "defer_batch") - .args_json(json!({ - "steps_batch": [[context.alice.id(), 10_000]], - "holding_account_id": context.claim().id(), - })) + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) .max_gas() .transact() .await? @@ -144,14 +141,11 @@ async fn test_acl_defer_batch() -> anyhow::Result<()> { assert_eq!(granted, Some(true)); info!("acl_grant_role: {granted:?}"); - info!("call defer_batch([(alice, 10_000)], holding=claim) [signer=alice, authorized]"); + info!("call defer_batch([(alice, 10_000)]) [signer=alice, authorized]"); let result = context .alice .call(context.sweat.id(), "defer_batch") - .args_json(json!({ - "steps_batch": [[context.alice.id(), 10_000]], - "holding_account_id": context.claim().id(), - })) + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) .max_gas() .transact() .await? diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 275597a..7687ae1 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -104,10 +104,24 @@ impl ContextBuilder { let sweat = deploy(&worker, sweat_wasm_path(), "sweat", SWEAT_WASM_ENV).await?; info!(id = %sweat.id(), "sweat deployed"); + // Deploy the claim contract before initializing sweat so its account id + // can be baked in as the fixed deferred-minting holding account. + let claim = if self.claim { + info!("deploying claim"); + let claim = deploy(&worker, claim_wasm_path(), "claim", CLAIM_WASM_ENV).await?; + info!(id = %claim.id(), "claim deployed"); + Some(claim) + } else { + None + }; + info!("initializing sweat (new)"); sweat .call("new") - .args_json(json!({ "postfix": FT_POSTFIX })) + .args_json(json!({ + "postfix": FT_POSTFIX, + "holding_account_id": claim.as_ref().map(Contract::id), + })) .transact() .await? .into_result()?; @@ -140,16 +154,12 @@ impl ContextBuilder { None }; - let claim = if self.claim { - info!("deploying + initializing claim"); - let claim = deploy(&worker, claim_wasm_path(), "claim", CLAIM_WASM_ENV).await?; - info!(id = %claim.id(), "claim deployed"); - init_claim(&claim, sweat.id()).await?; + // Finish claim setup now that sweat is initialized. + if let Some(claim) = &claim { + info!("initializing claim"); + init_claim(claim, sweat.id()).await?; storage_deposit(&sweat, claim.id(), min).await?; - Some(claim) - } else { - None - }; + } let stub = if self.stub { info!("deploying + initializing stub"); diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index ddb6ed8..05fc987 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -2,7 +2,7 @@ use serde_json::json; use tracing::info; mod common; -use common::prepare::Context; +use common::{panic::PanicFinder, prepare::Context}; const BATCH_SIZE: u32 = 135; const CLAIM_AMOUNT: u32 = 10_000; @@ -43,15 +43,12 @@ async fn test_defer() -> anyhow::Result<()> { info!( batch_size = BATCH_SIZE, claim_amount = CLAIM_AMOUNT, - "call defer_batch(holding=claim) [signer=oracle]" + "call defer_batch [signer=oracle]" ); context .oracle() .call(context.sweat.id(), "defer_batch") - .args_json(json!({ - "steps_batch": batch, - "holding_account_id": context.claim().id(), - })) + .args_json(json!({ "steps_batch": batch })) .max_gas() .transact() .await? @@ -90,3 +87,141 @@ async fn test_defer() -> anyhow::Result<()> { info!("done"); Ok(()) } + +/// `defer_batch` must refuse to run until the super admin has configured a +/// holding account — there is no implicit default to fall back to. +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_panics_when_holding_account_unset() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().build().await?; + + info!("view get_holding_account_id"); + let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, None); + info!("holding account is unset"); + + info!("call defer_batch([(alice, {CLAIM_AMOUNT})]) [signer=oracle] — holding account unset"); + let result = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), CLAIM_AMOUNT]] })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Holding account is not set")); + info!("defer_batch: {result:?}"); + + Ok(()) +} + +/// The super admin can re-point the holding account via `set_holding_account_id`, +/// and `defer_batch` immediately stages deferred mints through the new account. +#[tokio::test] +#[tracing::instrument] +async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<()> { + let context = Context::builder() + .with_oracle() + .with_claim() + .with_stub() + .build() + .await?; + + info!("view get_holding_account_id [baked in at init]"); + let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, Some(context.claim().id().to_string())); + info!(?holding, "holding account starts as claim"); + + info!("call set_holding_account_id(stub) [signer=contract, super-admin]"); + context + .sweat + .call("set_holding_account_id") + .args_json(json!({ "account_id": context.stub().id() })) + .transact() + .await? + .into_result()?; + + info!("view get_holding_account_id [after update]"); + let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, Some(context.stub().id().to_string())); + info!(?holding, "holding account updated to stub"); + + info!("view formula(0, {CLAIM_AMOUNT}) — raw deferred amount"); + let minted_raw: String = context + .sweat + .view("formula") + .args_json(json!({ + "steps_since_tge": "0", + "steps": CLAIM_AMOUNT, + })) + .await? + .json()?; + // Mirror `Payout::from`: fee is 5% rounded up, the rest goes to the holder. + let minted: u128 = minted_raw.parse()?; + let total_fee = (minted * 5).div_ceil(100); + let total_for_user = minted - total_fee; + info!(%minted_raw, total_fee, total_for_user, "expected payout breakdown"); + + info!("call defer_batch([(alice, {CLAIM_AMOUNT})]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), CLAIM_AMOUNT]] })) + .max_gas() + .transact() + .await? + .into_result()?; + + info!("view ft_balance_of(stub) [updated holding account]"); + let stub_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.stub().id() })) + .await? + .json()?; + assert_eq!( + stub_balance.parse::()?, + total_for_user, + "deferred mint must follow the updated holding account" + ); + info!(value = %stub_balance, "stub received the deferred amount"); + + info!("view ft_balance_of(claim) [former holding account]"); + let claim_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.claim().id() })) + .await? + .json()?; + assert_eq!(claim_balance, "0", "former holding account must receive nothing"); + info!(value = %claim_balance, "claim received nothing"); + + info!("done"); + Ok(()) +} + +/// `set_holding_account_id` is super-admin-only (`#[private]`); a regular account +/// cannot re-point the holding account. +#[tokio::test] +#[tracing::instrument] +async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { + let context = Context::builder().with_claim().build().await?; + + info!("call set_holding_account_id(alice) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "set_holding_account_id") + .args_json(json!({ "account_id": context.alice.id() })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method set_holding_account_id is private")); + info!("set_holding_account_id: {result:?}"); + + info!("view get_holding_account_id [unchanged]"); + let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, Some(context.claim().id().to_string())); + info!(?holding, "holding account unchanged"); + + Ok(()) +} diff --git a/integration-tests/tests/happy_flow.rs b/integration-tests/tests/happy_flow.rs index 736ea85..c217be1 100644 --- a/integration-tests/tests/happy_flow.rs +++ b/integration-tests/tests/happy_flow.rs @@ -38,14 +38,11 @@ async fn happy_flow() -> anyhow::Result<()> { info!(value = %balance, "alice balance"); assert_eq!(100_000_000_u128, balance.parse::()?); - info!("call defer_batch([(alice, 1000)], holding=claim) [signer=oracle]"); + info!("call defer_batch([(alice, 1000)]) [signer=oracle]"); context .oracle() .call(context.sweat.id(), "defer_batch") - .args_json(json!({ - "steps_batch": [[context.alice.id(), 1000]], - "holding_account_id": context.claim().id(), - })) + .args_json(json!({ "steps_batch": [[context.alice.id(), 1000]] })) .max_gas() .transact() .await? diff --git a/integration-tests/tests/pause.rs b/integration-tests/tests/pause.rs index 7059da9..9bd3a39 100644 --- a/integration-tests/tests/pause.rs +++ b/integration-tests/tests/pause.rs @@ -218,14 +218,11 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(result.has_panic("Method is paused")); info!("record_batch: {result:?}"); - info!("call defer_batch([(alice, 10_000)], holding=alice) [signer=oracle]"); + info!("call defer_batch([(alice, 10_000)]) [signer=oracle]"); let result = context .oracle() .call(context.sweat.id(), "defer_batch") - .args_json(json!({ - "steps_batch": [[context.alice.id(), 10_000]], - "holding_account_id": context.alice.id(), - })) + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) .max_gas() .transact() .await? diff --git a/scripts/build-integration.sh b/scripts/build-integration.sh index 7781c3f..636feca 100755 --- a/scripts/build-integration.sh +++ b/scripts/build-integration.sh @@ -8,4 +8,5 @@ mkdir -p "$OUT_DIR" cargo near build non-reproducible-wasm \ --manifest-path contract/Cargo.toml \ + --features integration-test \ --out-dir "$OUT_DIR" From 15a76ad7419eb6a1a8eb1de56d1396cc571be78d Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 21 May 2026 21:04:29 +0100 Subject: [PATCH 12/46] refactor: remove minting methods --- contract/src/api.rs | 2 - contract/src/lib.rs | 92 ++++------------------ integration-tests/tests/happy_flow.rs | 19 +++-- res/contract.wasm | Bin 422428 -> 412484 bytes res/contract_abi.json | 109 +++++++++++--------------- res/contract_abi.zst | Bin 2248 -> 2242 bytes 6 files changed, 71 insertions(+), 151 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index dd76f80..73cb2da 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -9,8 +9,6 @@ pub trait SweatApi { fn remove_oracle(&mut self, account_id: &AccountId); fn set_holding_account_id(&mut self, account_id: AccountId); fn get_holding_account_id(&self) -> Option; - fn tge_mint(&mut self, account_id: &AccountId, amount: U128); - fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); fn burn(&mut self, amount: U128); fn get_steps_since_tge(&self) -> U64; fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 9ea647f..1e057ed 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -82,36 +82,6 @@ impl SweatApi for Contract { self.holding_account_id.clone() } - #[private] - fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { - internal_deposit(&mut self.token, account_id, amount.0); - FtMint { - owner_id: account_id, - amount, - memo: None, - } - .emit(); - } - - #[private] - fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { - let mut events = Vec::with_capacity(batch.len()); - for (account_id, steps_count) in &batch { - // let steps_count = steps_count.0; - internal_deposit(&mut self.token, account_id, steps_count.0); - - let event = FtMint { - owner_id: account_id, - amount: *steps_count, - memo: None, - }; - events.push(event); - } - if !events.is_empty() { - FtMint::emit_many(events.as_slice()); - } - } - #[pause(name = "token")] fn burn(&mut self, amount: U128) { self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); @@ -308,37 +278,13 @@ mod tests { assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); } - #[test] - fn tge_liquid() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); - assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); - token.tge_mint(&user1(), U128(9499999991723028480)); - assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); - } - - #[test] - fn tge_liquid_batch() { - testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); - assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); - assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); - assert!((9.499_999_975_169_082 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); - } - #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint(&user1(), U128(9499999991723028480)); + mint(&mut token, &user1(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); token.burn(U128(9499999991723028480)); assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); @@ -351,7 +297,7 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint(&user1(), U128(9499999991723028480)); + mint(&mut token, &user1(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); token.token.ft_transfer(user2(), U128(9499999991723028480), None); @@ -367,10 +313,8 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); + mint(&mut token, &user1(), 9499999991723028480); + mint(&mut token, &user2(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); token.token.ft_transfer(user2(), U128(9499999991723028480), None); @@ -387,10 +331,8 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); + mint(&mut token, &user1(), 9499999991723028480); + mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user1(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -404,10 +346,8 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); + mint(&mut token, &user1(), 9499999991723028480); + mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user2(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -421,10 +361,8 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); + mint(&mut token, &user1(), 9499999991723028480); + mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user1(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -438,10 +376,8 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); - token.tge_mint_batch(vec![ - (user1(), U128(9499999991723028480)), - (user2(), U128(9499999991723028480)), - ]); + mint(&mut token, &user1(), 9499999991723028480); + mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user2(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -451,4 +387,8 @@ mod tests { fn get_oracles(contract: &Contract) -> Vec { contract.acl_get_grantees(Role::Oracle.into(), 0, 10) } + + fn mint(contract: &mut Contract, account_id: &AccountId, amount: u128) { + crate::internal_deposit(&mut contract.token, account_id, amount); + } } diff --git a/integration-tests/tests/happy_flow.rs b/integration-tests/tests/happy_flow.rs index c217be1..b63a411 100644 --- a/integration-tests/tests/happy_flow.rs +++ b/integration-tests/tests/happy_flow.rs @@ -2,6 +2,7 @@ use serde_json::json; use tracing::info; mod common; +use common::helpers::payout; use common::prepare::Context; #[tokio::test] @@ -9,25 +10,27 @@ use common::prepare::Context; async fn happy_flow() -> anyhow::Result<()> { let context = Context::builder().with_oracle().with_claim().build().await?; - info!("view formula(steps_since_tge=100000, steps=100)"); + info!("view formula(steps_since_tge=0, steps=100)"); let formula: String = context .sweat .view("formula") - .args_json(json!({ "steps_since_tge": "100000", "steps": 100 })) + .args_json(json!({ "steps_since_tge": "0", "steps": 100 })) .await? .json()?; info!(value = %formula, "formula result"); - assert_eq!(99_999_995_378_125_008_u128, formula.parse::()?); + let minted = formula.parse::()?; - info!("call tge_mint(alice, 100_000_000) [signer=sweat]"); + info!("call record_batch([(alice, 100)]) [signer=oracle]"); context - .sweat - .call("tge_mint") - .args_json(json!({ "account_id": context.alice.id(), "amount": "100000000" })) + .oracle() + .call(context.sweat.id(), "record_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 100]] })) .transact() .await? .into_result()?; + let (expected_amount_for_user, _expected_fee) = payout(minted); + info!("view ft_balance_of(alice)"); let balance: String = context .sweat @@ -36,7 +39,7 @@ async fn happy_flow() -> anyhow::Result<()> { .await? .json()?; info!(value = %balance, "alice balance"); - assert_eq!(100_000_000_u128, balance.parse::()?); + assert_eq!(expected_amount_for_user, balance.parse::()?); info!("call defer_batch([(alice, 1000)]) [signer=oracle]"); context diff --git a/res/contract.wasm b/res/contract.wasm index e3acf46f19252dfc2f5086d5045769a907454a9b..d49eeff6e91969997e2bcbe7cf139d4d74821953 100644 GIT binary patch delta 146790 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

eZwcoRsh9D7s5p^A$-A&Q?I;hb)G4DFKT6vLb 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

nH(+ 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 diff --git a/res/contract_abi.json b/res/contract_abi.json index 36f0bf0..c68e900 100644 --- a/res/contract_abi.json +++ b/res/contract_abi.json @@ -7,7 +7,7 @@ "compiler": "rustc 1.86.0", "builder": "cargo-near cargo-near-build 0.11.0" }, - "wasm_hash": "GpNoUBGR5FESYU29Hf9APVm8UpHukHBaoe47Ydvx4Cou" + "wasm_hash": "BstPokT2qYani2Df5Uvhz36MiHjv4mdj2Lk8thCfXZZJ" }, "body": { "functions": [ @@ -606,13 +606,6 @@ "minItems": 2 } } - }, - { - "name": "holding_account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } } ] }, @@ -812,6 +805,20 @@ } } }, + { + "name": "get_holding_account_id", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": [ + "string", + "null" + ] + } + } + }, { "name": "get_steps_since_tge", "kind": "view", @@ -861,6 +868,16 @@ "null" ] } + }, + { + "name": "holding_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": [ + "string", + "null" + ] + } } ] } @@ -1048,6 +1065,25 @@ ] } }, + { + "name": "set_holding_account_id", + "kind": "call", + "modifiers": [ + "private" + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } + }, { "name": "set_restricted", "kind": "call", @@ -1202,63 +1238,6 @@ "$ref": "#/definitions/StorageBalance" } } - }, - { - "name": "tge_mint", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - } - ] - } - }, - { - "name": "tge_mint_batch", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "batch", - "type_schema": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } - } - } - ] - } } ], "root_schema": { diff --git a/res/contract_abi.zst b/res/contract_abi.zst index 50d36f9125016ec8db8b9ab8c27a256f4ccd224d..eef38ec1652707bba6d594679c07bbf924bd891b 100644 GIT binary patch literal 2242 zcmV;z2tD^GwJ-euh|NU+I!_1=FF@l8FpMz)(E!u{*8rVyFB1T{Q_}MD9F?!vDD|x}tkx}eCN4HF#kdF8qoDU~KZ0B_JWXDly6W%xh$2x$YJS%H z$PPmzv?HQIvxKwZ0RH!=&40{a9^`Kw!ImIF20iZFz1$nZ8uZo zQNC|+S|BGwAp!zvKr`CQF(W&@Enz_-(DpvN8NLjY&A~S-0;xbE__qB~HpVtaDO0q+ zZlAFT6AefQ(m*stQ9f_>P>b=^JW2`Ml5(!u^0@sAC(q)}DDG^__kFz{ic6%2TjX}< zMEvV{okdP!4vI_pUfU5I8h`Ow>@)!uw}9g)pZmj_Gv<%m9mn_|XuCK1hdnqT4NMU> zv3HO#n>+mRWv|3P{5<~LY0jpHI1z+1EvOnAI`uE`$ zCkRH_@2~UEWyX#ZtqoAzkc5PXtDHR&i<5i)vPEqM;u3!$p8XMKW;U1Vnulo^prg(JtkE zP7R)LLwbW{hYB!GmQ!GW*?7k9SNpBlQQUe;r?8$C!xo`XD0H$|eAvEx>)A<)IN(0# z7Q$6aDkhQ~D|gF}&)KzfjvyLv;S3NkEGS?up#%gzFwl(!lWk2?wi%c2g2s7u8(4{8CgHl z^1Ob^*mUQf`%5vxP932cK3)AALntSr%lD$1qip=X zIg<@#g@GDp?r^c!*g5VuO`>m1QppGt(#b)7mZo@oSR;Z6sN$1UI%cRuBuSFA24WZp z!@)Sz;W2eL0+A$1K_tX55JM0lhDZS+h6o5EB9R0l!N?3rdIu$AZFN>A48T*c$Vf&U zEDvMJj|^xJ=lLi72W$gB-!dd9S5eC5dkhH)2VJ7tMVlri;*8Q7k_9J)=$*kV@ohb6 ztFqSN>xcu8t*LUjsv2Mdcqj#_OdhIB-SmHSjttXg0fr6~HTQwCC^RM@d$qKKh|-3x z;H3%*qZC3?(omrQQ$yFJQz$uePI?`I5{7?#k3bc#As8XnGDdldsm|t~<+KD7e_dTt zSRHrW;ULBBEB=e-WEHpGtb*TLk7DYH5{cUx;P4$O9PFggfYrMYKj$vkDP2})455V< z4jld}@>Bxk1KdZCXPHmx1idz~l$0~}qq7wS%%q94f#Tf3T@#m4C`C@iv${aTT4rNC z)0`VH7otcq*VQ<3lEyVtwgxvC^KLSRux|_tDYXmmRKo~x+gr*LUaKZ+qubT9IlRM# z%}WecD1UA}Q&W0gqsE5iLM2EQj1zr<0v0;L2&MqIQhSIXi7~FjlX;BzV%Rpr1;ojh zx?wZgXL>x!Oc{!^VK32h}Oi!1K$I6Y$JA0yTYZ++bKzbP)JY7A_iS{t?uAIpDb_ zt0xd&vWQ{cz=X>ln)SIC^@zNv^^~XT7%qM?yCPmMS6ZtB8fzQ4+^6}0zzZ2M&by9^V6Gf;NO%#d{ z?e>-!xh^#Utx~5}_GDu&S^8C0OGjl^t%#v*l}9UTESPGVj%YM#{xz<-hf+yz@_6dA zg|vwb(g9`$rx)HI6J>tPcbI5#GX?teb_7ACJzM(rPfg=JQdW2n$&hkc;x&K3KQA=w|7=`VKbI>K?aQB5nv`!K`W*5pCe%VMb`j+AIH>qsLL zu}!PSm42S}s9Y&6o1ipbq!at4Ec?j-emvm-vL`YT01?0yF(aHYoIAdOH!dYXLSiq0 zq@`%3ET99g@amI^u{VCFf}`t~Kz63jZI|!cn$J0%4Htp8xF(1{uyG<1`rhp>30o0& z72#i+jK>`JQI0b7Ml}t9peK2`@ai$%M`u9y(|U7lY5M9|jGRKwj-v=rUn=t2m;|Mj zg}H!Neq#jyefWp<`|qlDb?SnOZ!uGWo&SDf=4bFn6Pm_Y=NoCwMB5R%mIHBc80m7K zo(Oipshn(yMAgKQM+!T@_6cc2|H7&mA`R)Nt@MQiWEedqOuY&|B%P(Xyx|I!&Q0AM zkkKK6nSA0R>X9xLu#IDLqPCj0vk1`WEV~XHasB>{juQp1}v%o1HuMKH0%MU^cJI$(n}LU!3q0;|fu QH=yWZJ#i~6?DLPW6-MngNdN!< literal 2248 zcmV;(2sigAwJ-eui2X$XI#4VQH9&2X4#O}E!@xR*^^qG}+ftH|y=f@cT9WoAnW}{o zJWKRU9gnk4MdDca$VjhqeNxLX>|D|S)BxB3d>1#uTI9h|eR(v_UUN{Mj!@F1Udx43 z@`5bgF?W%-?)on#84EN0m%nsAm`(FeQl{U?Qz~8(!kSY|YFaPtr{RP=YG^N}Cbx@) zhw(6;eVbapGYDys6)YM^=&J4FGuEPh5iZMX+Z^4&g`A<%bfg=a)3#@(bhUDhy_WGB z#h6BJ=>&54!Pe`=NyFe~6A|%1WF%MrBG9tBC@P+aT+MO!u2mFV%(W;*JQ7btFWr7{ zozmxQK#sOD?NbiKfp{h!2nTW=Y`n)rO8v6f*$5m_8>PFY3nRw%6F=Rq&}h@Qif++` z&DvHm(K8_C>wTFi&Ra2UD~CafHBTefOJqSo!tJ%`O!6>&1F%2Xm>adP{(ia^rru4X zyXthKnuB;CAcu-no1ln$%loyeWpL&V!+p!XioBsX&c&y9aMCXFmjZF}F=fNYp@SnO zk~HvmICdX#OK<>!w4Fl-2g3oN_ssfmRJxfLpNHeTT0IWN<6tC$Oz5jQ&Au}LK~bJ# zRw@;~t0>iIkPi=!NaPO;f`jt)&c41??lzd@&k5OCJOU5O1OcyOVqgP-Am$7k5R}2V zIc`do1Qqc>CC?;J*vYJJ<-T%%P;p@$!vw`y6-NF-3zeQ_GX z?boR2md@z1OSjC|iyHUfHaE++8^h{snxJ{QQJ~<0Nqs&BQj{0JvGr4=mF5}THjmp5 zWWvr-tH?QxwE8EuaD6q})C{Z4AA7Iwg@q#uq)us6<0_{O8`JjeosV%a!g~g^a3?j( ziw-8JPNk?POE-2=!lP3RJK=C6=HNvFf`(Eg1VAQSz4@|QrL*X3BMh6(X7d`Q4Vz*V zdK?N)8)NF6<^&VsJnZ>h*st-~LjJpu4-X1NM1cwdkjI8%z$XOc#6iKGAgIy^7uE*} zp-3bo0%HPT9g|Rg;j=V|ZS3!>cOfBri$0BTj!Ge=SV`(&=Q~PmyLBtcXV$9aWwlEt zAyj9t&DtEAggWC@-V16YvQgW3n-!J7cddXJyG&yo|uR8}9I2YDS zw4c5YuD9M-a2=E=&3eV`lxpjYeOuJf>lq~IKsE_6_crCmMdlK+SEK}j2B`9jQaXmH zL?lU)v<6}r2*bfV(!sfuH}a??Niiq{A;u772r*1R2r&Y}NFb2}BEiTENqPq%V_#=H zln|u`4^yzr?87ry5#~fLn%_H|5uevSpf34YOZzo`MYS|v9pbwW+LIy?$}}k<&NQW= zGjM2#02$0`-$jy6o7Ev-6&pYkO~v|FJsuO#Ln)q0`C+8ht;t6g%kKOaj;?=A`?(9PR~DwD9FsYG+>>S;abKPi(B+FL$(FeA=&-ggz;0PIlyP{e=i5x z?5`yRj?l(H3wJnGR;EGWa|=$b8_*xyNoE34l2o}h;iCZ~k4ax=;KmfpLG#kLQP~nP zYF~sgJpZR=IbpU$1 zMY;c z^>nE|W2N#Jzo%r;-szbZ7a7h_MkqI#4&8LvLPj-7+5tD9ix;7?;m5!9ldfR1qJt)g z-#sWABWfiSeK$uBC^Yn!lmyt)j>)8?HvbP2dm9ZqW(5lPC$Je0hhp}`EiOZWcA9sT zb{?1q;Eem6g}bgUtdH2KE|yBvVp^y1!C3;E;Y_Fj_n?mtOgZJU@EogW9FE+3w5C9NXN1?=(bCIIN6GDzNk-GeLl*%bSh_`2^%q9x|~j0e!%$r$T=Bh91HIE1d@ zbQ}amy4&X=@*EI1a;8Y4KVnauLhxWURa%|DgDcY^5s$d6^!@~f22XxWzsfcgbka=Q zQ1pd Date: Fri, 22 May 2026 15:45:11 +0100 Subject: [PATCH 13/46] fix: revert steps count on batch record failure --- contract/src/defer.rs | 29 ++++-- integration-tests/tests/callback_attack.rs | 1 + integration-tests/tests/defer.rs | 107 +++++++++++++++++++++ 3 files changed, 131 insertions(+), 6 deletions(-) diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 2b6b639..973d5d5 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -24,9 +24,6 @@ impl SweatDefer for Contract { "Not enough gas to complete the operation" ); - // F-03: the holding account is a fixed, super-admin-configured value — - // never an Oracle-supplied argument — so deferred mints cannot be - // redirected to an arbitrary contract that skips staging. let holding_account_id = self .holding_account_id .clone() @@ -35,10 +32,12 @@ impl SweatDefer for Contract { let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); let mut total_effective: U128 = U128(0); let mut total_fee: U128 = U128(0); + let mut steps_increment: u64 = 0; for (account_id, step_count) in steps_batch { let (amount, fee) = self.calculate_tokens_amount(step_count); self.steps_since_tge.0 += u64::from(step_count); + steps_increment += u64::from(step_count); accounts_tokens.push((account_id, U128(amount))); total_effective.0 += amount; @@ -68,6 +67,7 @@ impl SweatDefer for Contract { total_effective, env::predecessor_account_id(), total_fee, + steps_increment, ), ) .into() @@ -76,15 +76,32 @@ impl SweatDefer for Contract { #[ext_contract(ext_ft_transfer_callback)] pub trait FungibleTokenTransferCallback { - fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128); + fn on_record( + &mut self, + receiver_id: AccountId, + amount: U128, + fee_account_id: AccountId, + fee: U128, + steps_increment: u64, + ); } #[near] impl FungibleTokenTransferCallback for Contract { #[private] - fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128) { + fn on_record( + &mut self, + receiver_id: AccountId, + amount: U128, + fee_account_id: AccountId, + fee: U128, + steps_increment: u64, + ) { if !is_promise_success() { - panic_str("Failed to record data in holding account"); + self.steps_since_tge.0 -= steps_increment; + env::log_str("Failed to record data in holding account; rolled back steps counter"); + + return; } let mut events: Vec = Vec::with_capacity(2); diff --git a/integration-tests/tests/callback_attack.rs b/integration-tests/tests/callback_attack.rs index 7b29815..d3e95dd 100644 --- a/integration-tests/tests/callback_attack.rs +++ b/integration-tests/tests/callback_attack.rs @@ -67,6 +67,7 @@ async fn test_call_on_record_directly() -> anyhow::Result<()> { "amount": "1000000", "fee_account_id": context.alice.id(), "fee": "2000000", + "steps_increment": 0, })) .max_gas() .transact() diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index 05fc987..a426520 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -225,3 +225,110 @@ async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { Ok(()) } + +/// A successful `defer_batch` advances `steps_since_tge` by the batch's total +/// step count — the x-axis of the emission curve must track minted steps. +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_advances_steps_on_success() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_claim().build().await?; + + info!("view get_steps_since_tge [before]"); + let steps_before: String = context.sweat.view("get_steps_since_tge").await?.json()?; + assert_eq!(steps_before.parse::()?, 0); + info!(value = %steps_before, "steps before"); + + info!("call defer_batch([(alice, {CLAIM_AMOUNT})]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), CLAIM_AMOUNT]] })) + .max_gas() + .transact() + .await? + .into_result()?; + + info!("view get_steps_since_tge [after]"); + let steps_after: String = context.sweat.view("get_steps_since_tge").await?.json()?; + assert_eq!( + steps_after.parse::()?, + u64::from(CLAIM_AMOUNT), + "steps_since_tge must advance by the batch step count on success" + ); + info!(value = %steps_after, "steps after"); + + info!("done"); + Ok(()) +} + +/// A failed `record_batch_for_hold` cross-contract call must not advance +/// `steps_since_tge`: the `on_record` callback has to roll the increment back. +/// The holding account is re-pointed at Alice — a plain account with no +/// contract — so the XCC fails. +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_rolls_back_steps_on_failed_record() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_claim().build().await?; + + info!("view get_steps_since_tge [before]"); + let steps_before: String = context.sweat.view("get_steps_since_tge").await?.json()?; + assert_eq!(steps_before.parse::()?, 0); + info!(value = %steps_before, "steps before"); + + info!("call set_holding_account_id(alice) — a contractless account [signer=contract]"); + context + .sweat + .call("set_holding_account_id") + .args_json(json!({ "account_id": context.alice.id() })) + .transact() + .await? + .into_result()?; + + info!("call defer_batch([(alice, {CLAIM_AMOUNT})]) [signer=oracle] — record XCC will fail"); + let outcome = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), CLAIM_AMOUNT]] })) + .max_gas() + .transact() + .await?; + // Callback must return cleanly on the failed branch — a panic would revert the rollback. + outcome.clone().into_result()?; + + info!("assert the failure branch ran"); + assert!( + outcome + .logs() + .iter() + .any(|log| log.contains("rolled back steps counter")), + "expected the on_record failure branch to log the rollback" + ); + + info!("view get_steps_since_tge [after failed defer]"); + let steps_after: String = context.sweat.view("get_steps_since_tge").await?.json()?; + assert_eq!( + steps_after.parse::()?, + 0, + "steps_since_tge must be rolled back after a failed record XCC" + ); + info!(value = %steps_after, "steps after"); + + info!("view ft_balance_of(alice) + ft_balance_of(oracle)"); + let alice_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + let oracle_balance: String = context + .sweat + .view("ft_balance_of") + .args_json(json!({ "account_id": context.oracle().id() })) + .await? + .json()?; + assert_eq!(alice_balance, "0", "no tokens may be minted on a failed defer"); + assert_eq!(oracle_balance, "0", "no fee may be minted on a failed defer"); + + info!("done"); + Ok(()) +} From 435b82ae013e0f538f76e9c00f91d4787e8b909d Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 10:42:37 +0100 Subject: [PATCH 14/46] feat: add migration --- contract/src/lib.rs | 3 +- contract/src/migration.rs | 38 +++++++ integration-tests/tests/migration.rs | 163 +++++++++++++++++++++++++++ res/sweat_old.wasm | Bin 0 -> 204943 bytes 4 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 contract/src/migration.rs create mode 100644 integration-tests/tests/migration.rs create mode 100644 res/sweat_old.wasm diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 1e057ed..5efaba9 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -23,6 +23,7 @@ mod core; mod defer; mod integration; mod math; +mod migration; #[derive(AccessControlRole, Deserialize, Serialize, Clone, Copy)] #[serde(crate = "near_sdk::serde")] @@ -37,7 +38,6 @@ pub enum Role { #[derive(Pausable, PanicOnDefault)] #[pausable(pause_roles(Role::PauseManager), unpause_roles(Role::UnpauseManager))] pub struct Contract { - oracles: UnorderedSet, token: FungibleToken, steps_since_tge: U64, denylist: UnorderedSet, @@ -51,7 +51,6 @@ impl SweatApi for Contract { #[init] fn new(postfix: Option, holding_account_id: Option) -> Self { let mut contract = Self { - oracles: UnorderedSet::new(b"s"), token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), diff --git a/contract/src/migration.rs b/contract/src/migration.rs new file mode 100644 index 0000000..1ebaa11 --- /dev/null +++ b/contract/src/migration.rs @@ -0,0 +1,38 @@ +use near_contract_standards::fungible_token::FungibleToken; +use near_plugins::AccessControllable; +use near_sdk::{collections::UnorderedSet, env, json_types::U64, near, AccountId}; + +use crate::{Contract, ContractExt, Role}; + +#[near(serializers = [borsh])] +struct OldContract { + oracles: UnorderedSet, + token: FungibleToken, + steps_since_tge: U64, +} + +#[near] +impl Contract { + #[private] + #[init(ignore_state)] + pub fn migrate() -> Self { + let mut old: OldContract = env::state_read().expect("failed to read old contract state"); + + let mut contract = Self { + token: old.token, + steps_since_tge: old.steps_since_tge, + denylist: UnorderedSet::new(b"d"), + holding_account_id: None, + }; + + contract.acl_init_super_admin(env::current_account_id()); + + for oracle in old.oracles.iter() { + contract.acl_grant_role(Role::Oracle.into(), oracle); + } + + old.oracles.clear(); + + contract + } +} diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs new file mode 100644 index 0000000..ece0204 --- /dev/null +++ b/integration-tests/tests/migration.rs @@ -0,0 +1,163 @@ +use std::path::PathBuf; + +use near_workspaces::{types::NearToken, Account}; +use serde_json::json; +use tracing::info; + +mod common; +use common::helpers::init_tracing; + +const FT_POSTFIX: &str = ".u.sweat.testnet"; +const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); + +/// The previously deployed (pre-ACL) release, used as the version the +/// contract migrates from. +fn old_wasm_path() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("..") + .join("res") + .join("sweat_old.wasm") +} + +/// The freshly built contract under test. Mirrors `prepare::sweat_wasm_path` +/// so `make build-integration` output (or a `SWEAT_WASM` override) is picked +/// up the same way as in the other integration tests. +fn new_wasm_path() -> PathBuf { + std::env::var_os("SWEAT_WASM").map(PathBuf::from).unwrap_or_else(|| { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("target") + .join("integration-wasm") + .join("contract.wasm") + }) +} + +async fn create_user(root: &Account, name: &str) -> anyhow::Result { + Ok(root + .create_subaccount(name) + .initial_balance(INITIAL_USER_BALANCE) + .transact() + .await? + .into_result()?) +} + +/// Deploys the old contract, builds up some oracle and token state, then +/// upgrades to the new contract and runs `migrate`. +/// +/// Verifies that migration: +/// - makes the contract account the ACL super admin; +/// - moves every legacy oracle into the ACL `Oracle` role; +/// - preserves token balances and the steps counter; +/// - leaves the contract functional (a migrated oracle can still record). +#[tokio::test] +#[tracing::instrument] +async fn migration_from_pre_acl_release() -> anyhow::Result<()> { + init_tracing(); + + info!("booting sandbox"); + let worker = near_workspaces::sandbox().await?; + let root = worker.root_account()?; + + info!("deploying old contract"); + let old_wasm = std::fs::read(old_wasm_path())?; + let contract = worker.dev_deploy(&old_wasm).await?; + + contract + .call("new") + .args_json(json!({ "postfix": FT_POSTFIX })) + .transact() + .await? + .into_result()?; + + let oracle1 = create_user(&root, "oracle1").await?; + let oracle2 = create_user(&root, "oracle2").await?; + let alice = create_user(&root, "alice").await?; + + info!("registering oracles on the old contract"); + for oracle in [&oracle1, &oracle2] { + contract + .call("add_oracle") + .args_json(json!({ "account_id": oracle.id() })) + .transact() + .await? + .into_result()?; + } + + info!("recording a batch on the old contract"); + oracle1 + .call(contract.id(), "record_batch") + .args_json(json!({ "steps_batch": [[alice.id(), 10_000]] })) + .max_gas() + .transact() + .await? + .into_result()?; + + let oracles_before: Vec = contract.view("get_oracles").await?.json()?; + assert_eq!(oracles_before.len(), 2, "old contract should have 2 oracles"); + let steps_before: String = contract.view("get_steps_since_tge").await?.json()?; + let alice_balance_before: String = contract + .view("ft_balance_of") + .args_json(json!({ "account_id": alice.id() })) + .await? + .json()?; + assert_ne!(alice_balance_before, "0", "alice should have a balance before migration"); + info!(steps = %steps_before, balance = %alice_balance_before, "pre-migration snapshot"); + + info!("deploying new contract over the same account"); + let new_wasm = std::fs::read(new_wasm_path())?; + contract.as_account().deploy(&new_wasm).await?.into_result()?; + + info!("calling migrate [signer=contract account]"); + contract.call("migrate").max_gas().transact().await?.into_result()?; + + info!("verifying super admin"); + let is_super_admin: bool = contract + .view("acl_is_super_admin") + .args_json(json!({ "account_id": contract.id() })) + .await? + .json()?; + assert!(is_super_admin, "contract account should be the ACL super admin"); + + info!("verifying oracles migrated to the ACL Oracle role"); + let grantees: Vec = contract + .view("acl_get_grantees") + .args_json(json!({ "role": "Oracle", "skip": 0, "limit": 100 })) + .await? + .json()?; + assert_eq!(grantees.len(), 2, "both oracles should hold the Oracle role"); + for oracle in [&oracle1, &oracle2] { + let has_role: bool = contract + .view("acl_has_role") + .args_json(json!({ "role": "Oracle", "account_id": oracle.id() })) + .await? + .json()?; + assert!(has_role, "{} should hold the Oracle role", oracle.id()); + } + + info!("verifying token state survived"); + let steps_after: String = contract.view("get_steps_since_tge").await?.json()?; + assert_eq!(steps_after, steps_before, "steps counter must be preserved"); + let alice_balance_after: String = contract + .view("ft_balance_of") + .args_json(json!({ "account_id": alice.id() })) + .await? + .json()?; + assert_eq!(alice_balance_after, alice_balance_before, "balance must be preserved"); + + info!("verifying the legacy get_oracles view is gone"); + assert!( + contract.view("get_oracles").await.is_err(), + "get_oracles should be removed from the new contract" + ); + + info!("verifying a migrated oracle can still record via ACL"); + oracle1 + .call(contract.id(), "record_batch") + .args_json(json!({ "steps_batch": [[alice.id(), 5_000]] })) + .max_gas() + .transact() + .await? + .into_result()?; + + info!("done"); + Ok(()) +} diff --git a/res/sweat_old.wasm b/res/sweat_old.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8b9464de8297707345a0b5a7d8f41570c6a43569 GIT binary patch literal 204943 zcmdqK513t5eeb>Z+UJ}(GiN5*`9lnZUiUeqc2Y@AEhdz5YxZ13x!Q`B>&w%}=M5=| z!WjM~0r7p13=lDDlxWe$D{2HzTfmRqq!MT_!&zQ48B zKKsm^fk5>>&-)Ucz0cn3&u{(yuiyHuwUf;|&P$UdNx$cwb5^!%*RFKeS+7XSvHSPtM9Nzx;B4&)+mWNX{DJvHnZWYWo}AHvE&(_=HEPDmU!`H}s`q^hg)# zI614SA6)GraAdpGQYw)6qbipRoLG>@D(PFXKKY?OT6(IYZMEkCNo-t{wNAKZm)j^+ zmjBcn50bOS{O|B=B>dvF>Z#38!4KPtU2cOFfbMcbpNcV}%WTNNewp>n&t?FICzk=c zV08c1DzdHTU(&g7`_>CLpSxw#D>v^*8hX;+cEKw*UA*%ZCnin(JnF*j7o2zQj;))v zZ{2b6ww*gRoqfT@=kN4I$1mBu?P9&zdGYr1eesDMJ1^M2`ITEYUA%+8zSz>(#P4k0 zdGQzFuL0QecW$S0GOD7zp+#SD@%f?k&D*vmV=B1ji3@Ie_11G=dCtzHqw+sDv^+hZ zzvC5Kw|mSSGqlW(ots~^H5peUYljxtyk*O#S8aXGrdOZ4^PEkuxOm$(jehHn9lp-9 zj-*a~coXXB=|gL6*}84(&aLXqV{14GLa9gs!z)bWd1UkXTRiy|#V3I`j8bD4Za)9q zvunIHzJ2Q}&)u-J6CV2MQnZ2}(H0!R7h9&=02zIglgt>^EIbl-IDmc$xd0rPIz zDr{V^ecsFFx#wSa@lIbb-@J3@=CjY)x@8l5alwvr!{gSDb2dNwIqUs!Yaol!{WvOi ze)aZqVa>$?aXhlPK=q8gsQ>7^3ohB}A1;m$&)K}gusV|MX}Ls9*oj+U*=D4g);Xf>e!mhfXmqE`5CMY2Md>Ob0dE0!$DmM_l|!3dCYW~v|GC3X!l=^Ub>X>>C&Z7cT2OQd72)()E%uJ`B8KQ z)zMk8bji{sONyn-(jLE#K3XN0s6fL1kEQg{M`vl0E>E30PM5lL31e7FhuLwfj{#hP zc8uT#=ATcVkuF{K3(NFaC|SavELpN-DTqCWR+7YJOF*d0R;`-kzh&tPO7S0pJW@a|&>`Ka8K5>U#59&JdFWJwv&f9w41>0ZalFlo3ZmM+3zomKY=ccozyMB}| z*0T$CZr-+O$Hf<3xa~E`>)iy8erNNx&F7!Jb<+i}NcOmjFQY8H!R3)vrDe8k-~8(2 z8n-k)yZHP{9N+3z#HX>z-@zPg*^yk^FCX8~+1uSRddG5Hu{k)5}ZBAyL z$W{&Eb~m-k% zrRROw{mA_=`%wC|>>u1d_YL>3yFR-iJCNO&{ZaNe*>~Kh-G8|6yF0Q+vrDF5dG1@% z3(mXnE!n%$|C#>8y)%8;=d)A)BRl66mwq<8%l*0gOZQjqk?hah7u;vv=iEK+%h@&A zm)uv}_p@)gZ@YhVkGVHx|I>XiyCwTj_P*@B*}Jn(WS`6qWnakd$sWtz*tnwcgKVbp zlkCUY8yatJys5DlmG=6^p2pa_9v;2A@wtgcy31WYj#qNr4F4tNf%H{9x7zNDv_RI9 zUN)6prn`2pQDjBqj8z-5q)fU^x3T`uUQHz9X{T`I%IPAVba|2G?^COVn{+FCEo5e9 z=F(Fq?Dw(Vk;3UkvEEH`H?rQXre?C4dh72>lig9bG1~|t z+b^C-=^-te&)4v67&No9+*LHoUH_dni*~{PPg|A$zHfQby`bCd@GL!TqM^o4=?b$# z%vdq1=dbFGbHo1uX`(#vgV~uR{{ySsDbnfgB30U*c1LxcNj*fDbrQ-X@}ptX6E+Dz!Yn4rjbIcraEj$j%!8%16$E)Ut8KeRU! z&zoq2R)#z=-J8%Tl47Epg49lV;E(Ts)s8J6{Gnief7Sk&@jx*OM;Lgz^hQ0~OfPb2 zTTrZVr$As4GA**3x=l}}wvnk2k&4q+l}RL!7-|NZh(hfR?oy*i`*{;QDjDjTffj++ z?uFOVir3&g|GLg=3<+*Kr{cDA=5pKG!$!}2=4TnZVe&NVnw!yuKJ4nEbBE4m*xVmWGvU`I&MF?B(E-c&> z^=9C9$?3jyx;!kZuXi+1W+x^4h1p`g+oLOwuMJlbLBD~Q8&JF6?bV~ZD}nxy;F-vH zCNe-!FZ=E3N#~mveCKS)L^FwjmCHY@S{eiJA|wG3l4yh@{SD*pl+iVd(fpvwO1wn| z9+W9)_#-{+HJ>-p069gv-mT+;SRYRZCrnGw@{g#9+o*r)g7@8qY}n)Y5p-aWQr&MxNgT=ouXBY zc*J&!L?~)-0Y&QXKsvpeVl&BNv<}K_)@1rtJxMy{y${_^qZ=p(@Z}@ol=8vv@+|*^ zFX0u-SYPn{5P;{9!E=m<#}l{{fGBU+qlS*jKj|BJU7Du5f&nXD)yq6UMlM;f!kq~N zWMV0-(zrKGF8>Bp(BtLPMaJVE>I9pWf72fO7y13Z%%p3>242Qsous7SnM*+cHl-{A z0yN*oh*LpF8G^LXc=b^(WV^+!stOL`_aK5Sbd+kwF?P<{xQBzsr zga#Tk&?y>a9*6eZeFQVI;2?Me14G%6RrA$M9pf&zWJA_A7H&`He+y4jKuS145Tu2w zrr%m49&Oi%=iA39r(LIJ({k5~WJcY_!UcksDRlYEtBjDsmz4ualuh%$h|iO*qf2lm z_C?^pk+@hij$kbA^YQ(DirQjy)?hoID+QY#S2&UGHGKg zNvkT}nC?2WGEN4DdJ-}~S1DIwnB92N0l7uSlORv+&J{H*z{1VQJEGx>>Awk^P6>D1 z0s1(XYaf}F$`FBP--kh6kHggzlQ;4^gm2Ky2y3Hd>_zq}Rn}-SREX+U?ECr}2K%l5joSKkLAL!RvMry0h9suq5O3k1y0W*x+DRNe8%`rFT{6X9jXi0Ji(Jg2}!z^ z3-&~IH!YI<-!!03=iz47#2>eY;n$>8<=0I2z*OO0xT=eYmf3WP>yW<6oYXAaD0$Go zLL@~Pd#%~tNSVAqOar;g>>~INWW0F7nJb!2Q|0`PMZC`=j>b<;tdJ$7|Hzv)P(pBM3n{ZPJt;nSw?daCO z8jG(+$J@gnkIaXGQMRU!r=QR4`tK7hIXr1GrU%`zfQD9i02me}{UD2CADv>XJnN$J zz^+p#8d8m8<$GzsaSP@~%BN4u{VK<$nMcaYFDlP}J{oqc-1vft3~$)qc_lR19kpBK zK00isNs>sljg*UhWA26ElqP;NHt`T9P`#{!6w+s7%rc&eY``6=`L^kGpjs?COFdr;8jD|{&n>%)QJg**69hqm z*OKZoT!^mRF#wnn-4wV=M1kv4DH%~dLmb3LDg|1(fz?fxP1q$(RN&HigX_yDil=T} zlC??0`=&|R6n~wRFl}UhS?M6>6;f0)5*Sp)v0NUx*L2WI0HT|mCnyK$DLepLfcLwU z=5gC}knToIPBF~O0ao4Qv#Qb!)7sV3Q>pjkOgp&pqhfn$2p9Vw_r2jR4C!J>!!m{I zf|V_j&ToK;l0jel2^9J6;_|gjDMYrhXyT=f$f@qOJ&OFuij1j&zeOf`PF@R* zNNQ+F8X&kcYm>Bm?nRoQmruW_J7PUV>nH3#6aD_^&3x_rfH+?+aHUUJ$+z2-!!AVQqzKlHD+!<5xT zzx=If!!hN*Zu6)_Ge@->oHMzhv@6iCd99*(kp(Jh0EB`KUl0be`UZXk6*Ehd@loeT z#H6ElekiHb3^2gstBYz{E7ftQCM(}Xki=;=t$h)fV!b=r7boPSS||9+@i3Pwk41NE ztp6*JwJ9?Q#A^ z6%#AZd4%Xm36_VFN@*^xPcyL$`wTY&v&`klpN-Wp;JfR5Oxp1{;0N{nNey!0XJA>M zmeN*@Mb7A$O{CsUL?a|f8x+YT-XOAvdTJo!(tF-O@;txpiZ~LludC3M{6qXfApy1I zRZ23zJ5Wcb5QeiFQ5R2PU*?zKA^COy= zVR8G_zH801D0D2BoBdp7CAY8lFHfKal@}Pg%egzz?&M0W;|T%qY8JK_wBAxAx8%R8 z+5|;_)NKUy>2G8C4p}U;TOLwKqf(I=R@1O1Hbwf{n|c5)%LR6L@&0M4E>vkMi!Tz&H1YiJi@=6}cf!b=D@Qhv@F4I|G44LQjt# zAT{&bRl0mw^}CurSfhz~_7(@B{E0or^g@g*<0+C?abcK~7d7YfSz6 z9$eClOVOHgSMTz3FuRpe(c4b8p&B;8CjXKHbns84Q29u1Lyl(|w6v?j!wl4-8Gg z&}&vu^e_(#^o+85oStbZjKtIO+jOp;clCQN8aI{ewx5)2#ZY5H@xZ<1E=6Arh$_E; zc;c8>}bGkN6ZzY#2D13|v}9(Ju4(`LP6-WG2yC%ZS<@p|SQf5S<1O6(e+wC8a-^T|6Q@ zS!R=lVSd~Hx6MD~jsg@wovgMmJZUxZ!CD*sx z!Wt9(pga5^1tyu;C_G@e?Ke%)*lt_xwrI0OEM}lhMbp$~TWyZ3O&U}1a9lpe7_AyM zMc>|nByk0`r@NZz7)dm{E0~`_5(^r`1w`@;hlN;%iF3a}xv6vLuPHR(XjTX=z)RK- zH>91XCE_Ho>z7svF}Xb8D~Kxg?X&AWp!DbG)&5*dA|F!8rJ7g^__tdC8(rp~t-)q$=? zgGG&mtSR~W))$^|KN5uMS{|YqD2oQ%k>fW_Cjb1QJFxLdV(d~TYm$G^gAMk8Utf*C zkYqp2L%0+P;}`RSa)R7bEVHC7T_E5+)iAxRXJtHH38gWjlIjDa7H@+0m2Nmik zqgeI8DMT&s@L!Cx8;Dve4BBr%3SNy#a+iRXnIxg0gu17Ae<9iOYXOXAJkGLiCY^8> z*}&1)VG&~v6KPThF?wMH|jsoic z-DCkPTVCVKYmO=}b3?X{y9`jgAwhWL2&l0*Tg^Xcs#49>IHvQnhWUY?0nFF`R5|jl zE9Y>e)=h_VqgC$r>-tX?B1YKcA(I=szN{X=O}s z#FG4Ov5!Q;ZB$rye4_SaqQ~6C^hR*Nq}$9j>aiG%_P4;9yrc4TzoayF8o@y&u#_+M z58BK=vyCdb+#9WYp{k=VREzmv2_9RSPRj||3h+TB( z$jc#ijUpNZxi*$QWM#1(&=m8gl|x}rekiIRRZG$6yt1!bYVkrRJ(%Wyqnb8o0tg|K z5FGMjthCGMs*{qS!qE5lghaRHkb!5hdo95CZ2HkqgTF|4K1Bz|So)#sP(l4bku=(J zr4LlW?LKUSjS!}+8aX`Bhz-Fo64?xlO0U^k$v*S-Qk$UY&v^b;^LgqpGhI4$VeDYa zrt`NSSu@{C`z}~bY65}#BNA78nSlO!+?R>}VN1}75!BdPbQ~1AO5}7iQIjHZeVzS1 zmn$NlZ4{HLpD0mUP_1kv=01{AV1ONzGhkj6 zj+#Whi+CqKr3Ckf=!932NZV;JR%d_O$A1lPVc=h^xHIY+8@RfXn>R<=HTx5AYm-Ig zNv4PVa6o`9#HA&(rFnHEZW^jhwJWhnI_KF?GfB4GFO8LANVf1vPbEUDM`4`3M)~S# z)Wy@#U?qsySrRvGpaD{(tgofuO@=)WBb`sxB;lunhkyw{`f<=)$NTlO6+@69XLc^K zjv7*KA!NPV^#yqVe9b`e0Wvm>?;(;x2`m&2=_R^zYm*k>f9+venw=qk0tWhK1*$7=v!|ng3fgNg zz%2h$gN^)tm6w(3o2Me})E8S|(#OS~%@qxM%PXAWR(!Prgr3&8xdTq-^Bo59ThP$iu?VbSbUH2QG!b^yibugKdB&B9(te zqk#Ksd9KeLn&xVDvkT3Q;DmRLA6ycW0;-Eh<=|7z($E#n4_SrC2R-fQnG@HgliZe^J;qF9@U-Z-%}~K(FR&N(-Y_& zt&SKG+1662J>;JlC*Y7RKxR%eEFY7K;USa#V};bOQ?o!VlH(GDEFJ0*U*cIc49PJz zKL3INO5N&>=M|f|M3vcI9#;VmFnq0g)o9wHsBYwa zn{JVn5&WeoInTEstpa6m(K}>mp5HgoHMMM@%}N3*>9plXi%-*L43+u}C(C#d+7Osv z8khz|(W&d(&gFf_j_w*>JGhP1g$eSnXmDnUEd!vki}~Lf*XyAV(OMbvUz7aPdKW68 zK-dvg6;sM;f7PE*?#l+c54zqHL-yX>IM2Pb0cCIRE1}w`=h={TG%I3+glgbs@LB@N zq+eV=LknGrJhwa2o-kH<<)>#sv4ZrrBmgnPQb$$d8f6=maKeHm9=%d+j6F_?d#%Kh z$0_kv>jkc!*UM*W{Cfm8=)i7(kv6h`-I3cMup}GwplBI=kMWuvMUnQ!q91V@NSDD{ z-Ky>fH)T9itmRjK~|{v3+D*nLniZJ)^v4^+To`Z&~g0zs4^q59=3Q@~(AB z^_uw(kwn~dp7Xj)`6WYDYXP8qomp#vtN_p7wIVR(V6#=P5e(nR(o4#bi^_+5JLCo_ zG9mAcVK>U#-Uy%OHydhLA4BznA#PYU60XcY?60b5W>eo@5|HDChIAj>B_gyp{ALk$ zki>j;T2-%P`RM;_7aTDNW<>drjzA`(b*(?+;{ko2OVuB82A z#frgUlFHzbt)m8aaFyWWc>;HY{iaF&J>ST2rgcD84_s3<-z)WLr7=(6wL$>@a;B{I zzH7w@&MQ2X!GW5mfFfbk)(E}F05917jtqgs4g+lf!7F?G@p5G~I@-sJOK?B)e^-Y^ zlK;p${`mk1fHnHV8>gtn{_?8?Yv)vk=l}UtqbAzMY1znTI*(dQO4Xzh9{Jgj?Od|_ zO(sJ>wj%c_+x0kZXK22PPL@g6sd2+dPZ1;H4*cJC%&AGOOoKNzAEX2%R5Vj@O+iWI z1xcF9ft_v(8M9X{YlP!V$a=-jw}dHvO}hPAM3wdE^SrfQSu~jW@BV>=<1Ki5iI}PD zs>bLTh%)})lH`U4(JVCR_tvnbc3K&_K!X?atn_UbRIv>9#QI`jh3k&U1#krnyK}nS zPws32g&AGa8}UCO+b$B>S$d^2pdecgF6BwN*O@xZ%6)bdy?5TPB=zANR|%`YSjdeU z0V?3MMMO9uzfW%gO|C~+^^x$m{ESy#99v}f{YP#1VmvKD(!Z}=)kO!28m$nxjS|;6 zMqKsAK5vV3`J0S?#(4#=8%uPaW%7{E=*=-;LMg$3CM1BOG`~VGV4O6+(kkCH)@-m@ zys@jzCY8WFGI6Qb)T-F<93(u~S~C5EUsc}sW)19*g#*DpF2S-v^ct+9D3OFK{N-m4 zCkoB%S5YFwh}ZNYBROK$x)P1F3J(e854QY3P_Ee>#Vv{o=<4ez7R%tCQVsiSH?wIl1NHMC(5Q`4ZG+QI>Q8=%e+v+F#XVAPbp$)GEQW<8xMQ#4~yXAH_5v#E=JXB;acngv!MM|@g7HhR(AuBEN4cR1JEh-il}L5lWE6Ii%FF#^*dBIzC(56J5)CYr*&hH(oO6T&x-q6hf92ii`hu7ZRTTi+sQ4b z%r>AhRNtkl<$X9izS>xBsU55l#MeNlqATYY<>?^)_8R`sP4iG28_R9sTV6v8juT=% z79xs=jop*tiBUWU8W0Y$4e5*Ww-{t7k9m;gw)`jsrdNhtt_|adeX6BR0JF(7d#;o? zl0s)Vmi7L|__Ja4+|_%$f4ss9vR%CC$fb z?*i7kyVT4kB=aFtW}_{Gx2IhXd3oPnLGzKQ4VEKURLe=)NojeK(w=@NA{o3=w4hx+ zXqCKoG8%NByJgDdZxslD%JDEkBM-=+=Ag3Ora;hwXwFKpNL9fWYZHZY5VyB^9Fj2> zC;UYd&-p>qUf=XqseE+c*FD#0Ea4qVAI@9|0)rZo(z$x_^3@SNgefam@49?L{qf5b zjBWhz+J*9He}zZq>IyYPyNgEKD2lc;1vHli=OI^b_^nyV?A#Zo{v}yMU+~mi4z8B7 zrh=a{%=(;Pjy{cxsk_>&Y5l@VbUW3F8iJMEs0jAcHT#u*FW0 z7?)s-@ZwqCw|2%XjFb-Zk9z(T9UFm;jX=diNleoCt>9V`mNvqupyIFU0)mSo`C~@q z1d)liDr#+-x9{3$8pPK@Q1jF4Ka27rHh@t7H#!w5C>O0ZirTjU-^B%Im z={ua(Z0FZ(JfwUCUZ^^o(~Rn_rqrZS$OzgA&W3O3$UuHhz@r6g$j@u{BPqWID{G$xjkY+^&WK6RnuazH@I7NQ{vvRyh zXhAQaT*LnI-6(^XHOm$t^UwlVlj7vCFYy~(qQPf3z-z;yH+`eCBy&( zq!y(VgM3>C(C<82g%Zm8=n$BEg4olyG!&1NaHx*(5+_e((#efq;8`olgX;%p%e8Jj zHPk(P8kE*+u@8EN%%?F@82+k-x2;8_1wd9heGh7wkwk!_K#*q1tTC_16o- z^&Gplruh%|stpBkkf`S8riwLiAc(e&W;=@pr)BXvHrDbr$R*ZU511ro>K2^{j)&?2 zl=f}oq@8BRjXX~$1~BI#&lxutsVq|ussLxY%^@81%v7dbe=5;bDmn(-&@V|KjHR^& ztqbt*&d<-zKwKaBp!!Yf$)Ui&fgH#~}RRy&WQpnG$kzG4;fy{t zKzBF}gp-vXd+h1jjiVHH*1>H6K$ySBz((^ZZC$NP@xz`kJfB5 zNHG92eOdiR1!%3_|L%NKRv_4%{z4dxo;eVPv+WlX)qf9zv$NM=5d5FRQ;2F%qG5L{ zw;?lW`M2-?(l4H-9Q&pXUB-j)V1+bz2=CY96;IPP0UH)pV7a~1X-zUJtS|q$IS5R- zeSm=*+bAI^2M!<5Wr*TUZ%~4*!8O%FmDw6vs&wVTxV-WI_qe>-M)=diI zgadi?YSrOZb`p!7{t!Jp=^dRgfGV-jvB@hFFFn^9gF=M7^otJhnG~TtlhslID+;{P zym#*Z>FBF*udhDvrT2d+IgJqV0tyS|q|}j&!14c4M))a>vQcsSETep4wcPkW%kG!< zEiTiY;Ff`Iv$GfnSxH50e!3%b5wiASTB57L zq^F&`(&1^Ue)c^#1Rf6$aMj@f4yHB+#;luZ)|L?Fy0$`UQzUc@sWwUf`~c1J#M>b^ z4dbs}9$Yk633Eq9jx_3HC1m0}n@?dKEtlKxRYHs^yN1*9-n5THh4T9|8bcO6_zexT zsvQuuE%Vyjpb3&iDP>7Bzh$1|zg}nfW#$;S@}FSS$*>oK$9~JarkH+uo5$MiHEVBYM z=O2+hvvs%NX@Js3=SLj%-Jb&<2Im#y5^bWIC1<&f@t=6&WPBx>4#(%324sV{Pb51f z|FZhgqz@+t!joo%je^B&MPo|!NJ?DClY2<88q9fnIZuoA?nS;h2~?_eiocL~#f^w| zy7^Uv!XBh8q9bg~dg%6<#7=f(QD?}(jskjP7n;Sn9vHA)1Z-N)F%^p4(KtSDbR-Mn zu7mSLAPd=JFj@?82&Oe|ozEUCVoI0HLcp=|c`T3+LS^)FII>e`0YZJWPblRKn9*o- z9(DappT1`c0CV!YL?~gMz;3+tR&;G*=lzubO6IM1Uq#+83WqA_Yq43t-;A2!9hMtr zwvi6TdRh5x%i_(-hwF#3s|z*0^*?^?s1jyl;*#s=ps3Gw&PY6aDv%{Nu(UJkQ42rYyCc za->&35sTGVhT~l^h*vaOhLKdT=FhUaYWU1Q4-h0Ezr)u1BaG_oFU902!cp*PJs8Gi z!SVy9t-veVib<@r75lK|?z8fj@r_gFzc6L#jJI(NfX+KRt%P zE(7*hps#Xg)Z{gm2-tk!CM zV~LG)*sc=o`cfQcA;dFXPs=4kU{?(-BpOe_S}GSO^CUHXIPE(65`I$qZJ zQPBX8x4-c^TZi6_Yl6f&q8e8Ln9Y{wbhk)j3;0G@;1+^4283GTRBa(yM-JzHW0A3R z78Ozbh050ee#rIxO(tz=RE7cIevF40q&CgrM2TtySJ1Zfsr-@r+X{-9+sPOekMTQ; zFe(S%jX-Gild3$m6;d6UPr0nT4?#%m&XgdbpCN66iK-&Fi>biACF>p*x?cd$5=gS$ zD?+$_G!eVE?V4WHZa|kt+8|KP3s=5}XH9!%rh)F6MwZX=7lCE;S2i!54-C;>*q)hx zv`A3;tdv=-1j_tono|TTxbt$+7KiJM6 zl^ZH^%CrMdHLh8>s;`dnUK!h5Pw|tL148d{hlqKLS9Q{MG=udyjyfIiC1_P1pa81n znX`oq04oD`M0w^Si;+eyhpA4mE5wt&^M=`(!G!a*$x5B!sA;_|WU}C}5>OgGIha~2 z#r3M*2Lh8_8>Tq~cp=fBaI)t(9J@kTqib@kQwDok9NkR3o!mbM4}!h_ zPv}@3eXO51dYKMS>mX(0W3Ze@;WK&-DSZVwWDD$+6x)Bs0ipB8l8wVtBVI|@Mxb31 z(a{qC%cV46iIs#$sKAq>>>z}-$qLJ(^Y{vzr<~tBH4i`lUR||2WLW0U45_s?d4|~? zIP@t{OQ@-h45w{UF0dW&2U!fL{0_6}Ho%6k$RdtL++ei>Gt!t~a{&cmpa-uM1KpzH zyz{>2BuLRYo|@4%)SL4fan4Z0BK1c6wucdHYjs}K-Nv5Pc~MG4@yz3){H(flfj11u zMSQaS;3!zwy6LyY!DtY|d*diL=^ejp z@1+Uc$#+uDBbb!YH_g<_|1c7VV7T7pTG)|$pk&6DKK9V25+EtV7m%1rDZ$N(YFIiO z$EOj6agNwHIh01>hLOQ>(o8{J>S&z!74>m?KqXrvQW>TbEH$@a0ZhZ?vA||tXBz

p;eG`#pVIy9X-v%WhsZ^Vi*XHj|9 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

VO?t( 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%0A7l({K_M$h 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 literal 0 HcmV?d00001 From b53068c043f25297a8331b1d762c335ef892a8ec Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 13:52:10 +0100 Subject: [PATCH 15/46] chore: remove recording --- contract/src/api.rs | 1 - contract/src/lib.rs | 74 ++++++++++++++++++------------------------ res/contract.wasm | Bin 412484 -> 418078 bytes res/contract_abi.json | 49 ++++++++++------------------ res/contract_abi.zst | Bin 2242 -> 2259 bytes 5 files changed, 48 insertions(+), 76 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index 73cb2da..e6d975e 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -11,7 +11,6 @@ pub trait SweatApi { fn get_holding_account_id(&self) -> Option; fn burn(&mut self, amount: U128); fn get_steps_since_tge(&self) -> U64; - fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; } diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 5efaba9..49582c1 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -3,11 +3,11 @@ extern crate static_assertions; use api::{Payout, RestrictionApi, SweatApi}; use near_contract_standards::fungible_token::{ - events::{FtBurn, FtMint}, + events::FtBurn, metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, Balance, FungibleToken, }; -use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; +use near_plugins::{access_control, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ borsh::BorshDeserialize, collections::UnorderedSet, @@ -98,39 +98,6 @@ impl SweatApi for Contract { self.steps_since_tge } - #[access_control_any(roles(Role::Oracle))] - #[pause(name = "minting")] - fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) { - let mut oracle_fee: U128 = U128(0); - let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); - let mut events = Vec::with_capacity(steps_batch.len() + 1); - - for (account_id, steps_count) in &steps_batch { - let (minted_to_user, trx_oracle_fee) = self.calculate_tokens_amount(*steps_count); - oracle_fee.0 += trx_oracle_fee; - internal_deposit(&mut self.token, account_id, minted_to_user); - - sweats.push(U128(minted_to_user)); - self.steps_since_tge.0 += u64::from(*steps_count); - } - for i in 0..steps_batch.len() { - events.push(FtMint { - owner_id: &steps_batch[i].0, - amount: sweats[i], - memo: None, - }); - } - - internal_deposit(&mut self.token, &env::predecessor_account_id(), oracle_fee.0); - let oracle_event = FtMint { - owner_id: &env::predecessor_account_id(), - amount: oracle_fee, - memo: None, - }; - events.push(oracle_event); - FtMint::emit_many(events.as_slice()); - } - #[allow(clippy::cast_precision_loss)] fn formula(&self, steps_since_tge: U64, steps: u32) -> U128 { U128(math::formula(steps_since_tge.0 as f64, f64::from(steps))) @@ -205,18 +172,19 @@ impl FungibleTokenMetadataProvider for Contract { #[cfg(test)] mod tests { - use std::str::FromStr; + use std::{collections::HashMap, str::FromStr}; use near_contract_standards::fungible_token::core::FungibleTokenCore; use near_plugins::AccessControllable; use near_sdk::{ json_types::{U128, U64}, test_utils::VMContextBuilder, - testing_env, AccountId, NearToken, + test_vm_config, testing_env, AccountId, NearToken, PromiseResult, RuntimeFeesConfig, }; use crate::{ - api::{RestrictionApi, SweatApi}, + api::{Payout, RestrictionApi, SweatApi, SweatDefer}, + defer::FungibleTokenTransferCallback, Contract, Role, }; @@ -232,6 +200,9 @@ mod tests { fn sweat_oracle() -> AccountId { account_id("sweat_the_oracle") } + fn sweat_holding() -> AccountId { + account_id("sweat_the_holding") + } fn user1() -> AccountId { account_id("sweat_user1") } @@ -264,17 +235,34 @@ mod tests { #[test] fn oracle_fee_test() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), Some(sweat_holding())); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); + + let p1 = Payout::from(token.formula(U64(0), 10_000).0); + let p2 = Payout::from(token.formula(U64(10_000), 10_000).0); + let total_effective = U128(p1.amount_for_user + p2.amount_for_user); + let total_fee = U128(p1.fee + p2.fee); + testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); - token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); - assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); - assert!((9.499_999_975_169_082 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); - assert!((0.999_999_998_257_479_4 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18).abs() < EPS); + let _ = token.defer_batch(vec![(user1(), 10_000), (user2(), 10_000)]); assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); + + testing_env!( + get_context(sweat_the_token(), sweat_the_token()).build(), + test_vm_config(), + RuntimeFeesConfig::test(), + HashMap::default(), + vec![PromiseResult::Successful(vec![])], + ); + token.on_record(sweat_holding(), total_effective, sweat_oracle(), total_fee, 2 * 10_000); + + assert_eq!(token.token.ft_balance_of(sweat_holding()).0, total_effective.0); + assert_eq!(token.token.ft_balance_of(sweat_oracle()).0, total_fee.0); + assert!(((9.499_999_991_723_028 + 9.499_999_975_169_082) - total_effective.0 as f64 / 1e+18).abs() < EPS); + assert!((0.999_999_998_257_479_4 - total_fee.0 as f64 / 1e+18).abs() < EPS); } #[test] diff --git a/res/contract.wasm b/res/contract.wasm index d49eeff6e91969997e2bcbe7cf139d4d74821953..62400f8222c02e58086f52ef42f8e59ecd56ee04 100644 GIT binary patch delta 165586 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

m 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 QRo?yXXp;jsD~A~W2LuuX^8f$< diff --git a/res/contract_abi.json b/res/contract_abi.json index c68e900..b030b5e 100644 --- a/res/contract_abi.json +++ b/res/contract_abi.json @@ -7,7 +7,7 @@ "compiler": "rustc 1.86.0", "builder": "cargo-near cargo-near-build 0.11.0" }, - "wasm_hash": "BstPokT2qYani2Df5Uvhz36MiHjv4mdj2Lk8thCfXZZJ" + "wasm_hash": "6epCTG3uUXdoqoKPL29GuZ5RUeSTDkLjR2QGb8SjXjyy" }, "body": { "functions": [ @@ -851,6 +851,14 @@ } } }, + { + "name": "migrate", + "kind": "call", + "modifiers": [ + "init", + "private" + ] + }, { "name": "new", "kind": "call", @@ -916,6 +924,14 @@ "type_schema": { "type": "string" } + }, + { + "name": "steps_increment", + "type_schema": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } } ] } @@ -1015,37 +1031,6 @@ } } }, - { - "name": "record_batch", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "steps_batch", - "type_schema": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - }, - { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - ], - "maxItems": 2, - "minItems": 2 - } - } - } - ] - } - }, { "name": "remove_oracle", "kind": "call", diff --git a/res/contract_abi.zst b/res/contract_abi.zst index eef38ec1652707bba6d594679c07bbf924bd891b..18aecc3322c11c407fe6bea57f93a47629273fa2 100644 GIT binary patch literal 2259 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 QH=yWZJ#i~6?DLPW6-MngNdN!< From fbf7b4fc812c345ef84dc266f24d9f6e160e1882 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 13:56:20 +0100 Subject: [PATCH 16/46] chore: remove redundant comments --- contract/src/lib.rs | 2 -- integration-tests/tests/common/helpers.rs | 19 +------------------ integration-tests/tests/common/mod.rs | 5 ----- integration-tests/tests/common/prepare.rs | 3 --- integration-tests/tests/defer.rs | 16 ++-------------- integration-tests/tests/migration.rs | 18 ++++-------------- integration-tests/tests/restriction.rs | 1 - 7 files changed, 7 insertions(+), 57 deletions(-) diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 49582c1..53b5b45 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -41,8 +41,6 @@ pub struct Contract { token: FungibleToken, steps_since_tge: U64, denylist: UnorderedSet, - /// The single trusted account that `defer_batch` stages deferred mints - /// through. Set by the super admin; never supplied by the Oracle. holding_account_id: Option, } diff --git a/integration-tests/tests/common/helpers.rs b/integration-tests/tests/common/helpers.rs index da9ce16..693d90d 100644 --- a/integration-tests/tests/common/helpers.rs +++ b/integration-tests/tests/common/helpers.rs @@ -1,30 +1,13 @@ use tracing_subscriber::EnvFilter; -/// Installs a `tracing` subscriber once per test process. Idempotent — -/// safe to call from every test setup. -/// -/// Output is routed through `with_test_writer()` so `cargo test`'s -/// stdout capture works (otherwise spans bypass capture and leak into -/// passing-test output). -/// -/// Override verbosity with `RUST_LOG`, e.g. -/// `RUST_LOG=debug cargo test -- --nocapture`. -/// -/// Default filter is `info,near_workspaces=warn` — info-level events from -/// our tests, but quiet down near-workspaces' chatty sandbox lifecycle logs. pub(crate) fn init_tracing() { - let filter = EnvFilter::try_from_default_env() - .unwrap_or_else(|_| EnvFilter::new("info,near_workspaces=warn")); + let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info,near_workspaces=warn")); let _ = tracing_subscriber::fmt() .with_env_filter(filter) .with_test_writer() .try_init(); } -/// Splits a minted amount into `(amount_for_user, fee)` using the contract's -/// 5%-oracle-fee policy (rounded up). Mirrors `Contract::calculate_tokens_amount` -/// in the sweat contract; kept in sync so tests can predict expected balances -/// without calling into the contract. pub fn payout(value: u128) -> (u128, u128) { let fee = (value * 5).div_ceil(100); (value - fee, fee) diff --git a/integration-tests/tests/common/mod.rs b/integration-tests/tests/common/mod.rs index d05e9d8..bbdc5a0 100644 --- a/integration-tests/tests/common/mod.rs +++ b/integration-tests/tests/common/mod.rs @@ -1,8 +1,3 @@ -// Shared setup, helpers, and traits used by the integration-test binaries. -// -// Each `tests/*.rs` is its own test binary; Rust's dead-code lint runs per -// binary and flags items that are only used by *other* binaries. Silence the -// noise at the module root rather than annotating every helper. #![allow(dead_code)] pub mod helpers; diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 7687ae1..6b27d2b 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -184,9 +184,6 @@ impl ContextBuilder { } } -/// Resolve a WASM path, honouring the given env var as an override. -/// Relative paths in the env var are interpreted relative to the test -/// process's cwd (usually the `integration-tests/` crate dir). fn wasm_path(env_var: &str, default: PathBuf) -> PathBuf { std::env::var_os(env_var).map(PathBuf::from).unwrap_or(default) } diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index a426520..be51aa0 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -88,8 +88,6 @@ async fn test_defer() -> anyhow::Result<()> { Ok(()) } -/// `defer_batch` must refuse to run until the super admin has configured a -/// holding account — there is no implicit default to fall back to. #[tokio::test] #[tracing::instrument] async fn test_defer_batch_panics_when_holding_account_unset() -> anyhow::Result<()> { @@ -115,8 +113,6 @@ async fn test_defer_batch_panics_when_holding_account_unset() -> anyhow::Result< Ok(()) } -/// The super admin can re-point the holding account via `set_holding_account_id`, -/// and `defer_batch` immediately stages deferred mints through the new account. #[tokio::test] #[tracing::instrument] async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<()> { @@ -156,7 +152,7 @@ async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<() })) .await? .json()?; - // Mirror `Payout::from`: fee is 5% rounded up, the rest goes to the holder. + let minted: u128 = minted_raw.parse()?; let total_fee = (minted * 5).div_ceil(100); let total_for_user = minted - total_fee; @@ -200,8 +196,6 @@ async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<() Ok(()) } -/// `set_holding_account_id` is super-admin-only (`#[private]`); a regular account -/// cannot re-point the holding account. #[tokio::test] #[tracing::instrument] async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { @@ -226,8 +220,6 @@ async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { Ok(()) } -/// A successful `defer_batch` advances `steps_since_tge` by the batch's total -/// step count — the x-axis of the emission curve must track minted steps. #[tokio::test] #[tracing::instrument] async fn test_defer_batch_advances_steps_on_success() -> anyhow::Result<()> { @@ -261,10 +253,6 @@ async fn test_defer_batch_advances_steps_on_success() -> anyhow::Result<()> { Ok(()) } -/// A failed `record_batch_for_hold` cross-contract call must not advance -/// `steps_since_tge`: the `on_record` callback has to roll the increment back. -/// The holding account is re-pointed at Alice — a plain account with no -/// contract — so the XCC fails. #[tokio::test] #[tracing::instrument] async fn test_defer_batch_rolls_back_steps_on_failed_record() -> anyhow::Result<()> { @@ -292,7 +280,7 @@ async fn test_defer_batch_rolls_back_steps_on_failed_record() -> anyhow::Result< .max_gas() .transact() .await?; - // Callback must return cleanly on the failed branch — a panic would revert the rollback. + outcome.clone().into_result()?; info!("assert the failure branch ran"); diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs index ece0204..5ce3873 100644 --- a/integration-tests/tests/migration.rs +++ b/integration-tests/tests/migration.rs @@ -10,8 +10,6 @@ use common::helpers::init_tracing; const FT_POSTFIX: &str = ".u.sweat.testnet"; const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); -/// The previously deployed (pre-ACL) release, used as the version the -/// contract migrates from. fn old_wasm_path() -> PathBuf { PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("..") @@ -19,9 +17,6 @@ fn old_wasm_path() -> PathBuf { .join("sweat_old.wasm") } -/// The freshly built contract under test. Mirrors `prepare::sweat_wasm_path` -/// so `make build-integration` output (or a `SWEAT_WASM` override) is picked -/// up the same way as in the other integration tests. fn new_wasm_path() -> PathBuf { std::env::var_os("SWEAT_WASM").map(PathBuf::from).unwrap_or_else(|| { PathBuf::from(env!("CARGO_MANIFEST_DIR")) @@ -40,14 +35,6 @@ async fn create_user(root: &Account, name: &str) -> anyhow::Result { .into_result()?) } -/// Deploys the old contract, builds up some oracle and token state, then -/// upgrades to the new contract and runs `migrate`. -/// -/// Verifies that migration: -/// - makes the contract account the ACL super admin; -/// - moves every legacy oracle into the ACL `Oracle` role; -/// - preserves token balances and the steps counter; -/// - leaves the contract functional (a migrated oracle can still record). #[tokio::test] #[tracing::instrument] async fn migration_from_pre_acl_release() -> anyhow::Result<()> { @@ -99,7 +86,10 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { .args_json(json!({ "account_id": alice.id() })) .await? .json()?; - assert_ne!(alice_balance_before, "0", "alice should have a balance before migration"); + assert_ne!( + alice_balance_before, "0", + "alice should have a balance before migration" + ); info!(steps = %steps_before, balance = %alice_balance_before, "pre-migration snapshot"); info!("deploying new contract over the same account"); diff --git a/integration-tests/tests/restriction.rs b/integration-tests/tests/restriction.rs index 1161ca2..42578cb 100644 --- a/integration-tests/tests/restriction.rs +++ b/integration-tests/tests/restriction.rs @@ -5,7 +5,6 @@ use tracing::info; mod common; use common::{panic::PanicFinder, prepare::Context, storage::register_for_storage}; -/// Mint tokens to alice, then add her to the contract denylist. async fn mint_and_restrict(context: &Context) -> anyhow::Result<()> { info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); context From 956c48c1903cd5a082108d30c4359180e058e1e3 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 15:06:59 +0100 Subject: [PATCH 17/46] chore: remove outdated tests --- integration-tests/tests/access_control.rs | 44 ------ integration-tests/tests/happy_flow.rs | 56 ------- integration-tests/tests/migration.rs | 9 -- integration-tests/tests/mint.rs | 70 -------- integration-tests/tests/pause.rs | 184 +++++----------------- integration-tests/tests/restriction.rs | 70 ++------ integration-tests/tests/transfer.rs | 88 ----------- 7 files changed, 46 insertions(+), 475 deletions(-) delete mode 100644 integration-tests/tests/happy_flow.rs delete mode 100644 integration-tests/tests/mint.rs delete mode 100644 integration-tests/tests/transfer.rs diff --git a/integration-tests/tests/access_control.rs b/integration-tests/tests/access_control.rs index 5f2e6ea..fadb6ec 100644 --- a/integration-tests/tests/access_control.rs +++ b/integration-tests/tests/access_control.rs @@ -66,50 +66,6 @@ async fn test_acl_grant_role() -> anyhow::Result<()> { Ok(()) } -#[tokio::test] -#[tracing::instrument] -async fn test_acl_record_batch() -> anyhow::Result<()> { - let context = Context::builder().build().await?; - - info!("call record_batch([(alice, 10_000)]) [signer=alice, unauthorized]"); - let result = context - .alice - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result(); - assert!(result.has_panic("Insufficient permissions for method record_batch restricted by access control.")); - info!("record_batch: {result:?}"); - - info!("call acl_grant_role(Oracle, alice) [signer=contract, super-admin]"); - let granted: Option = context - .sweat - .call("acl_grant_role") - .args_json(json!({ - "role": "Oracle", - "account_id": context.alice.id(), - })) - .transact() - .await? - .json()?; - assert_eq!(granted, Some(true)); - info!("acl_grant_role: {granted:?}"); - - info!("call record_batch([(alice, 10_000)]) [signer=alice, authorized]"); - let result = context - .alice - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; - assert!(result.outcome().is_success()); - info!("record_batch: {result:?}"); - - Ok(()) -} - #[tokio::test] #[tracing::instrument] async fn test_acl_defer_batch() -> anyhow::Result<()> { diff --git a/integration-tests/tests/happy_flow.rs b/integration-tests/tests/happy_flow.rs deleted file mode 100644 index b63a411..0000000 --- a/integration-tests/tests/happy_flow.rs +++ /dev/null @@ -1,56 +0,0 @@ -use serde_json::json; -use tracing::info; - -mod common; -use common::helpers::payout; -use common::prepare::Context; - -#[tokio::test] -#[tracing::instrument] -async fn happy_flow() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_claim().build().await?; - - info!("view formula(steps_since_tge=0, steps=100)"); - let formula: String = context - .sweat - .view("formula") - .args_json(json!({ "steps_since_tge": "0", "steps": 100 })) - .await? - .json()?; - info!(value = %formula, "formula result"); - let minted = formula.parse::()?; - - info!("call record_batch([(alice, 100)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 100]] })) - .transact() - .await? - .into_result()?; - - let (expected_amount_for_user, _expected_fee) = payout(minted); - - info!("view ft_balance_of(alice)"); - let balance: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - info!(value = %balance, "alice balance"); - assert_eq!(expected_amount_for_user, balance.parse::()?); - - info!("call defer_batch([(alice, 1000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "defer_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 1000]] })) - .max_gas() - .transact() - .await? - .into_result()?; - - info!("done"); - Ok(()) -} diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs index 5ce3873..789df93 100644 --- a/integration-tests/tests/migration.rs +++ b/integration-tests/tests/migration.rs @@ -139,15 +139,6 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { "get_oracles should be removed from the new contract" ); - info!("verifying a migrated oracle can still record via ACL"); - oracle1 - .call(contract.id(), "record_batch") - .args_json(json!({ "steps_batch": [[alice.id(), 5_000]] })) - .max_gas() - .transact() - .await? - .into_result()?; - info!("done"); Ok(()) } diff --git a/integration-tests/tests/mint.rs b/integration-tests/tests/mint.rs deleted file mode 100644 index 9850f16..0000000 --- a/integration-tests/tests/mint.rs +++ /dev/null @@ -1,70 +0,0 @@ -use serde_json::json; -use tracing::info; - -mod common; -use common::helpers::payout; -use common::prepare::Context; - -const TARGET_BALANCE: u128 = 9_999_999_976_902_174_720; -const TARGET_STEPS_SINCE_TGE: u32 = 10_000; - -#[tokio::test] -#[tracing::instrument] -async fn test_mint() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().build().await?; - - info!("view get_steps_since_tge"); - let steps: String = context.sweat.view("get_steps_since_tge").await?.json()?; - info!(value = %steps, "steps_since_tge"); - assert_eq!(0_u64, steps.parse::()?); - - info!(target_steps = TARGET_STEPS_SINCE_TGE, "view formula(0, target_steps)"); - let formula: String = context - .sweat - .view("formula") - .args_json(json!({ "steps_since_tge": "0", "steps": TARGET_STEPS_SINCE_TGE })) - .await? - .json()?; - info!(value = %formula, "formula result"); - assert_eq!(TARGET_BALANCE, formula.parse::()?); - - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; - - let (expected_amount_for_user, expected_fee) = payout(TARGET_BALANCE); - info!(fee = expected_fee, for_user = expected_amount_for_user, "expected payout"); - - info!("view ft_balance_of(oracle)"); - let oracle_balance: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.oracle().id() })) - .await? - .json()?; - info!(value = %oracle_balance, "oracle balance"); - assert_eq!(expected_fee, oracle_balance.parse::()?); - - info!("view ft_balance_of(alice)"); - let alice_balance: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - info!(value = %alice_balance, "alice balance"); - assert_eq!(expected_amount_for_user, alice_balance.parse::()?); - - info!("view get_steps_since_tge"); - let steps_after: String = context.sweat.view("get_steps_since_tge").await?.json()?; - info!(value = %steps_after, "steps_since_tge"); - assert_eq!(u64::from(TARGET_STEPS_SINCE_TGE), steps_after.parse::()?); - - info!("done"); - Ok(()) -} diff --git a/integration-tests/tests/pause.rs b/integration-tests/tests/pause.rs index 9bd3a39..649c299 100644 --- a/integration-tests/tests/pause.rs +++ b/integration-tests/tests/pause.rs @@ -5,26 +5,12 @@ use tracing::info; mod common; use common::{panic::PanicFinder, prepare::Context}; -use crate::common::storage::register_for_storage; - #[tokio::test] #[tracing::instrument] async fn test_pause_all() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; - - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; - - info!("register bob for FT storage"); - register_for_storage(&context.sweat, context.bob().id()).await?; + let context = Context::builder().with_oracle().with_claim().with_bob().build().await?; - info!("call pa_pause_feature(ALL) [signer=alice]"); + info!("call pa_pause_feature(ALL) [signer=alice, unauthorized]"); let result = context .alice .call(context.sweat.id(), "pa_pause_feature") @@ -49,7 +35,7 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + info!("call acl_grant_role(PauseManager, alice) [signer=contract] — idempotent"); let role_is_granted: bool = context .sweat .call("acl_grant_role") @@ -74,7 +60,7 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(is_paused); info!("pa_pause_feature: {is_paused:?}"); - info!("call pa_pause_feature(ALL) [signer=alice]"); + info!("call pa_pause_feature(ALL) [signer=alice] — idempotent"); let is_paused: bool = context .alice .call(context.sweat.id(), "pa_pause_feature") @@ -85,7 +71,7 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(!is_paused); info!("pa_pause_feature: {is_paused:?}"); - info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice] — pause check fires before balance check"); let result = context .alice .call(context.sweat.id(), "ft_transfer") @@ -100,7 +86,19 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(result.has_panic("Method is paused")); info!("ft_transfer: {result:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice]"); + info!("call defer_batch([(alice, 10_000)]) [signer=oracle]"); + let result = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("defer_batch: {result:?}"); + + info!("call pa_unpause_feature(ALL) [signer=alice, unauthorized]"); let result = context .alice .call(context.sweat.id(), "pa_unpause_feature") @@ -111,7 +109,7 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(result.has_panic("Insufficient permissions for method pa_unpause_feature restricted by access control.")); info!("pa_unpause_feature: {result:?}"); - info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); + info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); let role_is_granted: bool = context .sweat .call("acl_grant_role") @@ -136,7 +134,7 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(is_unpaused); info!("pa_unpause_feature: {is_unpaused:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice]"); + info!("call pa_unpause_feature(ALL) [signer=alice] — idempotent"); let is_unpaused: bool = context .alice .call(context.sweat.id(), "pa_unpause_feature") @@ -147,20 +145,15 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(!is_unpaused); info!("pa_unpause_feature: {is_unpaused:?}"); - info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); - let result = context - .alice - .call(context.sweat.id(), "ft_transfer") - .args_json(json!({ - "receiver_id": context.bob().id(), - "amount": "1000000000000000000", - })) - .deposit(NearToken::from_yoctonear(1)) + info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting works after unpause"); + context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .max_gas() .transact() .await? .into_result()?; - assert!(result.outcome().is_success()); - info!("ft_transfer: {result:?}"); Ok(()) } @@ -168,19 +161,7 @@ async fn test_pause_all() -> anyhow::Result<()> { #[tokio::test] #[tracing::instrument] async fn test_pause_minting() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; - - info!("register bob for FT storage"); - register_for_storage(&context.sweat, context.bob().id()).await?; - - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; + let context = Context::builder().with_oracle().with_claim().build().await?; info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); let role_is_granted: bool = context @@ -207,17 +188,6 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(is_paused); info!("pa_pause_feature: {is_paused:?}"); - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - let result = context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result(); - assert!(result.has_panic("Method is paused")); - info!("record_batch: {result:?}"); - info!("call defer_batch([(alice, 10_000)]) [signer=oracle]"); let result = context .oracle() @@ -230,21 +200,6 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(result.has_panic("Method is paused")); info!("defer_batch: {result:?}"); - info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); - let result = context - .alice - .call(context.sweat.id(), "ft_transfer") - .args_json(json!({ - "receiver_id": context.bob().id(), - "amount": "1000000000000000000", - })) - .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - assert!(result.outcome().is_success()); - info!("ft_transfer (token feature not paused): {result:?}"); - info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); let role_is_granted: bool = context .sweat @@ -270,16 +225,15 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(is_unpaused); info!("pa_unpause_feature: {is_unpaused:?}"); - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - let result = context + info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting works after unpause"); + context .oracle() - .call(context.sweat.id(), "record_batch") + .call(context.sweat.id(), "defer_batch") .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .max_gas() .transact() .await? .into_result()?; - assert!(result.outcome().is_success()); - info!("record_batch: {result:?}"); Ok(()) } @@ -287,19 +241,7 @@ async fn test_pause_minting() -> anyhow::Result<()> { #[tokio::test] #[tracing::instrument] async fn test_pause_token() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; - - info!("register bob for FT storage"); - register_for_storage(&context.sweat, context.bob().id()).await?; - - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; + let context = Context::builder().with_oracle().with_claim().with_bob().build().await?; info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); let role_is_granted: bool = context @@ -326,7 +268,7 @@ async fn test_pause_token() -> anyhow::Result<()> { assert!(is_paused); info!("pa_pause_feature: {is_paused:?}"); - info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); + info!("call ft_transfer(bob, 1000000000000000000) [signer=alice] — pause check fires before balance check"); let result = context .alice .call(context.sweat.id(), "ft_transfer") @@ -369,67 +311,15 @@ async fn test_pause_token() -> anyhow::Result<()> { assert!(result.has_panic("Method is paused")); info!("burn: {result:?}"); - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - let result = context + info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting feature not paused, should succeed"); + context .oracle() - .call(context.sweat.id(), "record_batch") + .call(context.sweat.id(), "defer_batch") .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) + .max_gas() .transact() .await? .into_result()?; - assert!(result.outcome().is_success()); - info!("record_batch (minting feature not paused): {result:?}"); - - info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); - let role_is_granted: bool = context - .sweat - .call("acl_grant_role") - .args_json(json!({ - "role": "UnpauseManager", - "account_id": context.alice.id(), - })) - .transact() - .await? - .json()?; - assert!(role_is_granted); - info!("acl_grant_role: {role_is_granted:?}"); - - info!("call pa_unpause_feature(token) [signer=alice]"); - let is_unpaused: bool = context - .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "token" })) - .transact() - .await? - .json()?; - assert!(is_unpaused); - info!("pa_unpause_feature: {is_unpaused:?}"); - - info!("call ft_transfer(bob, 1000000000000000000) [signer=alice]"); - let result = context - .alice - .call(context.sweat.id(), "ft_transfer") - .args_json(json!({ - "receiver_id": context.bob().id(), - "amount": "1000000000000000000", - })) - .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - assert!(result.outcome().is_success()); - info!("ft_transfer: {result:?}"); - - info!("call burn(1000000000000000000) [signer=alice]"); - let result = context - .alice - .call(context.sweat.id(), "burn") - .args_json(json!({ "amount": "1000000000000000000" })) - .transact() - .await? - .into_result()?; - assert!(result.outcome().is_success()); - info!("burn: {result:?}"); Ok(()) } diff --git a/integration-tests/tests/restriction.rs b/integration-tests/tests/restriction.rs index 42578cb..9adf684 100644 --- a/integration-tests/tests/restriction.rs +++ b/integration-tests/tests/restriction.rs @@ -5,16 +5,9 @@ use tracing::info; mod common; use common::{panic::PanicFinder, prepare::Context, storage::register_for_storage}; -async fn mint_and_restrict(context: &Context) -> anyhow::Result<()> { - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; - +/// The denylist check fires before any balance arithmetic, so these tests +/// only need alice flagged as restricted — no minted balance required. +async fn restrict_alice(context: &Context) -> anyhow::Result<()> { info!("call set_restricted(alice, true) [signer=contract]"); context .sweat @@ -42,12 +35,12 @@ async fn mint_and_restrict(context: &Context) -> anyhow::Result<()> { #[tokio::test] #[tracing::instrument] async fn test_restricted_cannot_ft_transfer() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; + let context = Context::builder().with_bob().build().await?; info!("register bob for FT storage"); register_for_storage(&context.sweat, context.bob().id()).await?; - mint_and_restrict(&context).await?; + restrict_alice(&context).await?; info!("call ft_transfer(bob, 1000000000000000000) [signer=alice, restricted]"); let result = context @@ -70,12 +63,12 @@ async fn test_restricted_cannot_ft_transfer() -> anyhow::Result<()> { #[tokio::test] #[tracing::instrument] async fn test_restricted_cannot_ft_transfer_call() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; + let context = Context::builder().with_bob().build().await?; info!("register bob for FT storage"); register_for_storage(&context.sweat, context.bob().id()).await?; - mint_and_restrict(&context).await?; + restrict_alice(&context).await?; info!("call ft_transfer_call(bob, 1000000000000000000) [signer=alice, restricted]"); let result = context @@ -100,9 +93,9 @@ async fn test_restricted_cannot_ft_transfer_call() -> anyhow::Result<()> { #[tokio::test] #[tracing::instrument] async fn test_restricted_cannot_burn() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().build().await?; + let context = Context::builder().build().await?; - mint_and_restrict(&context).await?; + restrict_alice(&context).await?; info!("call burn(1000000000000000000) [signer=alice, restricted]"); let result = context @@ -117,48 +110,3 @@ async fn test_restricted_cannot_burn() -> anyhow::Result<()> { Ok(()) } - -#[tokio::test] -#[tracing::instrument] -async fn test_restricted_cannot_storage_unregister() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().build().await?; - - mint_and_restrict(&context).await?; - - info!("view ft_balance_of(alice) before storage_unregister"); - let balance_before: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - assert_ne!(balance_before, "0"); - info!(value = %balance_before, "alice balance before"); - - info!("call storage_unregister(force=true) [signer=alice, restricted]"); - let result = context - .alice - .call(context.sweat.id(), "storage_unregister") - .args_json(json!({ "force": true })) - .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result(); - assert!(result.has_panic(&format!("The account {} is restricted", context.alice.id()))); - info!("storage_unregister: {result:?}"); - - info!("view ft_balance_of(alice) after storage_unregister"); - let balance_after: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - assert_eq!( - balance_before, balance_after, - "restricted account's tokens must be preserved" - ); - info!(value = %balance_after, "alice balance after"); - - Ok(()) -} diff --git a/integration-tests/tests/transfer.rs b/integration-tests/tests/transfer.rs deleted file mode 100644 index afea07e..0000000 --- a/integration-tests/tests/transfer.rs +++ /dev/null @@ -1,88 +0,0 @@ -use near_workspaces::types::NearToken; -use serde_json::json; -use tracing::info; - -mod common; -use common::prepare::Context; -use common::storage::register_for_storage; - -const ONE_YOCTO: NearToken = NearToken::from_yoctonear(1); - -#[tokio::test] -#[tracing::instrument] -async fn test_transfer() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().with_bob().build().await?; - - info!("call record_batch([(alice, 10_000)]) [signer=oracle]"); - context - .oracle() - .call(context.sweat.id(), "record_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), 10_000]] })) - .transact() - .await? - .into_result()?; - - info!("call ft_transfer(alice → bob, 9499999991723028480) [bob not registered, expect failure]"); - let res = context - .alice - .call(context.sweat.id(), "ft_transfer") - .args_json(json!({ - "receiver_id": context.bob().id(), - "amount": "9499999991723028480", - })) - .deposit(ONE_YOCTO) - .transact() - .await? - .into_result(); - assert!(res.is_err(), "ft_transfer to unregistered bob should fail"); - info!("rejected as expected"); - - info!("register bob for FT storage"); - register_for_storage(&context.sweat, context.bob().id()).await?; - - info!("view ft_balance_of(alice)"); - let alice_balance: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - info!(value = %alice_balance, "alice balance"); - assert_ne!(0_u128, alice_balance.parse::()?); - - info!(amount = %alice_balance, "call ft_transfer(alice → bob) [transfer all]"); - context - .alice - .call(context.sweat.id(), "ft_transfer") - .args_json(json!({ - "receiver_id": context.bob().id(), - "amount": alice_balance, - })) - .deposit(ONE_YOCTO) - .transact() - .await? - .into_result()?; - - info!("view ft_balance_of(alice)"); - let alice_after: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.alice.id() })) - .await? - .json()?; - info!(value = %alice_after, "alice balance"); - assert_eq!(0_u128, alice_after.parse::()?); - - info!("view ft_balance_of(bob)"); - let bob_balance: String = context - .sweat - .view("ft_balance_of") - .args_json(json!({ "account_id": context.bob().id() })) - .await? - .json()?; - info!(value = %bob_balance, "bob balance"); - assert_eq!(alice_balance, bob_balance); - - info!("done"); - Ok(()) -} From 6fc2ca991b1846fb277d356cd6a2351b30c856a1 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 15:39:30 +0100 Subject: [PATCH 18/46] chore: remove oracle management methods --- contract/src/api.rs | 2 -- contract/src/lib.rs | 36 ++++++++--------------- integration-tests/tests/common/prepare.rs | 9 ++++-- 3 files changed, 19 insertions(+), 28 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index e6d975e..59e31fe 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -5,8 +5,6 @@ use near_sdk::{ pub trait SweatApi { fn new(postfix: Option, holding_account_id: Option) -> Self; - fn add_oracle(&mut self, account_id: &AccountId); - fn remove_oracle(&mut self, account_id: &AccountId); fn set_holding_account_id(&mut self, account_id: AccountId); fn get_holding_account_id(&self) -> Option; fn burn(&mut self, amount: U128); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 53b5b45..7b8d070 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -18,7 +18,7 @@ use near_sdk::{ AccountId, PanicOnDefault, }; -mod api; +pub mod api; mod core; mod defer; mod integration; @@ -60,16 +60,6 @@ impl SweatApi for Contract { contract } - #[private] - fn add_oracle(&mut self, account_id: &AccountId) { - self.acl_grant_role(Role::Oracle.into(), account_id.clone()); - } - - #[private] - fn remove_oracle(&mut self, account_id: &AccountId) { - self.acl_revoke_role(Role::Oracle.into(), account_id.clone()); - } - #[private] fn set_holding_account_id(&mut self, account_id: AccountId) { self.holding_account_id = Some(account_id); @@ -224,9 +214,9 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); - token.remove_oracle(&sweat_oracle()); + token.acl_revoke_role(Role::Oracle.into(), sweat_oracle()); assert!(get_oracles(&token).is_empty()); } @@ -236,7 +226,7 @@ mod tests { let mut token = Contract::new(Some(".u.sweat".to_string()), Some(sweat_holding())); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); let p1 = Payout::from(token.formula(U64(0), 10_000).0); @@ -268,7 +258,7 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); token.burn(U128(9499999991723028480)); @@ -281,7 +271,7 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -297,7 +287,7 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -315,7 +305,7 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user1(), true); @@ -330,7 +320,7 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user2(), true); @@ -345,13 +335,13 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user1(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); - token.ft_transfer_call(user2(), U128(9499999991723028480), None, String::from("test")); + let _ = token.ft_transfer_call(user2(), U128(9499999991723028480), None, String::from("test")); } #[test] @@ -360,13 +350,13 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string()), None); assert!(get_oracles(&token).is_empty()); - token.add_oracle(&sweat_oracle()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); token.set_restricted(&user2(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); - token.ft_transfer_call(user2(), U128(9499999991723028480), None, String::from("test")); + let _ = token.ft_transfer_call(user2(), U128(9499999991723028480), None, String::from("test")); } fn get_oracles(contract: &Contract) -> Vec { diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 6b27d2b..0d653d1 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -133,11 +133,14 @@ impl ContextBuilder { storage_deposit(&sweat, alice.id(), min).await?; let oracle = if self.oracle { - info!("creating oracle + sweat.add_oracle"); + info!("creating oracle + sweat.acl_grant_role(Oracle)"); let oracle = create_user(&root, "oracle").await?; sweat - .call("add_oracle") - .args_json(json!({ "account_id": oracle.id() })) + .call("acl_grant_role") + .args_json(json!({ + "role": "Oracle", + "account_id": oracle.id(), + })) .transact() .await? .into_result()?; From a51a208c13111bef81b50f867f28df57213907c7 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 16:34:44 +0100 Subject: [PATCH 19/46] refactor: extract internal deposit --- contract/src/core.rs | 45 ++++++++++++++++++++++++++++++++++++++++++- contract/src/defer.rs | 6 +++--- contract/src/lib.rs | 20 +++---------------- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/contract/src/core.rs b/contract/src/core.rs index 0f6adea..5d7f226 100644 --- a/contract/src/core.rs +++ b/contract/src/core.rs @@ -1,5 +1,5 @@ use near_contract_standards::{ - fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver}, + fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver, Balance}, storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, }; use near_plugins::{pause, Pausable}; @@ -76,3 +76,46 @@ impl FungibleTokenResolver for Contract { used_amount.into() } } + +/// Deposit primitive that does **not** require the recipient to have an existing +/// storage-registered account: if no balance entry exists, it starts from zero +/// instead of panicking. +/// +/// Taken from contract standards but modified to default if an account isn't +/// initialized rather than panicking: +/// +/// +/// # Safety contract +/// +/// Bypassing the storage-registration check is only sound when the recipient is +/// a **trusted protocol account configured by the contract owner**. Callers +/// must restrict use to: +/// +/// - the **fee account** — an [`crate::Role::Oracle`] grantee that submitted the +/// batch via `defer_batch` and earns the minting fee, and +/// - the **holding account** — set via the private +/// [`crate::api::SweatApi::set_holding_account_id`] and used to hold newly +/// minted user rewards. +/// +/// Both are controlled by the protocol, so allowing them to skip registration +/// cannot be used by untrusted parties to occupy contract storage without +/// paying for it. Do **not** call this for arbitrary user-supplied accounts; +/// use the standard `FungibleToken` transfer paths, which enforce registration. +pub(crate) trait InternalDeposit { + fn internal_deposit(&mut self, account_id: &AccountId, amount: Balance); +} + +impl InternalDeposit for Contract { + fn internal_deposit(&mut self, account_id: &AccountId, amount: Balance) { + let balance = self.token.accounts.get(account_id).unwrap_or_default(); + let new_balance = balance + .checked_add(amount) + .unwrap_or_else(|| env::panic_str("Balance overflow")); + self.token.accounts.insert(account_id, &new_balance); + self.token.total_supply = self + .token + .total_supply + .checked_add(amount) + .unwrap_or_else(|| env::panic_str("Total supply overflow")); + } +} diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 973d5d5..1abc7a2 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -8,7 +8,7 @@ use near_sdk::{ AccountId, Gas, NearToken, Promise, PromiseOrValue, }; -use crate::{api::SweatDefer, internal_deposit, Contract, ContractExt, Role}; +use crate::{api::SweatDefer, core::InternalDeposit, Contract, ContractExt, Role}; use near_plugins::{access_control_any, pause, AccessControllable, Pausable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); @@ -106,14 +106,14 @@ impl FungibleTokenTransferCallback for Contract { let mut events: Vec = Vec::with_capacity(2); - internal_deposit(&mut self.token, &fee_account_id, fee.0); + self.internal_deposit(&fee_account_id, fee.0); events.push(FtMint { owner_id: &fee_account_id, amount: fee, memo: None, }); - internal_deposit(&mut self.token, &receiver_id, amount.0); + self.internal_deposit(&receiver_id, amount.0); events.push(FtMint { owner_id: &receiver_id, amount, diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 7b8d070..397f47c 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -5,7 +5,7 @@ use api::{Payout, RestrictionApi, SweatApi}; use near_contract_standards::fungible_token::{ events::FtBurn, metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, - Balance, FungibleToken, + FungibleToken, }; use near_plugins::{access_control, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ @@ -126,21 +126,6 @@ impl Contract { } } -/// Taken from contract standards but modified to default if account isn't initialized -/// rather than panicking: -/// -fn internal_deposit(token: &mut FungibleToken, account_id: &AccountId, amount: Balance) { - let balance = token.accounts.get(account_id).unwrap_or_default(); - let new_balance = balance - .checked_add(amount) - .unwrap_or_else(|| env::panic_str("Balance overflow")); - token.accounts.insert(account_id, &new_balance); - token.total_supply = token - .total_supply - .checked_add(amount) - .unwrap_or_else(|| env::panic_str("Total supply overflow")); -} - pub const ICON: &str = "data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"; #[near] @@ -172,6 +157,7 @@ mod tests { use crate::{ api::{Payout, RestrictionApi, SweatApi, SweatDefer}, + core::InternalDeposit, defer::FungibleTokenTransferCallback, Contract, Role, }; @@ -364,6 +350,6 @@ mod tests { } fn mint(contract: &mut Contract, account_id: &AccountId, amount: u128) { - crate::internal_deposit(&mut contract.token, account_id, amount); + contract.internal_deposit(account_id, amount); } } From e5e38e785c2329058bbb291e11fd13bde9e22fd4 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 16:50:40 +0100 Subject: [PATCH 20/46] refactor: extract meta api --- contract/src/lib.rs | 24 ++---------------------- contract/src/meta.rs | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 22 deletions(-) create mode 100644 contract/src/meta.rs diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 397f47c..9fc48ed 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -2,11 +2,7 @@ extern crate static_assertions; use api::{Payout, RestrictionApi, SweatApi}; -use near_contract_standards::fungible_token::{ - events::FtBurn, - metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, - FungibleToken, -}; +use near_contract_standards::fungible_token::{events::FtBurn, FungibleToken}; use near_plugins::{access_control, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ borsh::BorshDeserialize, @@ -23,6 +19,7 @@ mod core; mod defer; mod integration; mod math; +mod meta; mod migration; #[derive(AccessControlRole, Deserialize, Serialize, Clone, Copy)] @@ -126,23 +123,6 @@ impl Contract { } } -pub const ICON: &str = "data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"; - -#[near] -impl FungibleTokenMetadataProvider for Contract { - fn ft_metadata(&self) -> FungibleTokenMetadata { - FungibleTokenMetadata { - spec: "ft-1.0".to_string(), - name: "SWEAT".to_string(), - symbol: "SWEAT".to_string(), - icon: Some(String::from(ICON)), - reference: None, - reference_hash: None, - decimals: 18, - } - } -} - #[cfg(test)] mod tests { use std::{collections::HashMap, str::FromStr}; diff --git a/contract/src/meta.rs b/contract/src/meta.rs new file mode 100644 index 0000000..c790788 --- /dev/null +++ b/contract/src/meta.rs @@ -0,0 +1,23 @@ +use near_contract_standards::fungible_token::metadata::{ + FungibleTokenMetadata, FungibleTokenMetadataProvider, +}; +use near_sdk::near; + +use crate::{Contract, ContractExt}; + +pub const ICON: &str = "data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"; + +#[near] +impl FungibleTokenMetadataProvider for Contract { + fn ft_metadata(&self) -> FungibleTokenMetadata { + FungibleTokenMetadata { + spec: "ft-1.0".to_string(), + name: "SWEAT".to_string(), + symbol: "SWEAT".to_string(), + icon: Some(String::from(ICON)), + reference: None, + reference_hash: None, + decimals: 18, + } + } +} From 3cfde3cef69872c6e94ee745a831ac61e8234707 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 17:00:43 +0100 Subject: [PATCH 21/46] doc: describe holding account --- contract/src/api.rs | 8 ++++++ contract/src/defer.rs | 67 +++++++++++++++++++++++++++++++++++++++++++ contract/src/lib.rs | 4 +++ 3 files changed, 79 insertions(+) diff --git a/contract/src/api.rs b/contract/src/api.rs index 59e31fe..92b922b 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -5,6 +5,9 @@ use near_sdk::{ pub trait SweatApi { fn new(postfix: Option, holding_account_id: Option) -> Self; + /// Sets the trusted holding-account contract that will custody the user + /// portion of every minted batch until end users claim it. See the + /// [`crate::defer`] module docs for the full flow. fn set_holding_account_id(&mut self, account_id: AccountId); fn get_holding_account_id(&self) -> Option; fn burn(&mut self, amount: U128); @@ -17,6 +20,11 @@ pub trait RestrictionApi { fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool); } +/// Token-minting API. +/// +/// Implementations mint user rewards to the configured holding account rather +/// than directly to end users. See the [`crate::defer`] module docs for the +/// full claim flow and trust model. pub trait SweatDefer { fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()>; } diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 1abc7a2..57f2dac 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -1,3 +1,70 @@ +//! Deferred minting via the holding account. +//! +//! Newly minted user rewards are **not** credited to end-user accounts at mint +//! time. End users must **actively claim** their rewards from a separate +//! protocol-owned contract — the *holding account* — which is the only party +//! (besides the Oracle fee) that this contract ever mints user-portion tokens +//! to. +//! +//! # Roles +//! +//! - **This contract** owns the supply and controls minting. It never keeps a +//! per-user ledger of unclaimed rewards. +//! - **Holding account** ([`Contract::holding_account_id`]) is a separate, +//! protocol-owned smart contract. It is trusted by this contract (which is +//! why [`crate::core::InternalDeposit::internal_deposit`] is allowed to skip +//! storage registration for it — see the doc-comment there). The holding +//! contract maintains the per-user ledger of unclaimed rewards and releases +//! tokens on claim. +//! - **End user** earns steps. After a batch is recorded, the user calls the +//! holding contract to claim their accumulated balance; the holding contract +//! then performs a standard NEP-141 `ft_transfer` from itself to the user. +//! +//! # Batch lifecycle: from steps to a claimable balance +//! +//! 1. An [`Role::Oracle`] grantee calls [`SweatDefer::defer_batch`] with a +//! `Vec<(AccountId, steps)>`. +//! 2. This contract computes `(amount, fee)` per `(user, steps)` pair, sums +//! them, advances `steps_since_tge`, and packs the per-user breakdown into +//! `amounts: Vec<(AccountId, U128)>`. +//! 3. It calls `record_batch_for_hold({ amounts })` on the holding account. +//! This is the hand-off point: the holding account persists the per-user +//! accounting (so it knows exactly how much each user is owed) *before* any +//! tokens exist. +//! 4. The [`FungibleTokenTransferCallback::on_record`] callback: +//! - **on success** mints `total_effective` (the user portion) to +//! [`Contract::holding_account_id`] and `total_fee` to the Oracle that +//! submitted the batch, and emits two [`FtMint`] events. The user portion +//! now sits in the holding account's NEP-141 balance on this contract, +//! earmarked in the holding contract's own storage for the individual +//! users recorded in step 3. +//! - **on failure** rolls back `steps_since_tge` and mints nothing. The +//! holding account is expected to treat its own `record_batch_for_hold` +//! call as transactional and not credit users for a batch whose mint did +//! not land. +//! 5. Later, an end user calls a claim method on the **holding contract** (out +//! of scope of this crate — it is a separately deployed contract). The +//! holding contract decrements that user's internal ledger and issues a +//! standard `ft_transfer` from `holding_account_id` to the user. +//! +//! # Invariants +//! +//! - `ft_balance_of(holding_account_id)` represents the pool of unclaimed user +//! rewards plus any residual rounding dust. The holding account custodies +//! this balance for users; it does not own it economically. +//! - There is no path on this contract by which a user receives newly minted +//! rewards directly. Every reward path for end users goes through the +//! holding contract's claim flow, which uses ordinary NEP-141 transfers and +//! is therefore subject to the standard denylist and pause checks in +//! [`crate::core`]. +//! - This contract has no visibility into per-user pending balances. "What +//! does Alice still have unclaimed?" must be answered by reading the holding +//! contract's state, not this one. +//! - The trust assumption is explicit: a compromised or buggy holding contract +//! could mis-credit users or fail to release claims, but it cannot mint +//! additional supply — minting authority remains with the Oracle role and is +//! gated by [`SweatDefer::defer_batch`]. + use near_contract_standards::fungible_token::events::FtMint; use near_sdk::{ env::{self, panic_str}, diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 9fc48ed..6a67ece 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -38,6 +38,10 @@ pub struct Contract { token: FungibleToken, steps_since_tge: U64, denylist: UnorderedSet, + /// Trusted protocol-owned contract that custodies the user portion of every + /// minted batch until end users claim their rewards. Minting via + /// [`api::SweatDefer::defer_batch`] requires this to be set. See the + /// [`defer`] module docs for the full claim flow and trust model. holding_account_id: Option, } From 61656a123aab2b503ab4ff237d4218acbe720221 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 17:12:13 +0100 Subject: [PATCH 22/46] refactor: require holding account --- contract/src/api.rs | 4 +- contract/src/defer.rs | 5 +- contract/src/lib.rs | 31 +++++------ contract/src/migration.rs | 4 +- integration-tests/tests/common/prepare.rs | 8 ++- integration-tests/tests/defer.rs | 43 +++------------ integration-tests/tests/migration.rs | 8 ++- res/contract.wasm | Bin 418078 -> 415470 bytes res/contract_abi.json | 64 ++++++---------------- res/contract_abi.zst | Bin 2259 -> 2242 bytes 10 files changed, 59 insertions(+), 108 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index 92b922b..c05eabc 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -4,12 +4,12 @@ use near_sdk::{ }; pub trait SweatApi { - fn new(postfix: Option, holding_account_id: Option) -> Self; + fn new(postfix: Option, holding_account_id: AccountId) -> Self; /// Sets the trusted holding-account contract that will custody the user /// portion of every minted batch until end users claim it. See the /// [`crate::defer`] module docs for the full flow. fn set_holding_account_id(&mut self, account_id: AccountId); - fn get_holding_account_id(&self) -> Option; + fn get_holding_account_id(&self) -> AccountId; fn burn(&mut self, amount: U128); fn get_steps_since_tge(&self) -> U64; fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 57f2dac..430eae2 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -91,10 +91,7 @@ impl SweatDefer for Contract { "Not enough gas to complete the operation" ); - let holding_account_id = self - .holding_account_id - .clone() - .unwrap_or_else(|| panic_str("Holding account is not set")); + let holding_account_id = self.holding_account_id.clone(); let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); let mut total_effective: U128 = U128(0); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 6a67ece..6d97513 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -39,16 +39,15 @@ pub struct Contract { steps_since_tge: U64, denylist: UnorderedSet, /// Trusted protocol-owned contract that custodies the user portion of every - /// minted batch until end users claim their rewards. Minting via - /// [`api::SweatDefer::defer_batch`] requires this to be set. See the - /// [`defer`] module docs for the full claim flow and trust model. - holding_account_id: Option, + /// minted batch until end users claim their rewards. See the [`defer`] + /// module docs for the full claim flow and trust model. + holding_account_id: AccountId, } #[near] impl SweatApi for Contract { #[init] - fn new(postfix: Option, holding_account_id: Option) -> Self { + fn new(postfix: Option, holding_account_id: AccountId) -> Self { let mut contract = Self { token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), @@ -63,10 +62,10 @@ impl SweatApi for Contract { #[private] fn set_holding_account_id(&mut self, account_id: AccountId) { - self.holding_account_id = Some(account_id); + self.holding_account_id = account_id; } - fn get_holding_account_id(&self) -> Option { + fn get_holding_account_id(&self) -> AccountId { self.holding_account_id.clone() } @@ -182,7 +181,7 @@ mod tests { #[test] fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); @@ -193,7 +192,7 @@ mod tests { #[test] fn oracle_fee_test() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), Some(sweat_holding())); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); @@ -226,7 +225,7 @@ mod tests { #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -239,7 +238,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is not registered"#)] fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -255,7 +254,7 @@ mod tests { #[test] fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -273,7 +272,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn transfer_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -288,7 +287,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn transfer_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -303,7 +302,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn ft_transfer_call_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -318,7 +317,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn ft_transfer_call_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), None); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); diff --git a/contract/src/migration.rs b/contract/src/migration.rs index 1ebaa11..cde8fa5 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -15,14 +15,14 @@ struct OldContract { impl Contract { #[private] #[init(ignore_state)] - pub fn migrate() -> Self { + pub fn migrate(holding_account_id: AccountId) -> Self { let mut old: OldContract = env::state_read().expect("failed to read old contract state"); let mut contract = Self { token: old.token, steps_since_tge: old.steps_since_tge, denylist: UnorderedSet::new(b"d"), - holding_account_id: None, + holding_account_id, }; contract.acl_init_super_admin(env::current_account_id()); diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 0d653d1..967045b 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -115,12 +115,18 @@ impl ContextBuilder { None }; + // Initializing sweat requires a holding account id. When the test + // doesn't deploy the claim contract, fall back to the sandbox root + // account — tests that don't exercise defer_batch don't care which + // account holds the role. + let holding_account_id = claim.as_ref().map(Contract::id).unwrap_or_else(|| root.id()); + info!("initializing sweat (new)"); sweat .call("new") .args_json(json!({ "postfix": FT_POSTFIX, - "holding_account_id": claim.as_ref().map(Contract::id), + "holding_account_id": holding_account_id, })) .transact() .await? diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index be51aa0..9269345 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -88,31 +88,6 @@ async fn test_defer() -> anyhow::Result<()> { Ok(()) } -#[tokio::test] -#[tracing::instrument] -async fn test_defer_batch_panics_when_holding_account_unset() -> anyhow::Result<()> { - let context = Context::builder().with_oracle().build().await?; - - info!("view get_holding_account_id"); - let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; - assert_eq!(holding, None); - info!("holding account is unset"); - - info!("call defer_batch([(alice, {CLAIM_AMOUNT})]) [signer=oracle] — holding account unset"); - let result = context - .oracle() - .call(context.sweat.id(), "defer_batch") - .args_json(json!({ "steps_batch": [[context.alice.id(), CLAIM_AMOUNT]] })) - .max_gas() - .transact() - .await? - .into_result(); - assert!(result.has_panic("Holding account is not set")); - info!("defer_batch: {result:?}"); - - Ok(()) -} - #[tokio::test] #[tracing::instrument] async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<()> { @@ -124,9 +99,9 @@ async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<() .await?; info!("view get_holding_account_id [baked in at init]"); - let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; - assert_eq!(holding, Some(context.claim().id().to_string())); - info!(?holding, "holding account starts as claim"); + let holding: String = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, context.claim().id().to_string()); + info!(%holding, "holding account starts as claim"); info!("call set_holding_account_id(stub) [signer=contract, super-admin]"); context @@ -138,9 +113,9 @@ async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<() .into_result()?; info!("view get_holding_account_id [after update]"); - let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; - assert_eq!(holding, Some(context.stub().id().to_string())); - info!(?holding, "holding account updated to stub"); + let holding: String = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, context.stub().id().to_string()); + info!(%holding, "holding account updated to stub"); info!("view formula(0, {CLAIM_AMOUNT}) — raw deferred amount"); let minted_raw: String = context @@ -213,9 +188,9 @@ async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { info!("set_holding_account_id: {result:?}"); info!("view get_holding_account_id [unchanged]"); - let holding: Option = context.sweat.view("get_holding_account_id").await?.json()?; - assert_eq!(holding, Some(context.claim().id().to_string())); - info!(?holding, "holding account unchanged"); + let holding: String = context.sweat.view("get_holding_account_id").await?.json()?; + assert_eq!(holding, context.claim().id().to_string()); + info!(%holding, "holding account unchanged"); Ok(()) } diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs index 789df93..3fc5c1b 100644 --- a/integration-tests/tests/migration.rs +++ b/integration-tests/tests/migration.rs @@ -97,7 +97,13 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { contract.as_account().deploy(&new_wasm).await?.into_result()?; info!("calling migrate [signer=contract account]"); - contract.call("migrate").max_gas().transact().await?.into_result()?; + contract + .call("migrate") + .args_json(json!({ "holding_account_id": root.id() })) + .max_gas() + .transact() + .await? + .into_result()?; info!("verifying super admin"); let is_super_admin: bool = contract diff --git a/res/contract.wasm b/res/contract.wasm index 62400f8222c02e58086f52ef42f8e59ecd56ee04..cb17e017f7910c83213965f845558b42f8e49c89 100644 GIT binary patch delta 113509 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 G;{O3w=fE)l diff --git a/res/contract_abi.json b/res/contract_abi.json index b030b5e..5c578fb 100644 --- a/res/contract_abi.json +++ b/res/contract_abi.json @@ -7,7 +7,7 @@ "compiler": "rustc 1.86.0", "builder": "cargo-near cargo-near-build 0.11.0" }, - "wasm_hash": "6epCTG3uUXdoqoKPL29GuZ5RUeSTDkLjR2QGb8SjXjyy" + "wasm_hash": "Gqb81N1UPFbZDhPJXbMhQroRqMyvcv96RmsTJiM4A1DL" }, "body": { "functions": [ @@ -541,25 +541,6 @@ } } }, - { - "name": "add_oracle", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - } - }, { "name": "burn", "kind": "call", @@ -812,10 +793,7 @@ "serialization_type": "json", "type_schema": { "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": [ - "string", - "null" - ] + "type": "string" } } }, @@ -857,7 +835,19 @@ "modifiers": [ "init", "private" - ] + ], + "params": { + "serialization_type": "json", + "args": [ + { + "name": "holding_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + ] + } }, { "name": "new", @@ -881,10 +871,7 @@ "name": "holding_account_id", "type_schema": { "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": [ - "string", - "null" - ] + "type": "string" } } ] @@ -1031,25 +1018,6 @@ } } }, - { - "name": "remove_oracle", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - } - }, { "name": "set_holding_account_id", "kind": "call", diff --git a/res/contract_abi.zst b/res/contract_abi.zst index 18aecc3322c11c407fe6bea57f93a47629273fa2..2c71f6f7aca4708fa016473398d54380a7243a42 100644 GIT binary patch literal 2242 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 Date: Mon, 25 May 2026 17:24:12 +0100 Subject: [PATCH 23/46] feat: introduce DenylistManager role --- contract/src/lib.rs | 9 +++- contract/src/migration.rs | 1 + integration-tests/tests/access_control.rs | 60 ++++++++++++++++++++++ integration-tests/tests/restriction.rs | 16 ++++-- res/contract.wasm | Bin 415470 -> 414598 bytes res/contract_abi.json | 5 +- res/contract_abi.zst | Bin 2242 -> 2243 bytes 7 files changed, 82 insertions(+), 9 deletions(-) diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 6d97513..7b9cca1 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -3,7 +3,7 @@ extern crate static_assertions; use api::{Payout, RestrictionApi, SweatApi}; use near_contract_standards::fungible_token::{events::FtBurn, FungibleToken}; -use near_plugins::{access_control, pause, AccessControlRole, AccessControllable, Pausable}; +use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ borsh::BorshDeserialize, collections::UnorderedSet, @@ -28,6 +28,7 @@ pub enum Role { Oracle, PauseManager, UnpauseManager, + DenylistManager, } #[near(contract_state)] @@ -98,7 +99,7 @@ impl RestrictionApi for Contract { self.denylist.contains(account_id) } - #[private] + #[access_control_any(roles(Role::DenylistManager))] fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool) { if is_restricted { self.denylist.insert(account_id); @@ -277,6 +278,7 @@ mod tests { token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); token.set_restricted(&user1(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -292,6 +294,7 @@ mod tests { token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); token.set_restricted(&user2(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -307,6 +310,7 @@ mod tests { token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); token.set_restricted(&user1(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -322,6 +326,7 @@ mod tests { token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); mint(&mut token, &user2(), 9499999991723028480); + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); token.set_restricted(&user2(), true); testing_env!(get_context(sweat_the_token(), user1()).build()); diff --git a/contract/src/migration.rs b/contract/src/migration.rs index cde8fa5..fbcfec5 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -26,6 +26,7 @@ impl Contract { }; contract.acl_init_super_admin(env::current_account_id()); + contract.acl_grant_role(Role::DenylistManager.into(), env::current_account_id()); for oracle in old.oracles.iter() { contract.acl_grant_role(Role::Oracle.into(), oracle); diff --git a/integration-tests/tests/access_control.rs b/integration-tests/tests/access_control.rs index fadb6ec..09161c7 100644 --- a/integration-tests/tests/access_control.rs +++ b/integration-tests/tests/access_control.rs @@ -112,6 +112,66 @@ async fn test_acl_defer_batch() -> anyhow::Result<()> { Ok(()) } +#[tokio::test] +#[tracing::instrument] +async fn test_acl_set_restricted() -> anyhow::Result<()> { + let context = Context::builder().build().await?; + + info!("call set_restricted(alice, true) [signer=alice, unauthorized]"); + let result = context + .alice + .call(context.sweat.id(), "set_restricted") + .args_json(json!({ + "account_id": context.alice.id(), + "is_restricted": true, + })) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Insufficient permissions for method set_restricted restricted by access control.")); + info!("set_restricted: {result:?}"); + + info!("call acl_grant_role(DenylistManager, alice) [signer=contract, super-admin]"); + let granted: Option = context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "DenylistManager", + "account_id": context.alice.id(), + })) + .transact() + .await? + .json()?; + assert_eq!(granted, Some(true)); + info!("acl_grant_role: {granted:?}"); + + info!("call set_restricted(alice, true) [signer=alice, authorized]"); + let result = context + .alice + .call(context.sweat.id(), "set_restricted") + .args_json(json!({ + "account_id": context.alice.id(), + "is_restricted": true, + })) + .transact() + .await? + .into_result()?; + assert!(result.outcome().is_success()); + info!("set_restricted: {result:?}"); + + info!("view is_restricted(alice)"); + let is_restricted: bool = context + .sweat + .view("is_restricted") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + assert!(is_restricted); + info!("is_restricted: {is_restricted:?}"); + + Ok(()) +} + #[tokio::test] #[tracing::instrument] async fn test_acl_pause_feature() -> anyhow::Result<()> { diff --git a/integration-tests/tests/restriction.rs b/integration-tests/tests/restriction.rs index 9adf684..552c1b2 100644 --- a/integration-tests/tests/restriction.rs +++ b/integration-tests/tests/restriction.rs @@ -5,10 +5,20 @@ use tracing::info; mod common; use common::{panic::PanicFinder, prepare::Context, storage::register_for_storage}; -/// The denylist check fires before any balance arithmetic, so these tests -/// only need alice flagged as restricted — no minted balance required. async fn restrict_alice(context: &Context) -> anyhow::Result<()> { - info!("call set_restricted(alice, true) [signer=contract]"); + info!("call acl_grant_role(DenylistManager, sweat) [signer=contract, super-admin]"); + context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "DenylistManager", + "account_id": context.sweat.id(), + })) + .transact() + .await? + .into_result()?; + + info!("call set_restricted(alice, true) [signer=contract, DenylistManager]"); context .sweat .call("set_restricted") diff --git a/res/contract.wasm b/res/contract.wasm index cb17e017f7910c83213965f845558b42f8e49c89..f606d7a64b5e71eb71ec41605b15886e16cc5b06 100644 GIT binary patch delta 115186 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 z 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 diff --git a/res/contract_abi.json b/res/contract_abi.json index 5c578fb..d0c58c2 100644 --- a/res/contract_abi.json +++ b/res/contract_abi.json @@ -7,7 +7,7 @@ "compiler": "rustc 1.86.0", "builder": "cargo-near cargo-near-build 0.11.0" }, - "wasm_hash": "Gqb81N1UPFbZDhPJXbMhQroRqMyvcv96RmsTJiM4A1DL" + "wasm_hash": "4ktUwgeUSJzwJmGUPoAvSuMa4cbfYuRH8iq5FeTEdohW" }, "body": { "functions": [ @@ -1040,9 +1040,6 @@ { "name": "set_restricted", "kind": "call", - "modifiers": [ - "private" - ], "params": { "serialization_type": "json", "args": [ diff --git a/res/contract_abi.zst b/res/contract_abi.zst index 2c71f6f7aca4708fa016473398d54380a7243a42..a8b6826653286a62d3c37afce7a822ac198be574 100644 GIT binary patch delta 920 zcmV;J184lg5yKG&D77#B0EpGG2krv_UX%6%9~ELO8#*Rn4`pB~=Z8I4H$5NuJ%eA9 zDg-eBd6QfOSpn&jwggiZN^B0l0BG~ewmQLc)1BI;NboevER!Au83OtQlQ{(*1$5AP z1`Cs11wDVmf>y_qpQCV{fMOdU4Q*fQEk)q7rxMcU^^5C1FJ)+Au8auc(9= z=V?mG=;x%@njF>AQE1x5$dett%Q2rMAv-OHVrod2jzJK(JF4B`d`kfnav1}=TJz|{45MAH=Q8+c ziKu_s2}oNF9^TF~u&|0FOao)O!#ys&c2RJT3k`pYN)%uuOqBD0%2X#%0_-UAgCl@#8aX!o z!GAWD?T1kWUo}UFH|p?@S|$e&^M^zmf7BnufZ4WISC=762+Aga_A3=)Kiy@YGmIZ{ z4o-R^IqpON+YsC7jNx$c4fNrf5QI4P5{NBDYh+<-c*U2WOoX%PuPV5GKcm?>Qn!Cy zh;K_i=hCcP%)IR~;evrp1|k{W6R=A{T0~vN!T*!-=;n^7Q07Zi(^C^nOkOTXdu)0n z3+TQ(Z~k4HB0EQxX=~mDx}Qu@5oBWtUpp4&0!I0D69Dw<4|VN7sq1R}1tq?HzB+j7 z^~Kqr8DkwU(jtwvB6RIx$H9LB>yAD+BGLgxa(<9R+{9A+6ls9*5z_AdmRz9_ z8A``_rS~N;Gzf}g@>RN_wUsu-4P**`7S2OyC|Uu^Q>(QA delta 919 zcmV;I18Dri5yBA%D77#B0Eo@82krv_zLWL?9~B}k8#*Rn4`pB~=Z8I4H$5NuJ%eSF zDg-eBg_B$aSpn~pwggiZO>7Ro0BG~e<~qT1)1BI;2=O#aE|VSw83F(WlQ{(*1&q*n zh76Nj1wDV;f>y_qpQCV{fMOd2Gl0h>GIeB4JUs@CGOJix(cgG!iq+;VOZE-Q3)~5 z)0C3Y&q=Q}IjW_j(6oz@Cp&t{l}-}@31WoeRc1J_C;^*kJ~Z?vuy66L2=SP5#A&Ey zLPwxmkzh2Q_3jdvV?Iejc3KX_)Q~P6gCKBsRJ+6ZmI5Z^G6r_F=Fy26M!Q_kW$@7w zQL}#&khU5;yq#xYVHHQ12F7%UD+}Rly`PuK9n2IVA+SQ0$VvASTjEtMDFK{A;!#HT zr5U#~3@QhFD51eO&N=uT&V!1yn?Mu2NoWhhT>HXTHi*765&`BWQVt$@8|q_nkcrVk zn%&GfIBlVf+ONgbqL;nbU)Oc*qTn7E8Wew(D8NXVDCYr{sZO8-*iqyMM*!P2a%}p8 z|7*z`yi z(0zB_{JS(oc8)C5*1QRHKbfK;$i@=Bb}Y;VjPmOy0O;2r>e_!&*VXz9N__i#b@0^d zi@_s97@Bo5#yVc4MH+2I=-R`Mg9U%q9er>_qyviN{2+O=Id{lyR1rZerl_%{rlZbgug(FC1+eh>M+UT8tFv@MxPAUnv;u>^uvY*8 From 65f73445917e02dc4cccd3cb7ce7ce57ea409cf1 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 17:37:34 +0100 Subject: [PATCH 24/46] refactor: extract storage standard impl --- contract/src/core.rs | 35 ++--------------------------------- contract/src/lib.rs | 1 + contract/src/storage.rs | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 33 deletions(-) create mode 100644 contract/src/storage.rs diff --git a/contract/src/core.rs b/contract/src/core.rs index 5d7f226..aff3e37 100644 --- a/contract/src/core.rs +++ b/contract/src/core.rs @@ -1,9 +1,6 @@ -use near_contract_standards::{ - fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver, Balance}, - storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, -}; +use near_contract_standards::fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver, Balance}; use near_plugins::{pause, Pausable}; -use near_sdk::{env, json_types::U128, near, AccountId, NearToken, PromiseOrValue}; +use near_sdk::{env, json_types::U128, near, AccountId, PromiseOrValue}; use crate::{Contract, ContractExt}; @@ -40,34 +37,6 @@ impl FungibleTokenCore for Contract { } } -#[near] -impl StorageManagement for Contract { - #[payable] - fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance { - self.token.storage_deposit(account_id, registration_only) - } - - #[payable] - fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { - self.token.storage_withdraw(amount) - } - - #[payable] - fn storage_unregister(&mut self, force: Option) -> bool { - self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); - - self.token.internal_storage_unregister(force).is_some() - } - - fn storage_balance_bounds(&self) -> StorageBalanceBounds { - self.token.storage_balance_bounds() - } - - fn storage_balance_of(&self, account_id: AccountId) -> Option { - self.token.storage_balance_of(account_id) - } -} - #[near] impl FungibleTokenResolver for Contract { #[private] diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 7b9cca1..6999978 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -21,6 +21,7 @@ mod integration; mod math; mod meta; mod migration; +mod storage; #[derive(AccessControlRole, Deserialize, Serialize, Clone, Copy)] #[serde(crate = "near_sdk::serde")] diff --git a/contract/src/storage.rs b/contract/src/storage.rs new file mode 100644 index 0000000..e6000ce --- /dev/null +++ b/contract/src/storage.rs @@ -0,0 +1,32 @@ +use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}; +use near_sdk::{env, near, AccountId, NearToken}; + +use crate::{Contract, ContractExt}; + +#[near] +impl StorageManagement for Contract { + #[payable] + fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance { + self.token.storage_deposit(account_id, registration_only) + } + + #[payable] + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance { + self.token.storage_withdraw(amount) + } + + #[payable] + fn storage_unregister(&mut self, force: Option) -> bool { + self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); + + self.token.internal_storage_unregister(force).is_some() + } + + fn storage_balance_bounds(&self) -> StorageBalanceBounds { + self.token.storage_balance_bounds() + } + + fn storage_balance_of(&self, account_id: AccountId) -> Option { + self.token.storage_balance_of(account_id) + } +} From 73b6e6f42af56d25575cbe4866c46fd5bef2265f Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 18:06:46 +0100 Subject: [PATCH 25/46] chore: update install step --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9863d6b..a17b45c 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ help: ##@Miscellaneous Show this help @perl -e '$(HELP_FUN)' $(MAKEFILE_LIST) install: ##@Miscellaneous Install dependencies - @npm i near-cli + @cargo install near-cli-rs @cargo build build: ##@Build the contract locally. From 9b84e71ae05d7faf46826a82fbaf453794f0ef14 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 25 May 2026 18:06:54 +0100 Subject: [PATCH 26/46] chore: update README --- README.md | 259 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 193 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index 89190bd..ec60a46 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,246 @@ # SWEAT the TOKEN -#### 📦 Dependencies +The SWEAT fungible token (NEP-141 / NEP-148) for the Sweat Economy move-to-earn +protocol. Tokens are minted by trusted Oracles in proportion to user steps, using +a decaying issuance formula tied to the global step count since the Token +Generation Event (TGE). + +## What the contract does + +- **Deferred minting.** Oracles submit batches of `(account, steps)` via + `defer_batch`. For each batch the contract computes the SWEAT payout using + the issuance formula in `math.rs`, splits it **95% user / 5% Oracle fee**, + and performs an XCC to the configured **holding contract** + (`holding_account_id`). On a successful callback (`on_record`), the user + portion is minted to the holding contract and the fee to the calling Oracle. + On failure, the `steps_since_tge` counter is rolled back. End users later + claim from the holding contract — see + [sweat-claim](https://github.com/sweatco/sweat-claim). +- **Denylist.** A `DenylistManager` role can mark accounts as restricted via + `set_restricted`. Restricted accounts cannot send, receive, or burn tokens. +- **Pausability.** `PauseManager` / `UnpauseManager` roles can pause/unpause + groups of methods. Two pause groups are defined: `minting` (covers + `defer_batch`) and `token` (covers transfers and `burn`). +- **Access control.** All privileged roles (`Oracle`, `DenylistManager`, + `PauseManager`, `UnpauseManager`, plus the Super Admin) are managed by the + [`near-plugins`](https://github.com/aurora-is-near/near-plugins) + `AccessControllable` plugin. Use `acl_grant_role` / `acl_revoke_role`. +- **NEP-141 / NEP-145 / NEP-148.** Standard FT core, storage management, and + metadata are implemented. Transfers add denylist + pause checks on top of + the standard. + +See `recon-report.md` for a deeper architectural walkthrough. + +## Module layout -- Install near-cli: `npm install -g near-cli` -- Install Rust (>= 1.60.0) `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` -- `rustup target add wasm32-unknown-unknown` +``` +contract/src/ +├── api.rs Public traits: SweatApi, RestrictionApi, SweatDefer +├── core.rs NEP-141 transfers with denylist + pause checks +├── defer.rs defer_batch / on_record — the deferred-mint flow +├── lib.rs Contract state, init, plugin wiring +├── math.rs Decaying issuance formula +├── meta.rs NEP-148 metadata (SWEAT / SWEAT / 18 decimals) +├── migration.rs Upgrade migration entry point +└── storage.rs NEP-145 storage management +``` + +## Dependencies -#### 🪛 Vendored `near-contract-standards` +- Rust toolchain (see `rust-toolchain.toml`) — `rustup target add wasm32-unknown-unknown` +- [`cargo-near`](https://github.com/near/cargo-near) for building the contract +- [`near-cli-rs`](https://github.com/near/near-cli-rs) for deployment / interaction + (the legacy JS `near-cli` is **not** what the commands below use — install via + `cargo install near-cli-rs` or the install script in that repo) +- Docker (only if you want reproducible builds via `make dock`) -The crate at `vendors/near-contract-standards/` is a vendored copy of the upstream -[`near-contract-standards`](https://crates.io/crates/near-contract-standards) crate with -local modifications (notably `LookupMapAdapter` for the SWEAT account-id storage layout). -**The vendored directory is the source of truth** for our changes — edit it directly, -commit. There is no separate patch file to keep in sync. +## Vendored `near-contract-standards` + +`vendors/near-contract-standards/` is a vendored copy of upstream +[`near-contract-standards`](https://crates.io/crates/near-contract-standards) +with local modifications (notably `LookupMapAdapter` for the SWEAT account-id +storage layout). **The vendored directory is the source of truth** — edit it +directly and commit. There is no separate patch file to keep in sync. To refresh the vendor from upstream — for example after bumping `near-sdk` in -the workspace `Cargo.toml` — run: +the workspace `Cargo.toml`: ```bash make sync ``` -The script: - -1. Reads the **currently** vendored version from `vendors/near-contract-standards/Cargo.toml`. -2. Downloads that pristine version from crates.io and diffs it against the live vendor - — this captures every local modification, regardless of who made it. -3. Reads the **target** version from `[workspace.dependencies] near-sdk = "..."`. -4. Replaces `vendors/near-contract-standards/` with the target upstream. -5. Re-applies the captured diff. +The script reads the currently vendored version, diffs it against pristine +upstream to capture local changes, replaces the vendor with the target +upstream version (from `[workspace.dependencies] near-sdk`), and re-applies +the captured diff. If a hunk fails, `*.rej` files are written and the script +aborts — resolve manually and commit; the next `make sync` will derive a +fresh diff from the resolved state. -If a hunk fails (upstream changed near our modification site), `patch` writes `*.rej` -files and the script aborts. Inspect, resolve manually, commit the resolved state. -The next `make sync` will derive a fresh diff from your resolved vendor — no -separate patch file to regenerate. +## Build, lint, test -#### Build & Run tests +All common tasks are wired through the `Makefile`: -```rust -./sweat/build.sh -//The wasm file will be at `res/sweat.wasm` - -cargo test -- --nocapture -cargo run --example mint -cargo run --example transfer -cargo run --example formula +```bash +make help # list all targets +make install # npm i near-cli && cargo build +make build # local contract build (./scripts/build.sh) +make build-integration # contract build with `integration-test` feature +make build-stub # build the holding-contract stub +make dock # reproducible build in Docker +make test # cargo test --package contract +make int # integration tests (builds with integration-test feature first) +make int-log # same, with logs streamed serially (override RUST_LOG) +make cov # cargo llvm-cov coverage report +make fmt # cargo +nightly fmt --all +make lint # clippy ``` -## Usage +## Deploy & initialize + +All examples below use `near-cli-rs`. Swap `network-config testnet` for +`network-config mainnet` as appropriate. ```bash export TOKEN_ACCOUNT_ID=your-token-account-id +export HOLDING_ACCOUNT_ID=your-holding-account-id + +near contract deploy $TOKEN_ACCOUNT_ID \ + use-file res/sweat.wasm \ + with-init-call new \ + json-args '{"postfix":".u.sweat.testnet","holding_account_id":"'$HOLDING_ACCOUNT_ID'"}' \ + prepaid-gas '100.0 Tgas' \ + attached-deposit '0 NEAR' \ + network-config testnet \ + sign-with-keychain \ + send ``` -Deploy and initialize the contract: +The deploying account becomes the **Super Admin** and can grant any role. -```bash -near deploy --accountId=$TOKEN_ACCOUNT_ID --wasmFile=res/sweat.wasm --initArgs '{"postfix": ".u.sweat.testnet"}' --initFunction new -``` +## Granting roles -Add an oracle +Roles are managed through `near-plugins` ACL. Replace `Oracle` with +`DenylistManager`, `PauseManager`, or `UnpauseManager` as needed. ```bash export ORACLE_ACCOUNT_ID=your-oracle-account-id -``` -```bash -near call $TOKEN_ACCOUNT_ID add_oracle `{"account_id":"${ORACLE_ACCOUNT_ID}"}` --accountId $TOKEN_ACCOUNT_ID --gas=2428088695050 -near view sweat_testing_11.testnet get_oracles -[ 'your-oracle-account-id' ] +near contract call-function as-transaction $TOKEN_ACCOUNT_ID acl_grant_role \ + json-args '{"role":"Oracle","account_id":"'$ORACLE_ACCOUNT_ID'"}' \ + prepaid-gas '100.0 Tgas' \ + attached-deposit '0 NEAR' \ + sign-as $TOKEN_ACCOUNT_ID \ + network-config testnet \ + sign-with-keychain \ + send + +near contract call-function as-read-only $TOKEN_ACCOUNT_ID acl_get_grantees \ + json-args '{"role":"Oracle","skip":0,"limit":100}' \ + network-config testnet now ``` -Call view methods +## View methods ```bash -near view $TOKEN_ACCOUNT_ID get_steps_from_tge -'0' +near contract call-function as-read-only $TOKEN_ACCOUNT_ID get_steps_since_tge \ + json-args '{}' network-config testnet now -near view $TOKEN_ACCOUNT_ID formula '{"steps_from_tge":"1", "steps":1000}' -'999999999912699776' +near contract call-function as-read-only $TOKEN_ACCOUNT_ID formula \ + json-args '{"steps_since_tge":"1","steps":1000}' network-config testnet now -near view $TOKEN_ACCOUNT_ID ft_balance_of '{"account_id":"some-random-account.testnet"}' -'0' -``` +near contract call-function as-read-only $TOKEN_ACCOUNT_ID ft_balance_of \ + json-args '{"account_id":"some-account.testnet"}' network-config testnet now -Send steps as an Oracle +near contract call-function as-read-only $TOKEN_ACCOUNT_ID ft_metadata \ + json-args '{}' network-config testnet now -```bash -near call $TOKEN_ACCOUNT_ID record_batch '{"steps_batch": [["random-guy-1.testnet", 10000],["random-gal-2.testnet", 20000] ]}' --accountId $ORACLE_ACCOUNT_ID --gas=300000000000000 +near contract call-function as-read-only $TOKEN_ACCOUNT_ID get_holding_account_id \ + json-args '{}' network-config testnet now + +near contract call-function as-read-only $TOKEN_ACCOUNT_ID is_restricted \ + json-args '{"account_id":"some-account.testnet"}' network-config testnet now ``` -Transfer tokens +## Submit steps as an Oracle (deferred mint) ```bash -# not necessarily $ORACLE_ACCOUNT_ID, can be any local account -near call $TOKEN_ACCOUNT_ID ft_transfer '{"receiver_id":"", "amount":"100", "memo":"hello world!"}' --accountId $ORACLE_ACCOUNT_ID --depositYocto 1 +near contract call-function as-transaction $TOKEN_ACCOUNT_ID defer_batch \ + json-args '{"steps_batch":[["user-1.testnet",10000],["user-2.testnet",20000]]}' \ + prepaid-gas '300.0 Tgas' \ + attached-deposit '0 NEAR' \ + sign-as $ORACLE_ACCOUNT_ID \ + network-config testnet \ + sign-with-keychain \ + send ``` -Pay for storage +For each entry, 95% of the computed payout is minted to the holding contract +(claimable by the user via [sweat-claim](https://github.com/sweatco/sweat-claim)) +and 5% is minted to `$ORACLE_ACCOUNT_ID` as a fee. If the XCC to the holding +contract fails, `steps_since_tge` is rolled back and nothing is minted. -```bash -# not necessarily $ORACLE_ACCOUNT_ID, can be any local account -near call $TOKEN_ACCOUNT_ID storage_deposit '{"account_id":"random-guy-1.testnet"}' --accountId $ORACLE_ACCOUNT_ID --depositYocto 2350000000000000000000 +## Transfers, burn, storage -near view $TOKEN_ACCOUNT_ID storage_balance_of '{"account_id":"random-guy-1.testnet"}' --accountId $ORACLE_ACCOUNT_ID +```bash +# Transfer (subject to pause + denylist on sender & receiver) +near contract call-function as-transaction $TOKEN_ACCOUNT_ID ft_transfer \ + json-args '{"receiver_id":"","amount":"100","memo":"hi"}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '1 yoctoNEAR' \ + sign-as \ + network-config testnet sign-with-keychain send + +# Burn (subject to pause + denylist on caller) +near contract call-function as-transaction $TOKEN_ACCOUNT_ID burn \ + json-args '{"amount":"100"}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '1 yoctoNEAR' \ + sign-as \ + network-config testnet sign-with-keychain send + +# NEP-145 storage registration +near contract call-function as-transaction $TOKEN_ACCOUNT_ID storage_deposit \ + json-args '{"account_id":"user-1.testnet"}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '0.00235 NEAR' \ + sign-as \ + network-config testnet sign-with-keychain send + +near contract call-function as-read-only $TOKEN_ACCOUNT_ID storage_balance_of \ + json-args '{"account_id":"user-1.testnet"}' network-config testnet now ``` -Mint tokens +## Denylist & pause operations ```bash -near call $TOKEN_ACCOUNT_ID mint_tge '{"amount":"100", "account_for":""}' --accountId $TOKEN_ACCOUNT_ID --gas=300000000000000 +# Restrict / unrestrict an account (requires DenylistManager role) +near contract call-function as-transaction $TOKEN_ACCOUNT_ID set_restricted \ + json-args '{"account_id":"bad.testnet","is_restricted":true}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '0 NEAR' \ + sign-as \ + network-config testnet sign-with-keychain send + +# Pause / unpause a group of methods (requires PauseManager / UnpauseManager) +# Known pause groups: "minting" (covers defer_batch), "token" (covers transfers + burn) +near contract call-function as-transaction $TOKEN_ACCOUNT_ID pa_pause_feature \ + json-args '{"key":"minting"}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '0 NEAR' \ + sign-as \ + network-config testnet sign-with-keychain send + +near contract call-function as-transaction $TOKEN_ACCOUNT_ID pa_unpause_feature \ + json-args '{"key":"minting"}' \ + prepaid-gas '30.0 Tgas' \ + attached-deposit '0 NEAR' \ + sign-as \ + network-config testnet sign-with-keychain send ``` -### Deferring tokens +## Deferred mint — sequence diagram ![Smart contracts interaction](doc/contracts_interaction.png) -For information about claiming tokens from Holding account refer to the [Sweat Claim repo](https://github.com/sweatco/sweat-claim). +For the full claim flow on the receiving side, see the +[sweat-claim repo](https://github.com/sweatco/sweat-claim). From d51de9307ac4555ba87fa53d9b97d3cbd27d8b56 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 2 Jun 2026 18:22:47 +0100 Subject: [PATCH 27/46] fix: skip minting for denylisted users --- contract/src/defer.rs | 10 +++- contract/src/lib.rs | 36 ++++++++++++++ integration-tests/tests/defer.rs | 84 ++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 430eae2..f305cc9 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -75,7 +75,11 @@ use near_sdk::{ AccountId, Gas, NearToken, Promise, PromiseOrValue, }; -use crate::{api::SweatDefer, core::InternalDeposit, Contract, ContractExt, Role}; +use crate::{ + api::{RestrictionApi, SweatDefer}, + core::InternalDeposit, + Contract, ContractExt, Role, +}; use near_plugins::{access_control_any, pause, AccessControllable, Pausable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); @@ -99,6 +103,10 @@ impl SweatDefer for Contract { let mut steps_increment: u64 = 0; for (account_id, step_count) in steps_batch { + if self.is_restricted(&account_id) { + continue; + } + let (amount, fee) = self.calculate_tokens_amount(step_count); self.steps_since_tge.0 += u64::from(step_count); steps_increment += u64::from(step_count); diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 6999978..d901b51 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -224,6 +224,42 @@ mod tests { assert!((0.999_999_998_257_479_4 - total_fee.0 as f64 / 1e+18).abs() < EPS); } + #[test] + fn defer_batch_skips_denylisted_user() { + testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); + + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); + token.set_restricted(&user1(), true); + + testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); + let _ = token.defer_batch(vec![(user1(), 10_000), (user2(), 10_000)]); + + // Only the non-denylisted user's steps are counted; user1 is skipped + // before its step_count is added. steps_since_tge is the only on-chain + // state defer_batch mutates here — the per-user amounts go out in the + // record_batch_for_hold XCC args, which a unit test can't observe. + assert_eq!(U64(10_000), token.get_steps_since_tge()); + } + + #[test] + fn defer_batch_skips_all_denylisted_users() { + testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); + let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); + + token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); + token.set_restricted(&user1(), true); + token.set_restricted(&user2(), true); + + testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); + let _ = token.defer_batch(vec![(user1(), 10_000), (user2(), 10_000)]); + + // Every entry skipped -> no steps recorded. + assert_eq!(U64(0), token.get_steps_since_tge()); + } + #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index 9269345..0924698 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -88,6 +88,90 @@ async fn test_defer() -> anyhow::Result<()> { Ok(()) } +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_skips_denylisted_users() -> anyhow::Result<()> { + // alice is denylisted, bob is not. A single defer_batch records both. The + // loop in defer_batch must skip alice (nothing recorded for her to claim) + // while still recording bob. bob is the positive control proving the batch + // isn't simply rejected wholesale. + let context = Context::builder() + .with_oracle() + .with_claim() + .with_bob() + .build() + .await?; + + info!("call acl_grant_role(DenylistManager, sweat) [signer=contract, super-admin]"); + context + .sweat + .call("acl_grant_role") + .args_json(json!({ + "role": "DenylistManager", + "account_id": context.sweat.id(), + })) + .transact() + .await? + .into_result()?; + + info!("call set_restricted(alice, true) [signer=contract, DenylistManager]"); + context + .sweat + .call("set_restricted") + .args_json(json!({ + "account_id": context.alice.id(), + "is_restricted": true, + })) + .transact() + .await? + .into_result()?; + + info!("call defer_batch([(alice, {CLAIM_AMOUNT}), (bob, {CLAIM_AMOUNT})]) [signer=oracle]"); + context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ + "steps_batch": [ + [context.alice.id(), CLAIM_AMOUNT], + [context.bob().id(), CLAIM_AMOUNT], + ], + })) + .max_gas() + .transact() + .await? + .into_result()?; + + info!("view get_claimable_balance_for_account(alice) [denylisted — expect nothing]"); + let alice_claimable: String = context + .claim() + .view("get_claimable_balance_for_account") + .args_json(json!({ "account_id": context.alice.id() })) + .await? + .json()?; + info!(value = %alice_claimable, "alice claimable"); + assert_eq!( + alice_claimable.parse::()?, + 0, + "denylisted user must have nothing recorded to claim" + ); + + info!("view get_claimable_balance_for_account(bob) [not denylisted — expect a balance]"); + let bob_claimable: String = context + .claim() + .view("get_claimable_balance_for_account") + .args_json(json!({ "account_id": context.bob().id() })) + .await? + .json()?; + info!(value = %bob_claimable, "bob claimable"); + assert!( + bob_claimable.parse::()? > 0, + "non-denylisted user must have a claimable balance recorded" + ); + + info!("done"); + Ok(()) +} + #[tokio::test] #[tracing::instrument] async fn test_set_holding_account_id_updates_defer_target() -> anyhow::Result<()> { From d6d481cf5de26b52143dd4ed9d79e77cba24ba69 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 2 Jun 2026 20:15:28 +0100 Subject: [PATCH 28/46] fix: safe math in fee calculation --- contract/src/api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index c05eabc..709f032 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -36,7 +36,7 @@ pub struct Payout { impl From for Payout { fn from(value: u128) -> Self { - let fee = (value * 5).div_ceil(100); + let fee = value.div_ceil(20); // == value * 5 / 100 Self { fee, From 779e31c2951209c5c7777de160d0b937f9823775 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 16:44:12 +0100 Subject: [PATCH 29/46] fix: separate untime governance from contract self-call / upgrade authority --- contract/src/api.rs | 10 +- contract/src/lib.rs | 158 ++++++++++++++++++++-- contract/src/migration.rs | 27 ++-- integration-tests/tests/common/prepare.rs | 5 + integration-tests/tests/migration.rs | 30 +++- 5 files changed, 203 insertions(+), 27 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index 709f032..50953ce 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -4,7 +4,15 @@ use near_sdk::{ }; pub trait SweatApi { - fn new(postfix: Option, holding_account_id: AccountId) -> Self; + fn new( + postfix: Option, + holding_account_id: AccountId, + super_admin_account_id: AccountId, + oracle_account_ids: Vec, + denylist_manager_account_ids: Vec, + pause_manager_account_ids: Vec, + unpause_manager_account_ids: Vec, + ) -> Self; /// Sets the trusted holding-account contract that will custody the user /// portion of every minted batch until end users claim it. See the /// [`crate::defer`] module docs for the full flow. diff --git a/contract/src/lib.rs b/contract/src/lib.rs index d901b51..a64cb27 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -49,7 +49,15 @@ pub struct Contract { #[near] impl SweatApi for Contract { #[init] - fn new(postfix: Option, holding_account_id: AccountId) -> Self { + fn new( + postfix: Option, + holding_account_id: AccountId, + super_admin_account_id: AccountId, + oracle_account_ids: Vec, + denylist_manager_account_ids: Vec, + pause_manager_account_ids: Vec, + unpause_manager_account_ids: Vec, + ) -> Self { let mut contract = Self { token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), @@ -57,7 +65,13 @@ impl SweatApi for Contract { holding_account_id, }; - contract.acl_init_super_admin(env::current_account_id()); + contract.init_acl( + super_admin_account_id, + oracle_account_ids, + denylist_manager_account_ids, + pause_manager_account_ids, + unpause_manager_account_ids, + ); contract } @@ -111,6 +125,36 @@ impl RestrictionApi for Contract { } impl Contract { + /// Initializes the ACL: sets the super admin and grants the manager roles. + /// + /// Uses the unchecked grant path because the super admin is an arbitrary + /// account rather than the caller, so the permission-checked + /// `acl_grant_role` would silently reject these grants. This must only be + /// called from `#[init]` or `#[private]` methods. + fn init_acl( + &mut self, + super_admin_account_id: AccountId, + oracle_account_ids: Vec, + denylist_manager_account_ids: Vec, + pause_manager_account_ids: Vec, + unpause_manager_account_ids: Vec, + ) { + self.acl_init_super_admin(super_admin_account_id); + + let grants = [ + (Role::Oracle, oracle_account_ids), + (Role::DenylistManager, denylist_manager_account_ids), + (Role::PauseManager, pause_manager_account_ids), + (Role::UnpauseManager, unpause_manager_account_ids), + ]; + + for (role, account_ids) in grants { + for account_id in account_ids { + self.acl_get_or_init().grant_role_unchecked(role, &account_id); + } + } + } + pub(crate) fn calculate_tokens_amount(&self, steps: u32) -> (u128, u128) { let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps).0; let payout = Payout::from(sweat_to_mint); @@ -183,7 +227,15 @@ mod tests { #[test] fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); @@ -194,7 +246,15 @@ mod tests { #[test] fn oracle_fee_test() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); @@ -227,7 +287,15 @@ mod tests { #[test] fn defer_batch_skips_denylisted_user() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); @@ -246,7 +314,15 @@ mod tests { #[test] fn defer_batch_skips_all_denylisted_users() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); @@ -263,7 +339,15 @@ mod tests { #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -276,7 +360,15 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is not registered"#)] fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -292,7 +384,15 @@ mod tests { #[test] fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -310,7 +410,15 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn transfer_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -326,7 +434,15 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn transfer_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -342,7 +458,15 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn ft_transfer_call_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -358,7 +482,15 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn ft_transfer_call_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new(Some(".u.sweat".to_string()), sweat_holding()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); diff --git a/contract/src/migration.rs b/contract/src/migration.rs index fbcfec5..df1302f 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -1,8 +1,7 @@ use near_contract_standards::fungible_token::FungibleToken; -use near_plugins::AccessControllable; use near_sdk::{collections::UnorderedSet, env, json_types::U64, near, AccountId}; -use crate::{Contract, ContractExt, Role}; +use crate::{Contract, ContractExt}; #[near(serializers = [borsh])] struct OldContract { @@ -15,7 +14,13 @@ struct OldContract { impl Contract { #[private] #[init(ignore_state)] - pub fn migrate(holding_account_id: AccountId) -> Self { + pub fn migrate( + holding_account_id: AccountId, + super_admin_account_id: AccountId, + denylist_manager_account_ids: Vec, + pause_manager_account_ids: Vec, + unpause_manager_account_ids: Vec, + ) -> Self { let mut old: OldContract = env::state_read().expect("failed to read old contract state"); let mut contract = Self { @@ -25,15 +30,17 @@ impl Contract { holding_account_id, }; - contract.acl_init_super_admin(env::current_account_id()); - contract.acl_grant_role(Role::DenylistManager.into(), env::current_account_id()); - - for oracle in old.oracles.iter() { - contract.acl_grant_role(Role::Oracle.into(), oracle); - } - + let oracle_account_ids: Vec = old.oracles.iter().collect(); old.oracles.clear(); + contract.init_acl( + super_admin_account_id, + oracle_account_ids, + denylist_manager_account_ids, + pause_manager_account_ids, + unpause_manager_account_ids, + ); + contract } } diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index 967045b..eb37d74 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -127,6 +127,11 @@ impl ContextBuilder { .args_json(json!({ "postfix": FT_POSTFIX, "holding_account_id": holding_account_id, + "super_admin_account_id": sweat.id(), + "oracle_account_ids": [], + "denylist_manager_account_ids": [], + "pause_manager_account_ids": [], + "unpause_manager_account_ids": [], })) .transact() .await? diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs index 3fc5c1b..08fd8b6 100644 --- a/integration-tests/tests/migration.rs +++ b/integration-tests/tests/migration.rs @@ -58,6 +58,10 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { let oracle1 = create_user(&root, "oracle1").await?; let oracle2 = create_user(&root, "oracle2").await?; let alice = create_user(&root, "alice").await?; + let admin = create_user(&root, "admin").await?; + let denylist_manager = create_user(&root, "denylist-manager").await?; + let pause_manager = create_user(&root, "pause-manager").await?; + let unpause_manager = create_user(&root, "unpause-manager").await?; info!("registering oracles on the old contract"); for oracle in [&oracle1, &oracle2] { @@ -99,7 +103,13 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { info!("calling migrate [signer=contract account]"); contract .call("migrate") - .args_json(json!({ "holding_account_id": root.id() })) + .args_json(json!({ + "holding_account_id": root.id(), + "super_admin_account_id": admin.id(), + "denylist_manager_account_ids": [denylist_manager.id()], + "pause_manager_account_ids": [pause_manager.id()], + "unpause_manager_account_ids": [unpause_manager.id()], + })) .max_gas() .transact() .await? @@ -108,10 +118,24 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { info!("verifying super admin"); let is_super_admin: bool = contract .view("acl_is_super_admin") - .args_json(json!({ "account_id": contract.id() })) + .args_json(json!({ "account_id": admin.id() })) .await? .json()?; - assert!(is_super_admin, "contract account should be the ACL super admin"); + assert!(is_super_admin, "admin account should be the ACL super admin"); + + info!("verifying role managers migrated to their ACL roles"); + for (role, manager) in [ + ("DenylistManager", &denylist_manager), + ("PauseManager", &pause_manager), + ("UnpauseManager", &unpause_manager), + ] { + let has_role: bool = contract + .view("acl_has_role") + .args_json(json!({ "role": role, "account_id": manager.id() })) + .await? + .json()?; + assert!(has_role, "{} should hold the {} role", manager.id(), role); + } info!("verifying oracles migrated to the ACL Oracle role"); let grantees: Vec = contract From 319cb9408423a231069bf7fd300cd5b29c9e31d9 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 17:06:41 +0100 Subject: [PATCH 30/46] fix: make storage_unregister pausable under the token feature --- contract/src/storage.rs | 2 ++ integration-tests/tests/pause.rs | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/contract/src/storage.rs b/contract/src/storage.rs index e6000ce..1e8b461 100644 --- a/contract/src/storage.rs +++ b/contract/src/storage.rs @@ -1,4 +1,5 @@ use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}; +use near_plugins::{pause, Pausable}; use near_sdk::{env, near, AccountId, NearToken}; use crate::{Contract, ContractExt}; @@ -16,6 +17,7 @@ impl StorageManagement for Contract { } #[payable] + #[pause(name = "token")] fn storage_unregister(&mut self, force: Option) -> bool { self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); diff --git a/integration-tests/tests/pause.rs b/integration-tests/tests/pause.rs index 649c299..2a6ed34 100644 --- a/integration-tests/tests/pause.rs +++ b/integration-tests/tests/pause.rs @@ -311,6 +311,18 @@ async fn test_pause_token() -> anyhow::Result<()> { assert!(result.has_panic("Method is paused")); info!("burn: {result:?}"); + info!("call storage_unregister(force=true) [signer=alice] — pause check fires before denylist check"); + let result = context + .alice + .call(context.sweat.id(), "storage_unregister") + .args_json(json!({ "force": true })) + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result(); + assert!(result.has_panic("Method is paused")); + info!("storage_unregister: {result:?}"); + info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting feature not paused, should succeed"); context .oracle() From 9255cb6f2b00d553ec50f3c5c8cfc6ec1f0a2613 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 17:44:39 +0100 Subject: [PATCH 31/46] feat: emit burn event on forced storage_unregister --- contract/src/storage.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/contract/src/storage.rs b/contract/src/storage.rs index 1e8b461..639e549 100644 --- a/contract/src/storage.rs +++ b/contract/src/storage.rs @@ -1,4 +1,7 @@ -use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}; +use near_contract_standards::{ + fungible_token::events::FtBurn, + storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, +}; use near_plugins::{pause, Pausable}; use near_sdk::{env, near, AccountId, NearToken}; @@ -21,7 +24,17 @@ impl StorageManagement for Contract { fn storage_unregister(&mut self, force: Option) -> bool { self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); - self.token.internal_storage_unregister(force).is_some() + self.token + .internal_storage_unregister(force) + .inspect(|(account_id, balance)| { + FtBurn { + owner_id: &account_id, + amount: (*balance).into(), + memo: None, + } + .emit(); + }) + .is_some() } fn storage_balance_bounds(&self) -> StorageBalanceBounds { From ce514f6d533ce35a63a5b2a539052057567d290f Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 18:00:22 +0100 Subject: [PATCH 32/46] feat: require one yocto near on burn --- contract/src/lib.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/contract/src/lib.rs b/contract/src/lib.rs index a64cb27..48dccb6 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -5,6 +5,7 @@ use api::{Payout, RestrictionApi, SweatApi}; use near_contract_standards::fungible_token::{events::FtBurn, FungibleToken}; use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ + assert_one_yocto, borsh::BorshDeserialize, collections::UnorderedSet, env, @@ -86,7 +87,9 @@ impl SweatApi for Contract { } #[pause(name = "token")] + #[payable] fn burn(&mut self, amount: U128) { + assert_one_yocto(); self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); @@ -356,6 +359,27 @@ mod tests { assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); } + #[test] + #[should_panic(expected = r#"Requires attached deposit of exactly 1 yoctoNEAR"#)] + fn burn_without_deposit() { + testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); + let mut token = Contract::new( + Some(".u.sweat".to_string()), + sweat_holding(), + sweat_the_token(), + vec![], + vec![], + vec![], + vec![], + ); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); + mint(&mut token, &user1(), 9499999991723028480); + testing_env!(get_context(sweat_the_token(), user1()) + .attached_deposit(NearToken::from_yoctonear(0)) + .build()); + token.burn(U128(9499999991723028480)); + } + #[test] #[should_panic(expected = r#"The account sweat_user2 is not registered"#)] fn transfer_to_unregistered() { From 73edfc4a7729ca1d4b5757b7a3a9fd30d7365429 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 18:41:53 +0100 Subject: [PATCH 33/46] feat: add event on restriction change --- contract/src/event.rs | 83 +++++++++++++++++++++++++++++++++++++++++++ contract/src/lib.rs | 8 +++++ 2 files changed, 91 insertions(+) create mode 100644 contract/src/event.rs diff --git a/contract/src/event.rs b/contract/src/event.rs new file mode 100644 index 0000000..ecbf91a --- /dev/null +++ b/contract/src/event.rs @@ -0,0 +1,83 @@ +//! SWEAT-specific contract events. +//! +//! These events follow the [events format (nep-297)] but, unlike the fungible +//! token events in `near-contract-standards`, they do not correspond to a NEP +//! standard. They are emitted under the project-specific `sweat` standard +//! namespace. +//! +//! [events format (nep-297)]: https://github.com/near/NEPs/blob/master/specs/Standards/EventsFormat.md +//! +//! To add a new event, add a variant to [`Event`]. Serde maps the variant name +//! (snake_cased) to the `event` field and its body to `data`; [`Event::emit`] +//! wraps it in the `standard`/`version` envelope and logs it. + +use near_sdk::{env, serde::Serialize, serde_json, AccountIdRef}; + +const STANDARD: &str = "sweat"; +const VERSION: &str = "1.0.0"; + +/// A SWEAT contract event. The variant name (snake_cased) becomes the NEP-297 +/// `event` discriminator and its fields the `data` payload. +#[must_use = "don't forget to `.emit()` this event"] +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +#[serde(tag = "event", content = "data", rename_all = "snake_case")] +pub enum Event<'a> { + /// Logged when an account is added to or removed from the denylist. + RestrictionChanged { + account_id: &'a AccountIdRef, + /// The account's new restriction status: `true` if it was added to the + /// denylist, `false` if it was removed. + is_restricted: bool, + }, +} + +impl Event<'_> { + /// Emits the event through [`env::log_str`](near_sdk::env::log_str). This is + /// required to ensure that the event is triggered and to consume the event. + pub fn emit(self) { + let envelope = Envelope { standard: STANDARD, version: VERSION, event: self }; + + // Events cannot fail to serialize so fine to panic on error + #[allow(clippy::redundant_closure)] + let json = serde_json::to_string(&envelope).ok().unwrap_or_else(|| env::abort()); + env::log_str(&format!("EVENT_JSON:{json}")); + } +} + +/// The NEP-297 envelope. The flattened [`Event`] contributes the `event` and +/// `data` fields next to `standard` and `version`. +#[derive(Serialize, Debug)] +#[serde(crate = "near_sdk::serde")] +struct Envelope<'a> { + standard: &'static str, + version: &'static str, + #[serde(flatten)] + event: Event<'a>, +} + +#[cfg(test)] +mod tests { + use super::*; + use near_sdk::{test_utils, AccountIdRef}; + + #[test] + fn restriction_added() { + let account_id = AccountIdRef::new_or_panic("bob"); + Event::RestrictionChanged { account_id, is_restricted: true }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":true}}"# + ); + } + + #[test] + fn restriction_removed() { + let account_id = AccountIdRef::new_or_panic("bob"); + Event::RestrictionChanged { account_id, is_restricted: false }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":false}}"# + ); + } +} diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 48dccb6..8632807 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -2,6 +2,7 @@ extern crate static_assertions; use api::{Payout, RestrictionApi, SweatApi}; +use event::Event; use near_contract_standards::fungible_token::{events::FtBurn, FungibleToken}; use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; use near_sdk::{ @@ -18,6 +19,7 @@ use near_sdk::{ pub mod api; mod core; mod defer; +mod event; mod integration; mod math; mod meta; @@ -124,6 +126,12 @@ impl RestrictionApi for Contract { } else { self.denylist.remove(account_id); } + + Event::RestrictionChanged { + account_id, + is_restricted, + } + .emit(); } } From 17fbb1e269667008bf287c2c0cfa386f553b646e Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 18:56:38 +0100 Subject: [PATCH 34/46] fix: proper structure in migration --- contract/src/migration.rs | 20 +++++++++++++++---- integration-tests/tests/migration.rs | 28 ++++++++++++++++++++++++++- res/sweat_old.wasm | Bin 204943 -> 221704 bytes 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/contract/src/migration.rs b/contract/src/migration.rs index df1302f..3818541 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -3,11 +3,18 @@ use near_sdk::{collections::UnorderedSet, env, json_types::U64, near, AccountId} use crate::{Contract, ContractExt}; +/// State layout of the currently deployed contract (pre-ACL, with denylist). +/// +/// Borsh deserializes fields in declaration order, so this must mirror the +/// deployed struct exactly — including `denylist`, which the live contract +/// already stores. Omitting it leaves trailing bytes in the state blob and +/// makes `state_read` panic with "Cannot deserialize the contract state". #[near(serializers = [borsh])] struct OldContract { oracles: UnorderedSet, token: FungibleToken, steps_since_tge: U64, + denylist: UnorderedSet, } #[near] @@ -23,16 +30,21 @@ impl Contract { ) -> Self { let mut old: OldContract = env::state_read().expect("failed to read old contract state"); + // Drain the legacy oracle set into the ACL Oracle role, then reclaim its + // storage. Read it out before moving the other fields into the new struct. + let oracle_account_ids: Vec = old.oracles.iter().collect(); + old.oracles.clear(); + let mut contract = Self { token: old.token, steps_since_tge: old.steps_since_tge, - denylist: UnorderedSet::new(b"d"), + // Carry the existing denylist over untouched. It already uses the + // `b"d"` prefix, matching the new contract, so the stored entries + // remain addressable without rewriting storage. + denylist: old.denylist, holding_account_id, }; - let oracle_account_ids: Vec = old.oracles.iter().collect(); - old.oracles.clear(); - contract.init_acl( super_admin_account_id, oracle_account_ids, diff --git a/integration-tests/tests/migration.rs b/integration-tests/tests/migration.rs index 08fd8b6..5cb4fb4 100644 --- a/integration-tests/tests/migration.rs +++ b/integration-tests/tests/migration.rs @@ -37,7 +37,7 @@ async fn create_user(root: &Account, name: &str) -> anyhow::Result { #[tokio::test] #[tracing::instrument] -async fn migration_from_pre_acl_release() -> anyhow::Result<()> { +async fn migration_from_deployed_release() -> anyhow::Result<()> { init_tracing(); info!("booting sandbox"); @@ -58,6 +58,7 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { let oracle1 = create_user(&root, "oracle1").await?; let oracle2 = create_user(&root, "oracle2").await?; let alice = create_user(&root, "alice").await?; + let denied = create_user(&root, "denied").await?; let admin = create_user(&root, "admin").await?; let denylist_manager = create_user(&root, "denylist-manager").await?; let pause_manager = create_user(&root, "pause-manager").await?; @@ -73,6 +74,14 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { .into_result()?; } + info!("denylisting an account on the old contract"); + contract + .call("set_restricted") + .args_json(json!({ "account_id": denied.id(), "is_restricted": true })) + .transact() + .await? + .into_result()?; + info!("recording a batch on the old contract"); oracle1 .call(contract.id(), "record_batch") @@ -84,6 +93,12 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { let oracles_before: Vec = contract.view("get_oracles").await?.json()?; assert_eq!(oracles_before.len(), 2, "old contract should have 2 oracles"); + let denied_restricted_before: bool = contract + .view("is_restricted") + .args_json(json!({ "account_id": denied.id() })) + .await? + .json()?; + assert!(denied_restricted_before, "denied account should be restricted before migration"); let steps_before: String = contract.view("get_steps_since_tge").await?.json()?; let alice_balance_before: String = contract .view("ft_balance_of") @@ -153,6 +168,17 @@ async fn migration_from_pre_acl_release() -> anyhow::Result<()> { assert!(has_role, "{} should hold the Oracle role", oracle.id()); } + info!("verifying the denylist survived the migration"); + let denied_restricted_after: bool = contract + .view("is_restricted") + .args_json(json!({ "account_id": denied.id() })) + .await? + .json()?; + assert!( + denied_restricted_after, + "denylisted account must stay restricted after migration" + ); + info!("verifying token state survived"); let steps_after: String = contract.view("get_steps_since_tge").await?.json()?; assert_eq!(steps_after, steps_before, "steps counter must be preserved"); diff --git a/res/sweat_old.wasm b/res/sweat_old.wasm index 8b9464de8297707345a0b5a7d8f41570c6a43569..5f852d4434d79cafe46a8c9cbe75ddcbead14bdc 100644 GIT binary patch literal 221704 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

)}QI76$@@U%jVk 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

p;eG`#pVIy9X-v%WhsZ^Vi*XHj|9 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

VO?t( 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%0A7l({K_M$h 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 From afd398e6e092ab4fbff6d14162b9d0529bc2c6cf Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 3 Jun 2026 19:28:13 +0100 Subject: [PATCH 35/46] refactor: remove outdated hasher in token collection --- contract/src/api.rs | 1 - contract/src/lib.rs | 123 ++---------------- contract/src/migration.rs | 41 +++++- integration-tests/tests/common/prepare.rs | 2 - integration-tests/tests/restriction.rs | 1 + .../src/fungible_token/core_impl.rs | 58 ++++++--- 6 files changed, 85 insertions(+), 141 deletions(-) diff --git a/contract/src/api.rs b/contract/src/api.rs index 50953ce..3151bfe 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -5,7 +5,6 @@ use near_sdk::{ pub trait SweatApi { fn new( - postfix: Option, holding_account_id: AccountId, super_admin_account_id: AccountId, oracle_account_ids: Vec, diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 8632807..b544f3d 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -53,7 +53,6 @@ pub struct Contract { impl SweatApi for Contract { #[init] fn new( - postfix: Option, holding_account_id: AccountId, super_admin_account_id: AccountId, oracle_account_ids: Vec, @@ -62,7 +61,7 @@ impl SweatApi for Contract { unpause_manager_account_ids: Vec, ) -> Self { let mut contract = Self { - token: FungibleToken::new(b"t", postfix), + token: FungibleToken::new(b"t"), steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), holding_account_id, @@ -238,15 +237,7 @@ mod tests { #[test] fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); assert_eq!(vec![sweat_oracle()], get_oracles(&token)); @@ -257,15 +248,7 @@ mod tests { #[test] fn oracle_fee_test() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert_eq!(U64(0), token.get_steps_since_tge()); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); @@ -298,15 +281,7 @@ mod tests { #[test] fn defer_batch_skips_denylisted_user() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); @@ -325,15 +300,7 @@ mod tests { #[test] fn defer_batch_skips_all_denylisted_users() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); token.acl_grant_role(Role::DenylistManager.into(), sweat_the_token()); @@ -350,15 +317,7 @@ mod tests { #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -371,15 +330,7 @@ mod tests { #[should_panic(expected = r#"Requires attached deposit of exactly 1 yoctoNEAR"#)] fn burn_without_deposit() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); testing_env!(get_context(sweat_the_token(), user1()) @@ -392,15 +343,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is not registered"#)] fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -416,15 +359,7 @@ mod tests { #[test] fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -442,15 +377,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn transfer_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -466,15 +393,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn transfer_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -490,15 +409,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user1 is restricted"#)] fn ft_transfer_call_from_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); @@ -514,15 +425,7 @@ mod tests { #[should_panic(expected = r#"The account sweat_user2 is restricted"#)] fn ft_transfer_call_to_denied_account() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); - let mut token = Contract::new( - Some(".u.sweat".to_string()), - sweat_holding(), - sweat_the_token(), - vec![], - vec![], - vec![], - vec![], - ); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); assert!(get_oracles(&token).is_empty()); token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); mint(&mut token, &user1(), 9499999991723028480); diff --git a/contract/src/migration.rs b/contract/src/migration.rs index 3818541..24d9a1b 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -1,5 +1,10 @@ -use near_contract_standards::fungible_token::FungibleToken; -use near_sdk::{collections::UnorderedSet, env, json_types::U64, near, AccountId}; +use near_contract_standards::fungible_token::{Balance, FungibleToken}; +use near_sdk::{ + collections::{LookupMap, UnorderedSet}, + env, + json_types::U64, + near, AccountId, StorageUsage, +}; use crate::{Contract, ContractExt}; @@ -12,11 +17,36 @@ use crate::{Contract, ContractExt}; #[near(serializers = [borsh])] struct OldContract { oracles: UnorderedSet, - token: FungibleToken, + token: OldFungibleToken, steps_since_tge: U64, denylist: UnorderedSet, } +/// Legacy `FungibleToken` layout from the deployed contract. +/// +/// The current token's `accounts` adapter dropped a `skip_hashing_postfix: +/// Option` field, which still sits in the deployed state blob between +/// the map prefix and `total_supply`. The new struct would mis-deserialize +/// those bytes, so the old state is read through this mirror first. Only the +/// scalar tallies are reused; the account entries stay in place on the trie +/// (their keys are unchanged) and remain addressable by the rebuilt token. +#[near(serializers = [borsh])] +#[allow(dead_code)] +struct OldFungibleToken { + accounts: OldLookupMapAdapter, + total_supply: Balance, + account_storage_usage: StorageUsage, +} + +#[near(serializers = [borsh])] +#[allow(dead_code)] // fields exist only to consume the legacy borsh layout +struct OldLookupMapAdapter { + // `LookupMap` persists nothing but its key prefix, so the key type here is + // irrelevant for deserialization — it only needs to satisfy borsh bounds. + inner: LookupMap<[u8; 32], Balance>, + skip_hashing_postfix: Option, +} + #[near] impl Contract { #[private] @@ -36,11 +66,8 @@ impl Contract { old.oracles.clear(); let mut contract = Self { - token: old.token, + token: FungibleToken::from_prefix(b"t", old.token.total_supply, old.token.account_storage_usage), steps_since_tge: old.steps_since_tge, - // Carry the existing denylist over untouched. It already uses the - // `b"d"` prefix, matching the new contract, so the stored entries - // remain addressable without rewriting storage. denylist: old.denylist, holding_account_id, }; diff --git a/integration-tests/tests/common/prepare.rs b/integration-tests/tests/common/prepare.rs index eb37d74..d50f607 100644 --- a/integration-tests/tests/common/prepare.rs +++ b/integration-tests/tests/common/prepare.rs @@ -8,7 +8,6 @@ use tracing::info; use super::helpers::init_tracing; use super::storage::{storage_balance_min, storage_deposit}; -const FT_POSTFIX: &str = ".u.sweat.testnet"; const INITIAL_USER_BALANCE: NearToken = NearToken::from_near(10); const SWEAT_WASM_ENV: &str = "SWEAT_WASM"; @@ -125,7 +124,6 @@ impl ContextBuilder { sweat .call("new") .args_json(json!({ - "postfix": FT_POSTFIX, "holding_account_id": holding_account_id, "super_admin_account_id": sweat.id(), "oracle_account_ids": [], diff --git a/integration-tests/tests/restriction.rs b/integration-tests/tests/restriction.rs index 552c1b2..29023ee 100644 --- a/integration-tests/tests/restriction.rs +++ b/integration-tests/tests/restriction.rs @@ -112,6 +112,7 @@ async fn test_restricted_cannot_burn() -> anyhow::Result<()> { .alice .call(context.sweat.id(), "burn") .args_json(json!({ "amount": "1000000000000000000" })) + .deposit(NearToken::from_yoctonear(1)) .transact() .await? .into_result(); diff --git a/vendors/near-contract-standards/src/fungible_token/core_impl.rs b/vendors/near-contract-standards/src/fungible_token/core_impl.rs index 14f0d56..ee8279c 100644 --- a/vendors/near-contract-standards/src/fungible_token/core_impl.rs +++ b/vendors/near-contract-standards/src/fungible_token/core_impl.rs @@ -27,7 +27,7 @@ pub type Balance = u128; /// For example usage, see examples/fungible-token/src/lib.rs. #[near] pub struct FungibleToken { - /// sha256(AccountId) | AccountId -> Account balance + /// sha256(AccountId) -> Account balance pub accounts: LookupMapAdapter, /// Total supply of the all token. @@ -37,25 +37,32 @@ pub struct FungibleToken { pub account_storage_usage: StorageUsage, } +/// Storage key wrapper for an account balance. +/// +/// Kept as an enum so the stored key retains its leading borsh discriminant +/// byte (`Hash` => `0x00`). Existing balances are keyed by `0x00 ‖ sha256` on +/// the trie; collapsing this into a bare `[u8; 32]` would drop that byte and +/// orphan every entry, which can't be re-keyed cheaply (the map isn't +/// enumerable). The historical `AccountId` variant has been removed — no +/// account was ever stored unhashed — and removing it leaves `Hash` at +/// discriminant `0`, so the encoding is unchanged. #[near] pub enum LookupMapKey { Hash([u8; 32]), - AccountId(String), } #[near] pub struct LookupMapAdapter { inner: LookupMap, - skip_hashing_postfix: Option, } impl FungibleToken { - pub fn new(prefix: S, skip_hashing_postfix: Option) -> Self + pub fn new(prefix: S) -> Self where S: IntoStorageKey, { let mut this = Self { - accounts: LookupMapAdapter::new(prefix, skip_hashing_postfix), + accounts: LookupMapAdapter::new(prefix), total_supply: 0, account_storage_usage: 0, }; @@ -63,6 +70,23 @@ impl FungibleToken { this } + /// Reconstructs the token over already-populated `accounts` storage during a + /// state migration. Unlike [`FungibleToken::new`], it adopts `prefix` + /// without re-measuring per-account storage — measurement transiently writes + /// a probe key and would clobber a live account on a populated map — so the + /// recorded `total_supply` and `account_storage_usage` are carried over from + /// the previous state instead. + pub fn from_prefix( + prefix: S, + total_supply: Balance, + account_storage_usage: StorageUsage, + ) -> Self + where + S: IntoStorageKey, + { + Self { accounts: LookupMapAdapter::new(prefix), total_supply, account_storage_usage } + } + fn measure_account_storage_usage(&mut self) { let initial_storage_usage = env::storage_usage(); let tmp_account_id = "a".repeat(64).parse().unwrap(); @@ -260,36 +284,28 @@ impl FungibleTokenResolver for FungibleToken { } impl LookupMapAdapter { - fn new(prefix: S, skip_hashing_postfix: Option) -> LookupMapAdapter { - Self { inner: LookupMap::new(prefix), skip_hashing_postfix } + fn new(prefix: S) -> LookupMapAdapter { + Self { inner: LookupMap::new(prefix) } } - fn hash_key(&self, account: &AccountId) -> LookupMapKey { - if let Some(postfix) = &self.skip_hashing_postfix { - if account.as_str().ends_with(postfix) { - LookupMapKey::AccountId(account.to_string()) - } else { - LookupMapKey::Hash(env::sha256_array(account.as_bytes())) - } - } else { - LookupMapKey::Hash(env::sha256_array(account.as_bytes())) - } + fn hash_key(account: &AccountId) -> LookupMapKey { + LookupMapKey::Hash(env::sha256_array(account.as_bytes())) } pub fn get(&self, key: &AccountId) -> Option { - self.inner.get(&Self::hash_key(self, key)) + self.inner.get(&Self::hash_key(key)) } pub fn remove(&mut self, key: &AccountId) -> Option { - self.inner.remove(&Self::hash_key(self, key)) + self.inner.remove(&Self::hash_key(key)) } pub fn insert(&mut self, key: &AccountId, value: &Balance) -> Option { - self.inner.insert(&Self::hash_key(self, key), value) + self.inner.insert(&Self::hash_key(key), value) } /// Returns true if the map contains a given key. pub fn contains_key(&self, key: &AccountId) -> bool { - self.inner.contains_key(&Self::hash_key(self, key)) + self.inner.contains_key(&Self::hash_key(key)) } } From 3a6a0bf77f34f4ed9a56d660fb98ee2c4f40d0bd Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Fri, 5 Jun 2026 19:02:07 +0100 Subject: [PATCH 36/46] feat: pause simplified --- contract/src/api.rs | 14 ++ contract/src/core.rs | 7 +- contract/src/defer.rs | 6 +- contract/src/event.rs | 27 +++ contract/src/lib.rs | 14 +- contract/src/migration.rs | 1 + contract/src/pause.rs | 257 ++++++++++++++++++++++ contract/src/storage.rs | 7 +- integration-tests/tests/access_control.rs | 44 ++-- integration-tests/tests/pause.rs | 90 ++++---- 10 files changed, 384 insertions(+), 83 deletions(-) create mode 100644 contract/src/pause.rs diff --git a/contract/src/api.rs b/contract/src/api.rs index 3151bfe..8d6b385 100644 --- a/contract/src/api.rs +++ b/contract/src/api.rs @@ -3,6 +3,8 @@ use near_sdk::{ AccountId, PromiseOrValue, }; +use crate::pause::Feature; + pub trait SweatApi { fn new( holding_account_id: AccountId, @@ -27,6 +29,18 @@ pub trait RestrictionApi { fn set_restricted(&mut self, account_id: &AccountId, is_restricted: bool); } +/// Per-feature pause controls. See the [`crate::pause`] module. +pub trait PauseApi { + /// Pauses each of `features`. Requires the `PauseManager` role. Returns + /// whether the paused set changed. + fn pause_features(&mut self, features: Vec) -> bool; + /// Unpauses each of `features`. Requires the `UnpauseManager` role. Returns + /// whether the paused set changed. + fn unpause_features(&mut self, features: Vec) -> bool; + fn is_feature_paused(&self, feature: Feature) -> bool; + fn get_paused_features(&self) -> Vec; +} + /// Token-minting API. /// /// Implementations mint user rewards to the configured holding account rather diff --git a/contract/src/core.rs b/contract/src/core.rs index aff3e37..d9b1b7e 100644 --- a/contract/src/core.rs +++ b/contract/src/core.rs @@ -1,21 +1,19 @@ use near_contract_standards::fungible_token::{core::FungibleTokenCore, resolver::FungibleTokenResolver, Balance}; -use near_plugins::{pause, Pausable}; use near_sdk::{env, json_types::U128, near, AccountId, PromiseOrValue}; -use crate::{Contract, ContractExt}; +use crate::{Contract, ContractExt, Feature}; #[near] impl FungibleTokenCore for Contract { #[payable] - #[pause(name = "token")] fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) { + self.assert_feature_enabled(Feature::Token); self.assert_not_in_denylist(vec![&env::predecessor_account_id(), &receiver_id]); self.token.ft_transfer(receiver_id, amount, memo); } #[payable] - #[pause(name = "token")] fn ft_transfer_call( &mut self, receiver_id: AccountId, @@ -23,6 +21,7 @@ impl FungibleTokenCore for Contract { memo: Option, msg: String, ) -> PromiseOrValue { + self.assert_feature_enabled(Feature::Token); self.assert_not_in_denylist(vec![&env::predecessor_account_id(), &receiver_id]); self.token.ft_transfer_call(receiver_id, amount, memo, msg) diff --git a/contract/src/defer.rs b/contract/src/defer.rs index f305cc9..7ca6917 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -78,9 +78,9 @@ use near_sdk::{ use crate::{ api::{RestrictionApi, SweatDefer}, core::InternalDeposit, - Contract, ContractExt, Role, + Contract, ContractExt, Feature, Role, }; -use near_plugins::{access_control_any, pause, AccessControllable, Pausable}; +use near_plugins::{access_control_any, AccessControllable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); @@ -88,8 +88,8 @@ const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); #[near] impl SweatDefer for Contract { #[access_control_any(roles(Role::Oracle))] - #[pause(name = "minting")] fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()> { + self.assert_feature_enabled(Feature::Minting); require!( env::prepaid_gas() > GAS_FOR_DEFER, "Not enough gas to complete the operation" diff --git a/contract/src/event.rs b/contract/src/event.rs index ecbf91a..a69139b 100644 --- a/contract/src/event.rs +++ b/contract/src/event.rs @@ -13,6 +13,8 @@ use near_sdk::{env, serde::Serialize, serde_json, AccountIdRef}; +use crate::Feature; + const STANDARD: &str = "sweat"; const VERSION: &str = "1.0.0"; @@ -30,6 +32,13 @@ pub enum Event<'a> { /// denylist, `false` if it was removed. is_restricted: bool, }, + /// Logged when a [`Feature`] is paused or unpaused. + FeaturePauseChanged { + feature: Feature, + /// The feature's new state: `true` if it was paused, `false` if it was + /// unpaused. + paused: bool, + }, } impl Event<'_> { @@ -80,4 +89,22 @@ mod tests { r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":false}}"# ); } + + #[test] + fn feature_paused() { + Event::FeaturePauseChanged { feature: Feature::Token, paused: true }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"feature_pause_changed","data":{"feature":"token","paused":true}}"# + ); + } + + #[test] + fn feature_unpaused() { + Event::FeaturePauseChanged { feature: Feature::Minting, paused: false }.emit(); + assert_eq!( + test_utils::get_logs()[0], + r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"feature_pause_changed","data":{"feature":"minting","paused":false}}"# + ); + } } diff --git a/contract/src/lib.rs b/contract/src/lib.rs index b544f3d..03f58da 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -4,10 +4,9 @@ extern crate static_assertions; use api::{Payout, RestrictionApi, SweatApi}; use event::Event; use near_contract_standards::fungible_token::{events::FtBurn, FungibleToken}; -use near_plugins::{access_control, access_control_any, pause, AccessControlRole, AccessControllable, Pausable}; +use near_plugins::{access_control, access_control_any, AccessControlRole, AccessControllable}; use near_sdk::{ assert_one_yocto, - borsh::BorshDeserialize, collections::UnorderedSet, env, json_types::{U128, U64}, @@ -24,8 +23,11 @@ mod integration; mod math; mod meta; mod migration; +mod pause; mod storage; +pub use pause::Feature; + #[derive(AccessControlRole, Deserialize, Serialize, Clone, Copy)] #[serde(crate = "near_sdk::serde")] pub enum Role { @@ -37,8 +39,7 @@ pub enum Role { #[near(contract_state)] #[access_control(role_type(Role))] -#[derive(Pausable, PanicOnDefault)] -#[pausable(pause_roles(Role::PauseManager), unpause_roles(Role::UnpauseManager))] +#[derive(PanicOnDefault)] pub struct Contract { token: FungibleToken, steps_since_tge: U64, @@ -47,6 +48,8 @@ pub struct Contract { /// minted batch until end users claim their rewards. See the [`defer`] /// module docs for the full claim flow and trust model. holding_account_id: AccountId, + /// Bitmask of paused [`Feature`]s. See the [`pause`] module. + paused_features: u32, } #[near] @@ -65,6 +68,7 @@ impl SweatApi for Contract { steps_since_tge: U64::from(0), denylist: UnorderedSet::new(b"d"), holding_account_id, + paused_features: 0, }; contract.init_acl( @@ -87,9 +91,9 @@ impl SweatApi for Contract { self.holding_account_id.clone() } - #[pause(name = "token")] #[payable] fn burn(&mut self, amount: U128) { + self.assert_feature_enabled(Feature::Token); assert_one_yocto(); self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); diff --git a/contract/src/migration.rs b/contract/src/migration.rs index 24d9a1b..6507bd2 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -70,6 +70,7 @@ impl Contract { steps_since_tge: old.steps_since_tge, denylist: old.denylist, holding_account_id, + paused_features: 0, }; contract.init_acl( diff --git a/contract/src/pause.rs b/contract/src/pause.rs new file mode 100644 index 0000000..97b28b9 --- /dev/null +++ b/contract/src/pause.rs @@ -0,0 +1,257 @@ +//! Home-made per-feature pause mechanism. +//! +//! Paused features are stored as a bitmask on [`Contract::paused_features`]. +//! Each [`Feature`] owns one bit (see [`Feature::bit`]). Pausing a feature ORs +//! its bit in; unpausing clears it. Guarded methods call +//! [`Contract::assert_feature_enabled`] as their first statement so the pause +//! check fires before any other validation. +//! +//! Pause/unpause are gated by the [`crate::Role::PauseManager`] / +//! [`crate::Role::UnpauseManager`] ACL roles and emit a +//! [`Event::FeaturePauseChanged`] for every feature whose state actually +//! changes. + +use near_plugins::{access_control_any, AccessControllable}; +use near_sdk::{near, require}; + +use crate::{api::PauseApi, event::Event, Contract, ContractExt, Role}; + +/// A contract feature that can be independently paused. +/// +/// Serialized in snake_case so call args read e.g. +/// `{"features": ["token", "minting"]}`. +#[near(serializers = [json])] +#[derive(Clone, Copy, PartialEq, Eq, Debug)] +#[serde(rename_all = "snake_case")] +pub enum Feature { + /// Token movement: `ft_transfer`, `ft_transfer_call`, `burn`, + /// `storage_unregister`. + Token, + /// Reward minting: `defer_batch`. + Minting, +} + +impl Feature { + /// Every feature, used to enumerate the bitmask for view methods. + const ALL: [Feature; 2] = [Feature::Token, Feature::Minting]; + + /// The single bit this feature occupies in [`Contract::paused_features`]. + const fn bit(self) -> u32 { + match self { + Feature::Token => 1 << 0, + Feature::Minting => 1 << 1, + } + } + + /// Human-readable name used in the paused panic message. + const fn name(self) -> &'static str { + match self { + Feature::Token => "token", + Feature::Minting => "minting", + } + } +} + +#[near] +impl PauseApi for Contract { + #[access_control_any(roles(Role::PauseManager))] + fn pause_features(&mut self, features: Vec) -> bool { + self.set_features_paused(features, true) + } + + #[access_control_any(roles(Role::UnpauseManager))] + fn unpause_features(&mut self, features: Vec) -> bool { + self.set_features_paused(features, false) + } + + fn is_feature_paused(&self, feature: Feature) -> bool { + self.paused_features & feature.bit() != 0 + } + + fn get_paused_features(&self) -> Vec { + Feature::ALL + .into_iter() + .filter(|feature| self.is_feature_paused(*feature)) + .collect() + } +} + +impl Contract { + /// Panics if `feature` is currently paused. Call this as the first statement + /// of any guarded method so it fires before other checks. + pub(crate) fn assert_feature_enabled(&self, feature: Feature) { + require!( + self.paused_features & feature.bit() == 0, + // Single quotes (not double) so the message survives debug-escaped + // substring matching in the integration tests' `has_panic`. + format!("Feature '{}' is paused", feature.name()) + ); + } + + /// Sets the paused bit of each feature to `paused`, emitting a + /// [`Event::FeaturePauseChanged`] only for features whose state actually + /// changed. Returns whether the mask changed at all. + fn set_features_paused(&mut self, features: Vec, paused: bool) -> bool { + let before = self.paused_features; + + for feature in features { + let already = self.is_feature_paused(feature); + if already == paused { + continue; + } + + if paused { + self.paused_features |= feature.bit(); + } else { + self.paused_features &= !feature.bit(); + } + + Event::FeaturePauseChanged { feature, paused }.emit(); + } + + self.paused_features != before + } +} + +#[cfg(test)] +mod tests { + use std::str::FromStr; + + use near_contract_standards::fungible_token::core::FungibleTokenCore; + use near_plugins::AccessControllable; + use near_sdk::{ + json_types::U128, test_utils::VMContextBuilder, testing_env, AccountId, NearToken, + }; + + use crate::{ + api::{PauseApi, SweatApi}, + core::InternalDeposit, + pause::Feature, + Contract, Role, + }; + + fn account_id(account_id: &str) -> AccountId { + AccountId::from_str(account_id).unwrap() + } + + fn token() -> AccountId { + account_id("sweat_the_token") + } + fn holding() -> AccountId { + account_id("sweat_the_holding") + } + fn user1() -> AccountId { + account_id("sweat_user1") + } + fn user2() -> AccountId { + account_id("sweat_user2") + } + + fn get_context(sender: AccountId) -> VMContextBuilder { + let mut builder = VMContextBuilder::new(); + builder + .current_account_id(token()) + .signer_account_id(sender.clone()) + .predecessor_account_id(sender) + .attached_deposit(NearToken::from_yoctonear(1)); + builder + } + + /// super-admin is `token()`, which can pause/unpause via ACL. + fn setup() -> Contract { + testing_env!(get_context(token()).build()); + let mut contract = Contract::new(holding(), token(), vec![], vec![], vec![], vec![]); + contract.acl_grant_role(Role::PauseManager.into(), token()); + contract.acl_grant_role(Role::UnpauseManager.into(), token()); + contract + } + + #[test] + fn pause_then_unpause_round_trip() { + let mut contract = setup(); + + assert!(contract.get_paused_features().is_empty()); + + assert!(contract.pause_features(vec![Feature::Token])); + assert!(contract.is_feature_paused(Feature::Token)); + assert!(!contract.is_feature_paused(Feature::Minting)); + assert_eq!(contract.get_paused_features(), vec![Feature::Token]); + + assert!(contract.unpause_features(vec![Feature::Token])); + assert!(!contract.is_feature_paused(Feature::Token)); + assert!(contract.get_paused_features().is_empty()); + } + + #[test] + fn pause_is_idempotent() { + let mut contract = setup(); + + assert!(contract.pause_features(vec![Feature::Token])); + // Already paused -> mask unchanged. + assert!(!contract.pause_features(vec![Feature::Token])); + + assert!(contract.unpause_features(vec![Feature::Token])); + // Already unpaused -> mask unchanged. + assert!(!contract.unpause_features(vec![Feature::Token])); + } + + #[test] + fn pause_multiple_features_at_once() { + let mut contract = setup(); + + assert!(contract.pause_features(vec![Feature::Token, Feature::Minting])); + assert!(contract.is_feature_paused(Feature::Token)); + assert!(contract.is_feature_paused(Feature::Minting)); + + // One already paused, one not -> still a change. + assert!(contract.unpause_features(vec![Feature::Token])); + assert!(contract.unpause_features(vec![Feature::Token, Feature::Minting])); + assert!(contract.get_paused_features().is_empty()); + } + + #[test] + #[should_panic(expected = "Feature 'token' is paused")] + fn ft_transfer_blocked_when_token_paused() { + let mut contract = setup(); + contract.internal_deposit(&user1(), 9_000_000_000_000_000_000); + contract.pause_features(vec![Feature::Token]); + + testing_env!(get_context(user1()).build()); + contract.ft_transfer(user2(), U128(1), None); + } + + #[test] + #[should_panic(expected = "Feature 'token' is paused")] + fn burn_blocked_when_token_paused() { + let mut contract = setup(); + contract.internal_deposit(&user1(), 9_000_000_000_000_000_000); + contract.pause_features(vec![Feature::Token]); + + testing_env!(get_context(user1()).build()); + contract.burn(U128(1)); + } + + #[test] + fn ft_transfer_works_after_unpause() { + let mut contract = setup(); + contract.internal_deposit(&user1(), 9_000_000_000_000_000_000); + contract.internal_deposit(&user2(), 9_000_000_000_000_000_000); + + contract.pause_features(vec![Feature::Token]); + contract.unpause_features(vec![Feature::Token]); + + testing_env!(get_context(user1()).build()); + contract.ft_transfer(user2(), U128(1), None); + assert_eq!(contract.ft_balance_of(user2()).0, 9_000_000_000_000_000_001); + } + + #[test] + #[should_panic(expected = "Insufficient permissions for method pause_features")] + fn pause_requires_role() { + testing_env!(get_context(token()).build()); + let mut contract = Contract::new(holding(), token(), vec![], vec![], vec![], vec![]); + + testing_env!(get_context(user1()).build()); + contract.pause_features(vec![Feature::Token]); + } +} diff --git a/contract/src/storage.rs b/contract/src/storage.rs index 639e549..0e22a61 100644 --- a/contract/src/storage.rs +++ b/contract/src/storage.rs @@ -2,10 +2,9 @@ use near_contract_standards::{ fungible_token::events::FtBurn, storage_management::{StorageBalance, StorageBalanceBounds, StorageManagement}, }; -use near_plugins::{pause, Pausable}; use near_sdk::{env, near, AccountId, NearToken}; -use crate::{Contract, ContractExt}; +use crate::{Contract, ContractExt, Feature}; #[near] impl StorageManagement for Contract { @@ -20,15 +19,15 @@ impl StorageManagement for Contract { } #[payable] - #[pause(name = "token")] fn storage_unregister(&mut self, force: Option) -> bool { + self.assert_feature_enabled(Feature::Token); self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); self.token .internal_storage_unregister(force) .inspect(|(account_id, balance)| { FtBurn { - owner_id: &account_id, + owner_id: account_id, amount: (*balance).into(), memo: None, } diff --git a/integration-tests/tests/access_control.rs b/integration-tests/tests/access_control.rs index 09161c7..d7f5a7d 100644 --- a/integration-tests/tests/access_control.rs +++ b/integration-tests/tests/access_control.rs @@ -177,16 +177,16 @@ async fn test_acl_set_restricted() -> anyhow::Result<()> { async fn test_acl_pause_feature() -> anyhow::Result<()> { let context = Context::builder().build().await?; - info!("call pa_pause_feature(ALL) [signer=alice, unauthorized]"); + info!("call pause_features(ALL) [signer=alice, unauthorized]"); let result = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .into_result(); - assert!(result.has_panic("Insufficient permissions for method pa_pause_feature restricted by access control.")); - info!("pa_pause_feature: {result:?}"); + assert!(result.has_panic("Insufficient permissions for method pause_features restricted by access control.")); + info!("pause_features: {result:?}"); info!("call acl_grant_role(PauseManager, alice) [signer=contract, super-admin]"); let granted: Option = context @@ -202,16 +202,16 @@ async fn test_acl_pause_feature() -> anyhow::Result<()> { assert_eq!(granted, Some(true)); info!("acl_grant_role: {granted:?}"); - info!("call pa_pause_feature(ALL) [signer=alice, authorized]"); + info!("call pause_features(ALL) [signer=alice, authorized]"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); Ok(()) } @@ -221,16 +221,16 @@ async fn test_acl_pause_feature() -> anyhow::Result<()> { async fn test_acl_unpause_feature() -> anyhow::Result<()> { let context = Context::builder().build().await?; - info!("call pa_unpause_feature(ALL) [signer=alice, unauthorized]"); + info!("call unpause_features(ALL) [signer=alice, unauthorized]"); let result = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .into_result(); - assert!(result.has_panic("Insufficient permissions for method pa_unpause_feature restricted by access control.")); - info!("pa_unpause_feature: {result:?}"); + assert!(result.has_panic("Insufficient permissions for method unpause_features restricted by access control.")); + info!("unpause_features: {result:?}"); info!("call acl_grant_role(PauseManager, alice) [signer=contract, super-admin]"); let granted: Option = context @@ -260,27 +260,27 @@ async fn test_acl_unpause_feature() -> anyhow::Result<()> { assert_eq!(granted, Some(true)); info!("acl_grant_role: {granted:?}"); - info!("call pa_pause_feature(ALL) [signer=alice, authorized]"); + info!("call pause_features(ALL) [signer=alice, authorized]"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice, authorized]"); + info!("call unpause_features(ALL) [signer=alice, authorized]"); let is_unpaused: bool = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(is_unpaused); - info!("pa_unpause_feature: {is_unpaused:?}"); + info!("unpause_features: {is_unpaused:?}"); Ok(()) } diff --git a/integration-tests/tests/pause.rs b/integration-tests/tests/pause.rs index 2a6ed34..ebd8d68 100644 --- a/integration-tests/tests/pause.rs +++ b/integration-tests/tests/pause.rs @@ -10,16 +10,16 @@ use common::{panic::PanicFinder, prepare::Context}; async fn test_pause_all() -> anyhow::Result<()> { let context = Context::builder().with_oracle().with_claim().with_bob().build().await?; - info!("call pa_pause_feature(ALL) [signer=alice, unauthorized]"); + info!("call pause_features(ALL) [signer=alice, unauthorized]"); let result = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .into_result(); - assert!(result.has_panic("Insufficient permissions for method pa_pause_feature restricted by access control.")); - info!("pa_pause_feature: {result:?}"); + assert!(result.has_panic("Insufficient permissions for method pause_features restricted by access control.")); + info!("pause_features: {result:?}"); info!("call acl_grant_role(PauseManager, alice) [signer=contract]"); let role_is_granted: bool = context @@ -49,27 +49,27 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(!role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call pa_pause_feature(ALL) [signer=alice]"); + info!("call pause_features(ALL) [signer=alice]"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); - info!("call pa_pause_feature(ALL) [signer=alice] — idempotent"); + info!("call pause_features(ALL) [signer=alice] — idempotent"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(!is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); info!("call ft_transfer(bob, 1000000000000000000) [signer=alice] — pause check fires before balance check"); let result = context @@ -83,7 +83,7 @@ async fn test_pause_all() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'token' is paused")); info!("ft_transfer: {result:?}"); info!("call defer_batch([(alice, 10_000)]) [signer=oracle]"); @@ -95,19 +95,19 @@ async fn test_pause_all() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'minting' is paused")); info!("defer_batch: {result:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice, unauthorized]"); + info!("call unpause_features(ALL) [signer=alice, unauthorized]"); let result = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .into_result(); - assert!(result.has_panic("Insufficient permissions for method pa_unpause_feature restricted by access control.")); - info!("pa_unpause_feature: {result:?}"); + assert!(result.has_panic("Insufficient permissions for method unpause_features restricted by access control.")); + info!("unpause_features: {result:?}"); info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); let role_is_granted: bool = context @@ -123,27 +123,27 @@ async fn test_pause_all() -> anyhow::Result<()> { assert!(role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice]"); + info!("call unpause_features(ALL) [signer=alice]"); let is_unpaused: bool = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(is_unpaused); - info!("pa_unpause_feature: {is_unpaused:?}"); + info!("unpause_features: {is_unpaused:?}"); - info!("call pa_unpause_feature(ALL) [signer=alice] — idempotent"); + info!("call unpause_features(ALL) [signer=alice] — idempotent"); let is_unpaused: bool = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "ALL" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["token", "minting"] })) .transact() .await? .json()?; assert!(!is_unpaused); - info!("pa_unpause_feature: {is_unpaused:?}"); + info!("unpause_features: {is_unpaused:?}"); info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting works after unpause"); context @@ -177,16 +177,16 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call pa_pause_feature(minting) [signer=alice]"); + info!("call pause_features(minting) [signer=alice]"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "minting" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["minting"] })) .transact() .await? .json()?; assert!(is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); info!("call defer_batch([(alice, 10_000)]) [signer=oracle]"); let result = context @@ -197,7 +197,7 @@ async fn test_pause_minting() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'minting' is paused")); info!("defer_batch: {result:?}"); info!("call acl_grant_role(UnpauseManager, alice) [signer=contract]"); @@ -214,16 +214,16 @@ async fn test_pause_minting() -> anyhow::Result<()> { assert!(role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call pa_unpause_feature(minting) [signer=alice]"); + info!("call unpause_features(minting) [signer=alice]"); let is_unpaused: bool = context .alice - .call(context.sweat.id(), "pa_unpause_feature") - .args_json(json!({ "key": "minting" })) + .call(context.sweat.id(), "unpause_features") + .args_json(json!({ "features": ["minting"] })) .transact() .await? .json()?; assert!(is_unpaused); - info!("pa_unpause_feature: {is_unpaused:?}"); + info!("unpause_features: {is_unpaused:?}"); info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting works after unpause"); context @@ -257,16 +257,16 @@ async fn test_pause_token() -> anyhow::Result<()> { assert!(role_is_granted); info!("acl_grant_role: {role_is_granted:?}"); - info!("call pa_pause_feature(token) [signer=alice]"); + info!("call pause_features(token) [signer=alice]"); let is_paused: bool = context .alice - .call(context.sweat.id(), "pa_pause_feature") - .args_json(json!({ "key": "token" })) + .call(context.sweat.id(), "pause_features") + .args_json(json!({ "features": ["token"] })) .transact() .await? .json()?; assert!(is_paused); - info!("pa_pause_feature: {is_paused:?}"); + info!("pause_features: {is_paused:?}"); info!("call ft_transfer(bob, 1000000000000000000) [signer=alice] — pause check fires before balance check"); let result = context @@ -280,7 +280,7 @@ async fn test_pause_token() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'token' is paused")); info!("ft_transfer: {result:?}"); info!("call ft_transfer_call(bob, 1000000000000000000) [signer=alice]"); @@ -297,7 +297,7 @@ async fn test_pause_token() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'token' is paused")); info!("ft_transfer_call: {result:?}"); info!("call burn(1000000000000000000) [signer=alice]"); @@ -308,7 +308,7 @@ async fn test_pause_token() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'token' is paused")); info!("burn: {result:?}"); info!("call storage_unregister(force=true) [signer=alice] — pause check fires before denylist check"); @@ -320,7 +320,7 @@ async fn test_pause_token() -> anyhow::Result<()> { .transact() .await? .into_result(); - assert!(result.has_panic("Method is paused")); + assert!(result.has_panic("Feature 'token' is paused")); info!("storage_unregister: {result:?}"); info!("call defer_batch([(alice, 10_000)]) [signer=oracle] — minting feature not paused, should succeed"); From b8f927f268af938563e429bfb17d02694875e5ea Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Fri, 5 Jun 2026 19:30:13 +0100 Subject: [PATCH 37/46] fix: limit batch size --- contract/src/defer.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 7ca6917..6a3e117 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -85,11 +85,23 @@ use near_plugins::{access_control_any, AccessControllable}; const GAS_FOR_DEFER_CALLBACK: Gas = Gas::from_tgas(5); const GAS_FOR_DEFER: Gas = Gas::from_tgas(30); +/// Maximum number of `(account, steps)` pairs accepted in a single +/// [`SweatDefer::defer_batch`] call. The cap keeps a batch within the +/// transaction gas limit and the receipt/log size limit: larger batches risk +/// exhausting the gas reserved for the cross-contract `record_batch_for_hold` +/// call and callback, and overflowing the maximum log size when the per-user +/// breakdown is serialized. +const MAX_BATCH_SIZE: usize = 135; + #[near] impl SweatDefer for Contract { #[access_control_any(roles(Role::Oracle))] fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()> { self.assert_feature_enabled(Feature::Minting); + require!( + steps_batch.len() <= MAX_BATCH_SIZE, + "Batch size exceeds the maximum allowed" + ); require!( env::prepaid_gas() > GAS_FOR_DEFER, "Not enough gas to complete the operation" From 3921733e72ba2e9b8a9e3cdd5a15c4241724e357 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Fri, 5 Jun 2026 19:40:03 +0100 Subject: [PATCH 38/46] fix: harden defer checks --- contract/src/defer.rs | 3 ++ contract/src/lib.rs | 22 ++++++++++++ integration-tests/tests/defer.rs | 58 ++++++++++++++++++++++++++++---- 3 files changed, 77 insertions(+), 6 deletions(-) diff --git a/contract/src/defer.rs b/contract/src/defer.rs index 6a3e117..69928d5 100644 --- a/contract/src/defer.rs +++ b/contract/src/defer.rs @@ -98,6 +98,7 @@ impl SweatDefer for Contract { #[access_control_any(roles(Role::Oracle))] fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> PromiseOrValue<()> { self.assert_feature_enabled(Feature::Minting); + require!(!steps_batch.is_empty(), "Empty steps batch"); require!( steps_batch.len() <= MAX_BATCH_SIZE, "Batch size exceeds the maximum allowed" @@ -115,6 +116,8 @@ impl SweatDefer for Contract { let mut steps_increment: u64 = 0; for (account_id, step_count) in steps_batch { + require!(step_count != 0, "Step count must not be zero"); + if self.is_restricted(&account_id) { continue; } diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 03f58da..7db2f35 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -318,6 +318,28 @@ mod tests { assert_eq!(U64(0), token.get_steps_since_tge()); } + #[test] + #[should_panic(expected = "Empty steps batch")] + fn defer_batch_rejects_empty_batch() { + testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); + + testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); + let _ = token.defer_batch(vec![]); + } + + #[test] + #[should_panic(expected = "Step count must not be zero")] + fn defer_batch_rejects_zero_step_count() { + testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); + let mut token = Contract::new(sweat_holding(), sweat_the_token(), vec![], vec![], vec![], vec![]); + token.acl_grant_role(Role::Oracle.into(), sweat_oracle()); + + testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); + let _ = token.defer_batch(vec![(user1(), 0)]); + } + #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); diff --git a/integration-tests/tests/defer.rs b/integration-tests/tests/defer.rs index 0924698..fb885a6 100644 --- a/integration-tests/tests/defer.rs +++ b/integration-tests/tests/defer.rs @@ -95,12 +95,7 @@ async fn test_defer_batch_skips_denylisted_users() -> anyhow::Result<()> { // loop in defer_batch must skip alice (nothing recorded for her to claim) // while still recording bob. bob is the positive control proving the batch // isn't simply rejected wholesale. - let context = Context::builder() - .with_oracle() - .with_claim() - .with_bob() - .build() - .await?; + let context = Context::builder().with_oracle().with_claim().with_bob().build().await?; info!("call acl_grant_role(DenylistManager, sweat) [signer=contract, super-admin]"); context @@ -279,6 +274,57 @@ async fn test_set_holding_account_id_rejects_non_admin() -> anyhow::Result<()> { Ok(()) } +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_rejects_empty_batch() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_claim().build().await?; + + info!("call defer_batch([]) [signer=oracle] — empty batch must be rejected"); + let result = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [] })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Empty steps batch")); + info!("defer_batch: {result:?}"); + + info!("done"); + Ok(()) +} + +#[tokio::test] +#[tracing::instrument] +async fn test_defer_batch_rejects_zero_step_count() -> anyhow::Result<()> { + let context = Context::builder().with_oracle().with_claim().build().await?; + + info!("call defer_batch([(alice, 0)]) [signer=oracle] — zero step count must be rejected"); + let result = context + .oracle() + .call(context.sweat.id(), "defer_batch") + .args_json(json!({ "steps_batch": [[context.alice.id(), 0]] })) + .max_gas() + .transact() + .await? + .into_result(); + assert!(result.has_panic("Step count must not be zero")); + info!("defer_batch: {result:?}"); + + info!("view get_steps_since_tge [unchanged after rejected batch]"); + let steps: String = context.sweat.view("get_steps_since_tge").await?.json()?; + assert_eq!( + steps.parse::()?, + 0, + "a rejected batch must not advance the steps counter" + ); + info!(value = %steps, "steps unchanged"); + + info!("done"); + Ok(()) +} + #[tokio::test] #[tracing::instrument] async fn test_defer_batch_advances_steps_on_success() -> anyhow::Result<()> { From 4dc1dcbdbff685d132839a40e5cc48a2010b0964 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 8 Jun 2026 12:52:24 +0100 Subject: [PATCH 39/46] fix: do not emit FtBurn with empty amounts --- contract/src/lib.rs | 5 +++++ contract/src/storage.rs | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/contract/src/lib.rs b/contract/src/lib.rs index 7db2f35..5abbd72 100644 --- a/contract/src/lib.rs +++ b/contract/src/lib.rs @@ -97,7 +97,12 @@ impl SweatApi for Contract { assert_one_yocto(); self.assert_not_in_denylist(vec![&env::predecessor_account_id()]); + if amount.0 == 0 { + return; + } + self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); + FtBurn { amount, owner_id: &env::predecessor_account_id(), diff --git a/contract/src/storage.rs b/contract/src/storage.rs index 0e22a61..4620474 100644 --- a/contract/src/storage.rs +++ b/contract/src/storage.rs @@ -26,6 +26,10 @@ impl StorageManagement for Contract { self.token .internal_storage_unregister(force) .inspect(|(account_id, balance)| { + if *balance == 0 { + return; + } + FtBurn { owner_id: account_id, amount: (*balance).into(), From 23d05990d27f08acd4fe73aca2c492d1c636d421 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 8 Jun 2026 13:25:49 +0100 Subject: [PATCH 40/46] chore: clean assertion --- contract/src/pause.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/contract/src/pause.rs b/contract/src/pause.rs index 97b28b9..bb0e336 100644 --- a/contract/src/pause.rs +++ b/contract/src/pause.rs @@ -81,9 +81,7 @@ impl Contract { /// of any guarded method so it fires before other checks. pub(crate) fn assert_feature_enabled(&self, feature: Feature) { require!( - self.paused_features & feature.bit() == 0, - // Single quotes (not double) so the message survives debug-escaped - // substring matching in the integration tests' `has_panic`. + !self.is_feature_paused(feature), format!("Feature '{}' is paused", feature.name()) ); } @@ -119,9 +117,7 @@ mod tests { use near_contract_standards::fungible_token::core::FungibleTokenCore; use near_plugins::AccessControllable; - use near_sdk::{ - json_types::U128, test_utils::VMContextBuilder, testing_env, AccountId, NearToken, - }; + use near_sdk::{json_types::U128, test_utils::VMContextBuilder, testing_env, AccountId, NearToken}; use crate::{ api::{PauseApi, SweatApi}, From 653892a4a01d334bafe82e6006623d5b51bebe1a Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 9 Jun 2026 13:04:40 +0100 Subject: [PATCH 41/46] bump version --- Cargo.lock | 2 +- contract/Cargo.toml | 2 +- contract/src/event.rs | 40 ++++++++++++++++++++++++++++++---------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77f0bec..ae9c6e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -370,7 +370,7 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "contract" -version = "1.2.1" +version = "1.3.0" dependencies = [ "near-contract-standards", "near-plugins", diff --git a/contract/Cargo.toml b/contract/Cargo.toml index 02b7257..f5992d8 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "contract" -version = "1.2.1" +version = "1.3.0" authors = [] edition = "2021" publish = false diff --git a/contract/src/event.rs b/contract/src/event.rs index a69139b..d28efab 100644 --- a/contract/src/event.rs +++ b/contract/src/event.rs @@ -16,7 +16,7 @@ use near_sdk::{env, serde::Serialize, serde_json, AccountIdRef}; use crate::Feature; const STANDARD: &str = "sweat"; -const VERSION: &str = "1.0.0"; +const VERSION: &str = "1.3.0"; /// A SWEAT contract event. The variant name (snake_cased) becomes the NEP-297 /// `event` discriminator and its fields the `data` payload. @@ -45,7 +45,11 @@ impl Event<'_> { /// Emits the event through [`env::log_str`](near_sdk::env::log_str). This is /// required to ensure that the event is triggered and to consume the event. pub fn emit(self) { - let envelope = Envelope { standard: STANDARD, version: VERSION, event: self }; + let envelope = Envelope { + standard: STANDARD, + version: VERSION, + event: self, + }; // Events cannot fail to serialize so fine to panic on error #[allow(clippy::redundant_closure)] @@ -73,38 +77,54 @@ mod tests { #[test] fn restriction_added() { let account_id = AccountIdRef::new_or_panic("bob"); - Event::RestrictionChanged { account_id, is_restricted: true }.emit(); + Event::RestrictionChanged { + account_id, + is_restricted: true, + } + .emit(); assert_eq!( test_utils::get_logs()[0], - r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":true}}"# + r#"EVENT_JSON:{"standard":"sweat","version":"1.3.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":true}}"# ); } #[test] fn restriction_removed() { let account_id = AccountIdRef::new_or_panic("bob"); - Event::RestrictionChanged { account_id, is_restricted: false }.emit(); + Event::RestrictionChanged { + account_id, + is_restricted: false, + } + .emit(); assert_eq!( test_utils::get_logs()[0], - r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":false}}"# + r#"EVENT_JSON:{"standard":"sweat","version":"1.3.0","event":"restriction_changed","data":{"account_id":"bob","is_restricted":false}}"# ); } #[test] fn feature_paused() { - Event::FeaturePauseChanged { feature: Feature::Token, paused: true }.emit(); + Event::FeaturePauseChanged { + feature: Feature::Token, + paused: true, + } + .emit(); assert_eq!( test_utils::get_logs()[0], - r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"feature_pause_changed","data":{"feature":"token","paused":true}}"# + r#"EVENT_JSON:{"standard":"sweat","version":"1.3.0","event":"feature_pause_changed","data":{"feature":"token","paused":true}}"# ); } #[test] fn feature_unpaused() { - Event::FeaturePauseChanged { feature: Feature::Minting, paused: false }.emit(); + Event::FeaturePauseChanged { + feature: Feature::Minting, + paused: false, + } + .emit(); assert_eq!( test_utils::get_logs()[0], - r#"EVENT_JSON:{"standard":"sweat","version":"1.0.0","event":"feature_pause_changed","data":{"feature":"minting","paused":false}}"# + r#"EVENT_JSON:{"standard":"sweat","version":"1.3.0","event":"feature_pause_changed","data":{"feature":"minting","paused":false}}"# ); } } From f38d20e82b9e978d8ca81c3c3ee5a80683ff5fdc Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 9 Jun 2026 13:11:06 +0100 Subject: [PATCH 42/46] fix: reproducible build --- contract/Cargo.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contract/Cargo.toml b/contract/Cargo.toml index f5992d8..9e7d141 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -5,6 +5,12 @@ authors = [] edition = "2021" publish = false +[package.metadata.near.reproducible_build] +image = "sourcescan/cargo-near:0.19.0-rust-1.86.0" +image_digest = "sha256:772638e343baeeea24e49062c7d424274f3441452cc06ce97fc4e5695b19fecc" +passed_env = [] +container_build_command = ["cargo", "near", "build", "non-reproducible-wasm", "--locked"] + [lib] crate-type = ["cdylib"] From 98c8e373f1c3c1ab2af64f2564f8e637e18556e7 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 9 Jun 2026 13:11:48 +0100 Subject: [PATCH 43/46] fix: reproducible build --- contract/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/contract/Cargo.toml b/contract/Cargo.toml index 9e7d141..3732d9a 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -4,6 +4,7 @@ version = "1.3.0" authors = [] edition = "2021" publish = false +repository = "https://github.com/Sweat-Foundation/sweat-token" [package.metadata.near.reproducible_build] image = "sourcescan/cargo-near:0.19.0-rust-1.86.0" From a1b1a0fec799880ebb804f11d2d5ce8478a91b87 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 9 Jun 2026 13:15:42 +0100 Subject: [PATCH 44/46] build: v1.3.0 --- res/contract.wasm | Bin 414598 -> 408660 bytes res/sweat.wasm | Bin 386796 -> 0 bytes res/sweat_abi.json | 1336 -------------------------------------------- res/sweat_abi.zst | Bin 2188 -> 0 bytes 4 files changed, 1336 deletions(-) delete mode 100644 res/sweat.wasm delete mode 100644 res/sweat_abi.json delete mode 100644 res/sweat_abi.zst diff --git a/res/contract.wasm b/res/contract.wasm index f606d7a64b5e71eb71ec41605b15886e16cc5b06..d6e25daed87d7bc3816b65aec134dbe8f1b9f2a2 100644 GIT binary patch literal 408660 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⋘!AQy2Cm2BdvDId%QqFKl;tmWQ#lv{HixXwiz7 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

)R*a4Y_pMT(P?D2#vcsn(+Q|Y*=mDm-S<& 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

5BMtvkjhYlwE^)Mv#iuxgOZv5 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.is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_add_super_admin", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_get_admins", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "skip", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - { - "name": "limit", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - { - "name": "acl_get_grantees", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "skip", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - { - "name": "limit", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - { - "name": "acl_get_permissioned_accounts", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/PermissionedAccounts" - } - } - }, - { - "name": "acl_get_super_admins", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "skip", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - { - "name": "limit", - "type_schema": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - { - "name": "acl_grant_role", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_has_any_role", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "roles", - "type_schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_has_role", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_init_super_admin", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_is_admin", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_is_super_admin", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_renounce_admin", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_renounce_role", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "acl_revoke_admin", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_revoke_role", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "role", - "type_schema": { - "type": "string" - } - }, - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_revoke_super_admin", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "acl_role_variants", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - { - "name": "acl_storage_prefix", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - } - } - }, - { - "name": "acl_transfer_super_admin", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - }, - { - "name": "add_oracle", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - } - }, - { - "name": "burn", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "amount", - "type_schema": { - "type": "string" - } - } - ] - } - }, - { - "name": "contract_source_metadata", - "kind": "view" - }, - { - "name": "defer_batch", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "steps_batch", - "type_schema": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - }, - { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - ], - "maxItems": 2, - "minItems": 2 - } - } - }, - { - "name": "holding_account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/PromiseOrValueNull" - } - } - }, - { - "name": "formula", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "steps_since_tge", - "type_schema": { - "type": "string" - } - }, - { - "name": "steps", - "type_schema": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "string" - } - } - }, - { - "name": "ft_balance_of", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "string" - } - } - }, - { - "name": "ft_metadata", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/FungibleTokenMetadata" - } - } - }, - { - "name": "ft_resolve_transfer", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "sender_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "receiver_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "string" - } - } - }, - { - "name": "ft_total_supply", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "string" - } - } - }, - { - "name": "ft_transfer", - "kind": "call", - "modifiers": [ - "payable" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "receiver_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - }, - { - "name": "memo", - "type_schema": { - "type": [ - "string", - "null" - ] - } - } - ] - } - }, - { - "name": "ft_transfer_call", - "kind": "call", - "modifiers": [ - "payable" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "receiver_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - }, - { - "name": "memo", - "type_schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "msg", - "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/PromiseOrValueString" - } - } - }, - { - "name": "get_oracles", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - { - "name": "get_steps_since_tge", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "string" - } - } - }, - { - "name": "is_restricted", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "new", - "kind": "call", - "modifiers": [ - "init" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "postfix", - "type_schema": { - "type": [ - "string", - "null" - ] - } - } - ] - } - }, - { - "name": "on_record", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "receiver_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - }, - { - "name": "fee_account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "fee", - "type_schema": { - "type": "string" - } - } - ] - } - }, - { - "name": "record_batch", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "steps_batch", - "type_schema": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - }, - { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - ], - "maxItems": 2, - "minItems": 2 - } - } - } - ] - } - }, - { - "name": "remove_oracle", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - } - }, - { - "name": "set_restricted", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "is_restricted", - "type_schema": { - "type": "boolean" - } - } - ] - } - }, - { - "name": "storage_balance_bounds", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/StorageBalanceBounds" - } - } - }, - { - "name": "storage_balance_of", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "anyOf": [ - { - "$ref": "#/definitions/StorageBalance" - }, - { - "type": "null" - } - ] - } - } - }, - { - "name": "storage_deposit", - "kind": "call", - "modifiers": [ - "payable" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": [ - "string", - "null" - ] - } - }, - { - "name": "registration_only", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/StorageBalance" - } - } - }, - { - "name": "storage_unregister", - "kind": "call", - "modifiers": [ - "payable" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "force", - "type_schema": { - "type": [ - "boolean", - "null" - ] - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "storage_withdraw", - "kind": "call", - "modifiers": [ - "payable" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "amount", - "type_schema": { - "type": [ - "string", - "null" - ] - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "$ref": "#/definitions/StorageBalance" - } - } - }, - { - "name": "tge_mint", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "account_id", - "type_schema": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - { - "name": "amount", - "type_schema": { - "type": "string" - } - } - ] - } - }, - { - "name": "tge_mint_batch", - "kind": "call", - "modifiers": [ - "private" - ], - "params": { - "serialization_type": "json", - "args": [ - { - "name": "batch", - "type_schema": { - "type": "array", - "items": { - "type": "array", - "items": [ - { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - }, - { - "type": "string" - } - ], - "maxItems": 2, - "minItems": 2 - } - } - } - ] - } - } - ], - "root_schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "String", - "type": "string", - "definitions": { - "Base64VecU8": { - "description": "Helper class to serialize/deserialize `Vec` to base64 string.\n\n# Example ```rust use near_sdk::{json_types::Base64VecU8, near};\n\n#[near(serializers=[json])] struct NewStruct { field: Base64VecU8, } ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "FungibleTokenMetadata": { - "type": "object", - "required": [ - "decimals", - "name", - "spec", - "symbol" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "icon": { - "type": [ - "string", - "null" - ] - }, - "name": { - "type": "string" - }, - "reference": { - "type": [ - "string", - "null" - ] - }, - "reference_hash": { - "anyOf": [ - { - "$ref": "#/definitions/Base64VecU8" - }, - { - "type": "null" - } - ] - }, - "spec": { - "type": "string" - }, - "symbol": { - "type": "string" - } - } - }, - "PermissionedAccounts": { - "description": "Collects super admin accounts and accounts that have been granted permissions defined by `AccessControlRole`.\n\n# Data structure\n\nAssume `AccessControlRole` is derived for the following enum, which is then passed as `role` attribute to `AccessControllable`.\n\n```rust pub enum Role { PauseManager, UnpauseManager, } ```\n\nThen the returned data has the following structure:\n\n```ignore PermissionedAccounts { super_admins: vec![\"acc1.near\", \"acc2.near\"], roles: HashMap::from([ (\"PauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc3.near\", \"acc4.near\"], grantees: vec![\"acc5.near\", \"acc6.near\"], }), (\"UnpauseManager\", PermissionedAccountsPerRole { admins: vec![\"acc7.near\", \"acc8.near\"], grantees: vec![\"acc9.near\", \"acc10.near\"], }), ]) } ```\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", - "type": "object", - "required": [ - "roles", - "super_admins" - ], - "properties": { - "roles": { - "description": "The admins and grantees of all roles.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/PermissionedAccountsPerRole" - } - }, - "super_admins": { - "description": "The accounts that have super admin permissions.", - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - "PermissionedAccountsPerRole": { - "description": "Collects all admins and grantees of a role.\n\n# Uniqueness and ordering\n\nAccount ids returned in vectors are unique but not ordered.", - "type": "object", - "required": [ - "admins", - "grantees" - ], - "properties": { - "admins": { - "description": "The accounts that have admin permissions for the role.", - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - }, - "grantees": { - "description": "The accounts that have been granted the role.", - "type": "array", - "items": { - "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", - "type": "string" - } - } - } - }, - "PromiseOrValueNull": { - "type": "null" - }, - "PromiseOrValueString": { - "type": "string" - }, - "StorageBalance": { - "type": "object", - "required": [ - "available", - "total" - ], - "properties": { - "available": { - "type": "string" - }, - "total": { - "type": "string" - } - } - }, - "StorageBalanceBounds": { - "type": "object", - "required": [ - "min" - ], - "properties": { - "max": { - "type": [ - "string", - "null" - ] - }, - "min": { - "type": "string" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/res/sweat_abi.zst b/res/sweat_abi.zst deleted file mode 100644 index a35f6c6e70d210482f21f23f5617d6985c11fc51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 zcmV;72y^!+wJ-euh#f=#x=!>BH9&2X4#O}E!@xR*^^qG}+ftH|y=f@cT9WoAnW}{o zJWKRU9gnk4MdDca$VjhqeNxLX>|DkE9cm28Lv@{ zY2=npAcr4py9B) z8<3-|O#74raUhx>3zRJP?pW zMXF6u#J%PHTGcW*^M>KRWnV?!P#ovt(>pk67x_zpIQf{e;p5Q3krGK7csv}tkGLf` z072T$p@W0r0ML78eK;!J%!|*%abB$+2jg)t5P)tqME8GxWD&oL{N3g1Dki8=1L75=nbxaIwAP~fyVFQ9P7&pgF zsgj@~9;oD*H9naVR)#jHz>) z6HJKnu;+JSzs6?^`R_tLJSY$m1u6(Y9vg}QpAe7}2L*S6ph_cLSRW*WB9V{?j0u2s zOhWmE&(a{avA?h0g@o)a`ZU5hDut9{C8>j*? z2Lh2Kh(RR8Fc3o+F@`V!Aw)okA|jClBEiTENqPq)YrQ&u4#U$@TrxXu50($+mc30@ z0q672gB|c@{mkY2<$gumHNRJgNIj?&2^iuu2SuD|T0a+zQYEysK~4K5H^;nytZ*Ov{|5+E=B%0seu!G=joYq0UquYnYn&#rWS zaF6*Qg`?YUW%>hu?9bMtNPUt-lKTd1{l#ksp$iA>znAjeUVS^-S?7cc+eLK7@UjNX z1rwlIe3$q^C$c2y2#zg*yk?IhwxYoJ^ji%I`R1dxc8uC`9U;%mg12g98b_>#UZUBM z!tor2CJ{(6u9LNeaZ7(zo={*uR~vbo4EWTx0l3T!dk^-d507{*h&kIt)0Rw8tTBw5xj6KYqMZb5)^^bi_aGtqDCS-2xiqZo1 zQNEFq0XOy2#2;|Ee{V27!FTQcd}Bw5X^A7LAnFzuxXB>_n}3Tr^#ysaWHH!%rdE?C z4-~Xq#(Z@Si`lNHD^ckKx*wDTeoKa8naq*#;`OsT|48`(VbD&!Cy0+G!qE_CB_3l} z1&61cF2oZGJ}UAf6WKAy>kEIj#DHjSlQWh#WSRj*%@0yq8kgyvNu{~CsTP&J^anP6 z5Dm%G4)WoiPX)s`nY_h?rH_&Oxf9UgIn^MfqkYMCfVMcu3s3BrBky!LKqx-Piky~5 zu6~oh{uD_%>Cd%-8?m`rlS>Dtt#7g7@c_#U*WIzRlQ1&|)8)D>xP`TIULo!v#t``s zNL2R9na)evYnp2P1TgQq2`#NF%#c*MXP~O>Z(JozP9_g3obD_%Z2$>v*U3(myb?f; zIRj*v&yjKfbZ34XTZ>FgyV-2R9L+bfkQW0FMgTR0V*$7r zWtI%%#uMToUk>1bCl+DkAml#|K7X(rf3aQ{+sF0F3fdEIMj3vqDhH}rjVmQ`kYP@O z40U5#4PA-M(4%sRxNL%jebG?tJ0bfvHhz$C%>9Yj6I_y)e>N)jZP z_7VtNiq?vSb>P+Cd@^yuhTc=b?fbEwot|^sz5K?D&$)Miivw@7O_(3BjJrBDi z42@{FViQf1@fd$UJSa17R1={P^dv7Arh43ewn9Mn-h1;<(sZ=*5See!OrQ^o4=T#t zctq32axUO$e#Zs?`uqu_=s&3E3RIFR-!NT>Uiki O-CiFNn2<$sJ{784_98<7 From 8d34f3b2a6c85737e0324f2d55128b5108a65837 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 11 Jun 2026 13:12:48 +0100 Subject: [PATCH 45/46] fix: ci builds --- .cargo/{config => config.toml} | 0 .github/workflows/push.yml | 6 + .github/workflows/test.yml | 6 + res/contract.wasm | Bin 408660 -> 409853 bytes res/contract_abi.json | 254 ++++++++++++++++++++++----------- res/contract_abi.zst | Bin 2243 -> 2428 bytes rust-toolchain.toml | 1 + 7 files changed, 182 insertions(+), 85 deletions(-) rename .cargo/{config => config.toml} (100%) diff --git a/.cargo/config b/.cargo/config.toml similarity index 100% rename from .cargo/config rename to .cargo/config.toml diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6c4a01e..29455ea 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -22,6 +22,9 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: Install cargo-near + run: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/download/cargo-near-v0.19.0/cargo-near-installer.sh | sh + - name: Build run: make build @@ -39,5 +42,8 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: Install cargo-near + run: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/download/cargo-near-v0.19.0/cargo-near-installer.sh | sh + - name: Integration tests run: make integration diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cf83fd3..a63e4c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,9 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: Install cargo-near + run: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/download/cargo-near-v0.19.0/cargo-near-installer.sh | sh + - name: Build run: make build @@ -39,5 +42,8 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: Install cargo-near + run: curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/download/cargo-near-v0.19.0/cargo-near-installer.sh | sh + - name: Integration tests run: make integration diff --git a/res/contract.wasm b/res/contract.wasm index d6e25daed87d7bc3816b65aec134dbe8f1b9f2a2..f7f5328fe82a2413807dd240bff4438cc4435ea3 100644 GIT binary patch delta 66097 zcmd?S33yaR`Y(K{s=L$KI}jiwET@|gf^1<+08u!RRb&xSQBl!x!GH?mGB^UAK!C7m zpn(bs8WsiF1fz5i(69=E0*Vqg0cBN$pr}znzTaEtbf<&h3^V`x-TT}N&y#biPOWdf zd%ab?r##_OPR%Iop=X|Cnx?TLe#6wL&mF?+^|Db@zuMwE!D{-}v--ZvtcGs^t6fx` zKPSW#+a%vh_5pTHb2^>Ab9SBExi8LPL_0Ja{nIoaCb;iGM{+n?b!tvl#p#>uXv>lL zk)u;>7FI`~vR2n7bm~>Jb4r@8z6N1Uo$fe|GmUwC_lG4ku7?j*7z;}db8?MQlbTjv zOQDCx8>BMUkTF{r8_M2i@B8M4#YY?|+o(l)HRDKG(T8E1#lRzI%V3eK*+f2tPvUv} z9Gk!=^YQ!`JIjpM*;ZC8zF`yCR6a>`>T&Bktb3QqqVq?1AJ4|Ie14I2%43D>H!<0^ zP0Y5v%lvF5D`K5`tYYu6ar~0+SmX_L4v2+(5ud<6;h(c_*gC$If51Dv!ME_u{A0eu z*Ep)C_ay(0f6Gtv6MUi=E5`ABF@bd&FUE;CM6Q@8@cO3cw2*H@JFnV0y)BlDrDBn8a7ZYzTqZ}t7sDjA7dtp^7` ztZJ=3{Mx#)uVb^v9E(O{FpYepI@R=TZZ?n4E%QB*R);O|<)yU`+w<{y%~dLV_0r3e zc9g8w47+QYEt(rz6pPet#%{_Ab1n0wXS7SaaI!>8=PsRR@(f-}=LS#b?eQor@lDJa z$O?+S%V^11v9E61u6*lO-=MawkeJioC-MD|)`eBF4&9JO6C=GBdM(^u@Nn#Pde`bR(Gw--WJ6S#i;q-Rg1z z#xJ*et1q@C>P)vAX<44|EInM0&C(sN#lFcszN)eWpThA0U$<&mI&&@Yjks-GTt&7X zZRS?(d82A4T92i6;=nF3aHCr1?UskAj+Z}DI?-v>tIhAW3PJcw_Xl4K)uio)`yIqq}>JNN3Y(_qF zQAuO}6f}@#Oh!Ad6I7KMk;WcM9Ybn?V3A&`{%pSj1sxj!jq8A?0L*INc@t3XzB`}m zpn4UdRgKv+v{YkLuw`yU8OH)GSN`may(<&TR&>W*?O4?%Hsc`R;4m)WFEjYF=&A7T zSy(hPpBBK%?$N&&TkLzKe`EapsDB3jURLjo?`h2T`|i2NkDR!BTj6h)d+P#bkKH?m zAz>Tf!QTc0>L9DjfR89E=7CmjS{JUzrgIJLPi9#j4m2>Zuw0J<0=X6!{q2FOSHgVE zgWU+>K6!9yCHSuWx8S=f0N zQP&9`;pL-fS)Y9PHM84yS(fgs+^y$tfo{kC?Y{qdf$Kgpf-UpSe&l)2ybpmFQLd@B z$e-*i%&TjFu!p;{Io?vUJk0f~uhpX-$6f}qe6?u6qi*I{n@@-<*XY76OY4cZi|%-w zfw2_bIVd&ov1rT_9-FgtI@-3orpgY(_)6acPd&nxNG5G=#}RyR{V4TUd9p9&={A68 z*QfiiL$a{7XpH5PpSBit#1flZK9p{&?z{AKm}4u|C@qQ@`W|Di`bvhmX+$v?(aB-K z5f#Ne^A5L0=Zks9U3Bufhl1%|!#`%TeKlWDQxUG&MaBznbH1n8_rr^y62@#8(VGA2 z_x(DeIi(tpRH?s>Tt=xXqg1N;`jv!9C$7o3dI6H*8tPOcX+U?NB4! zn1)2Erlo5@9kWJQ=V-2nQPT(1w>I<<8J`E+)}2N?vHZgVZ=hm_5tZdSh(tr-bVmW* z9r%v9=8s;`V7ro-3Mh7?EF={blEOrXE$QcbdrVCF#-9O7r*3nNVICe$OR=4D!a%cU zw5*EU&nVZ9TyS>R7~hX$ylijLGr1|O38O|`I&a=1Cn7p=TCfjo@#McMh8=o2Gl-UfVxc{YN`1|3@pWyG5{K4_(qqqwUsvguk+){VPLtz4&->-%B&r*4U z!Mgy1G%!6PAz!j=6=f0w&EXHf?-A(%fXB;*AcU2Y2;r3M2|`FOP=p|e5E#%WyP!JC z$%4B~LWuW<+d5*vK~%0x4B=N0L%8v0V$doP1F)nLF=(O05N8rY1QA07(cQuw9fD*N zL4CbmK@SmztVk%5um|ZO8uVaCc}!^itoyG`4{??0A?Njn1GK;hlNm7C9-swooHA*_ z%(ZBNlUxTa9C~FAkom<|37O9o&H)T>pH0ZT{m0tABXhe25SsrBgsw8@7A(+RbNXUw z-1DpXKA01YrgqG^-&&65&d}v>Ucs9P3ZcBoiRJJOeXUvrH?v;>etRhRs|L9jbRr`* z%kV2+q*#$!=@k_K4>uN7Bpm2h*9iI!;zrTBLnk>%8H}=gw%6~v_99gMKW!0u&1=bK z`9{z4kPsm;4k03aZ_gX17NrRmr1$)+z=GIA7lh)39e5+bclsG`3VESWq;O5Dkh3MvD5Wx6e7&pSo46p+ zSF(8Gwc-CKAsu8&*9-gbr6iyyEUggG&H!7p86T2ZwP6a-BVJUj&SqEwnp6!4=&zSu zOF&=OqP@K0-ns`?qqDk7ik8`#(+g?n8tkzplMp3&nDcryU+tAcNrilQWj+4EM&G+D z>(k@F%Da_)3#CNo(5KV6)A-Hr>-5f0`nu|!8|m@mJ3Sz5I}}ZeT04~_D9OCvR{IVW z)nwb{x>+pU*W}%5Y?(jo6_&^Nsd4_Pud+K?Tmk9s5#&u^I-yF5@6_jgS&8q)JwqJD zdHA-YXxX0iOpbh=x%sy=rt)8BG17`>7ui( zqpk$rE)2`k{?O`FU(Wk(;vWm%e;V!js;!xyxMdCcOHlwarqg>1^L_FA^4__u4$oa9 z|2da+?;8S0qi{w=9jL#|sF;0-HcY_SLM4+`i)Z6l41qsiC}qU8z3B3;8~|nP^#J7< zqj9@8bO+cEed)&E%U|aCs%@-~SxL4=RP$}zTR-;7S^u)vL$gjQ{Rh>aUOF}A49&E8 zV5YwHo9beszJB|<-}hh7b6XgTQ}bljJc<25_dw6%HjklkL~g0onp8k?SwKxp=ka)u z%19n0D3R$r3J+2!fpmCtq;nDnWix#Pwj`l}q8GM|;VrH;P@AEfK8Y(<26)+Y8}PEI z+qQdI#Hn21Ya_Q7<&@2Pv81ApK5kJNFNMO(h#iEN_wNYe<<1>nt0gG<^kV>j)Xtk} zLLcm`_a~U=ys!IQyLxiq(e4jTJUag&>z;9~VOJjQ)scm5^$&ZW-Bo#@*Ce2;;R>0B z*Mlc>)|O~StE=G2e@_p~s$7*G%CCb-%sCX8V;$ez!;P>YpByHdICuDIcnKanGU7UC zyPIa4ewEqw`}bBY)E2&i`d?1vv0eumBV|GQ*T0#{_||d0qGJ!h*IDIw6UWwx7{HFA z&d2+*2BAz6nust;h%-jGN*J&<3WhsGp|Si!-v=k$?1b;giP~u6j}tEfUH^Hq7INgt z%s_jGPoCyP`5%AV-A(*c1A8P*k-5I)Wb$_$j6W+_mQkj`glY9%3(y++BAYEb0{&hR z2^%S3;Mt`fN2q28bC3K4mSz{0Wo!u5 zDb`fz6dGxEf{cDrs9_JAM!!ayT`bH!VQF?6X?7Yky9H%`q1i=N*6ea#&-5)kuLn$? zaMBGlm^`)$lgBdu&D@~LW19b$&XZ=B@B?Xf^M4@2=fDqS#Rm+ZpcT*mh0$}@g&YF< zz6Ye;Vsr+5&2fK*T!|(qt#}m>d_vhOl zz6RYuG8U6!Vw(3vHvgUsJsA&^o)HzTfJx6ui}5G4VNWw&I#y0-%Roo+R9hAxB!5yn z_Scleh?1B^Ny~pDO4{`sC`p#JW%2UVjqGt&BKx#wASn4{dlsaqoxdL=ijuE(U@Jq2 zg~$NJ0_3*5A+~5JvqUT`gjgJggZv;Ygjg;cU|XjzKZ50$(VOX^%fXfH6bfpm$(KSw9cJ>S3Q$Wuf^8?U@O=cUg!KewnH~v096sI~ z$q4VI;bv1~-XX+q8bEw`#LY-qlFY+;bh`dU__K_V`5r)IyT5%j8_Rfku56yH5E-y< zVyVOO&RBMlFaJ=kug~Ivii2G2W&m=bi?v`U{QF&Oi^4`%Lj|xiRTaRZ;+ZD|H~&+B zJsr;oE#(*Sf5uDs#{fEG-DI4%JP74Xn<(|IYyI`|2#ov7K0R zCEP8|{l6b~3uKDUT3#Ol=YN3pXcAnH|HTMgFy{X}1a2>D-T*0eU0A%1pw=u1wg2C+ zxcvVC4qPCox4vF1K11u#IJh4F^H}^xhGN4?pJ0n*UR(Accj#|wHx-Iou3whzj5kgF5}5j?GWK*PDG|lvh!H=)(q)HE70TG( zJF%YZhETI6vU9X8#H_JJMN?qOJLDZgtcg6`nbl$6N@o{V8%?EjVWS#aHqbieCXaxg z<(iJ2F0`V2tx-b^8!VbATcq)={GSMLZV7`cJpAmx&qd9Kfr~ z**#dqRrIZ9GUaWSATRb{DNPo?j}ckwF4qwdk&w<)brs~&506|pQ_^`K1i!EhK0wZ0 zD{9HXx3M~HuLaS{`tG+?c#PLZO6@KvwMs3MP48j}{{6QBV0=-oY}kw48<@+4UM!te zS!2P7JZP>yFb;o|yL+>0-2b6G)tk+(@*^3Nb{F6zpeH#ZjdOBlAJ(R-X<&|r@8d(} zb`Ye_`H%Kte~?c@9_`E40c~EtgS`Ui_;2jT8Zz=XH|vk@ZI@%B zP|sT-D&n-Zd4S*kz(v+B?Ptorky z>MtLBkYxhs9}Z?q3Fv(WT0npCArt7YKE%5AycWjQmqHear^^L$RgLQ$QvJ{DiLUYF(yUaHg*x}kER55TRp`naC`z%XpT!4mA7FqCO zRLc;%xT>UA%VZMcVGyJojW&>=%&Yz!QS;4(bLkGdZiGr9g0Y3-=ooe9` zaOeutp(}z8UARujp(_+&kV99P4qc&$2T@Z0=4@jB>*>hW&oLu}WdB2p$nSrS4do<1 z8V+Z#MISqal_G~Vq|qq(#c=kdql~ib^86m=_CN6g`;f5}{)R8I8|c|@1bax_do6Sd zIye0RTqN60}4~flY3lIn@-_2oD9n&YF><-yuG`l14zF;(K&)UeN z$ik!b7e z^ZhT zK0OY*KC5K$I0lI(o#UYlw2=+Qv*v7vyvIxpr_?FA*i3C3&sy`Gi8J$986!|-na1@PL`@*dGsY0l0?naKut?(+ zRj;WE!tZMAVp*ESjfx$nu^q7%?QVAH z$(|xzBCCK+NGu^OrJ<<@oThhoP<@Y{Ws0{ZvslktF6@LtqBakq1sKQPqYlV_4#W?H zmR;da|Hx%-9u%69JubD|*gd$@SbSZZYFFQBL>ynDjGN06W&J`HOLI#vWVCH47Z$Qv zi60P_r<(JbNbkX2l1lrA4X;J%f0~;-GndtjP+kqhGN7B-d8`*8`@lTrj#plLazty! zDJ=X!+WYkT=CNk%uQ~{IszUMlZoX2y!WJ-WfEDKg=8ZrPcG>_-mA*IF4VJgbzwr&0 z!s5$_D%BnU1v0R%2>m`OFTIHX{*(UPg{-Plg=W14^j{*6zs2gAgG|L~0D}#Swz>9j zLcUsy*>42Age7bk0dLY0HieYR#HFTJ=*Fe2TTEpj$*D_O)ueZ^1(D9vbd9v?_L#Um zoi8Q1G<~N0a4GAqLX`iEBC^ghmK3JIh~7FbGd2C)%h*Hgh-|r>Ww6)e;N|Sj>PIoV z3^1P#*!DPr_XS@AAiv8mm$R3y1Ey2nhU&Q8zvOK;0DC#PGJGZTu@-X9N>`GDpn0b;oK@#-?id$iI&w!Xr9=4 zIy~tGGTF~svbSV^KkH0O^}3(!pe1^;nAIjv=j3A6^*TUuu~^yB)mH<}5c!|;+0`~I zW$7BQxDwfDEeq_e`sb`=WopcsWKJBwc$~!+~|D-{OZnn0s zj8}lIwb5T$qRw#hs+JZ8b|Or_xR4iT^P0ZwB)fll32a%OH(uVqNHmglH?aNzV{GIG zb`#57x)Ci$llWqY>Oef8FgDQ2Mw=@OVTmwGVt*9!0PzAN*OiP7ABQsTX`fkM+{i|= z4br=bwFXe$+r*j$y7+bzdsI={?H?&hoAVK?n+$eP5&YmZ)iKsNnxr+$un!gqJ$-Q@VN#dJgxll(liTgL2QFY=2g z<)j^~gCiTwxX#L5J6Jq*d1434MwgF&!kmof7t3LvvM!Xr`cso-G~UVP$7Bl`v*@7q}6(#_66nj_6c$9CD({`~QH9}%GLfMP| z!Y+1+f!CcrD(cF(&#~9Fd%o=YHBiF)IW{qt$l0H>rd3wW-=JkR(KL4$n5OM{W7T~B z!OvMNV|)E)_P`Xa^Dc$|V5JcIWA5%*u|E_+=6X@?KE#Il*#Q>8WJ)PJF6-`RU&}WR zv!m=?nZ1V%W_u;t877Ck$Rp&B2icN92(SvAG+PXGVMZ8T(F;Wwsb1u`BWy^7xwq(g zfqUidfxMPXILco18(*m)+}M@HKWM zB>v8nk!M7*@4=PT;J%4c8^Do460&TpU5!Ky+2sVwXUpZ@6Kr_gQX1LUP(5&5#}1-h zA_tyi6P@`qlSJ2AdEq2$L5P}qinXH79yo>IjCJz8Q>>|@kV1-ol)Fx|TGD=+Jsh7+ zjhSi`roDq23r;(iK3mhSDEf*FKhN3| zB)gtxH_>z4dG=+bI$31H5gONi`Sy>j1AQp_ku{~Keu3=>6gZ-V6j<~_u)tPX_#?Ab zD)q|+kS(gW`-$B`Pw!7~=|Gk0{WEL^Ix<8jSg;j{zvi(S`N}V>fX)o559-8{I!+@y zl|wsQEPdq+r-o!nITVYmh_JN|}UxyAm0zp*!QQb>kf zWH>z}Z@8#(Z@tLMDYtUjfLEs zk7&w6jn1J%Bi!EKGlC~7Tj+^Mv<^%tjO3LuE+>ljz#u+};(Ms~`O!QX-ENKMeVt3c zG$$yNWB3UE#Wy|E-@qCA4Ee>G1e(~p2<3;SR z8ujj)Yj_D?t z0)9t62$&B4VN95C7z5 zLJEJE!W%fuZe&6O1g4JHIYUMN1P@PQt^T6{l-A?TWn3z+f75RQN1K3=t~oaArO*~x z(-a^cQ;GnENt!TMfh|%=F8=|{pN^WzOY?1Yt6rrE{~M|N3EN*C1dEsroKbx6ds)zo z-%TiWz8UubrQ*~09lUt2d?F3>a7fNg<2BhEa!nd9tU$C!oAY{*#4o;Pt0m_);b~O; z^CqhL&rSFnl$_I4B}aY0DqO#?ctr?MD6p+awp>h>ac7 zzLB5Y$lJ0F{;>AoI+<_MV#JxscBCOl+1^EdoH$e24ku-MHkG+T*$$&^GZoY+pSlSV zN}J@%H}RXGbANIZPY)>D;WzX9IGUn1Y>2(T~lf7uZO_8vS0nS7H;20>u9 zF#!o*D2K#=<96Fu!4ql%Cm4+Np=mwKSRI;9$TC)jra>}qg{E%|2=5u(?ewp8e*Wr^7$Q509&weF)0lrX6>C_$zcSH4IYW)P2v^IT~?8m$5mYiG- z49rdpEI;6%@!#H+4<)zchHiXfz|YXPJ8#WuZKTyweg;iEpiJUlnn1< zPI^oqKF5Evy@$IQJ1AZE;WmYWLvrtZd}?CAH(aZ51MQL_Jh1I zdh}_)k&41MKT-}D$Ok*dsx042OWppn1NmpH_Fs%>$$ok0VQ}N^{$C!(Lh*v}5(gOK z{X-uCUeykA85k9cvE-pM6`yOOT0mv?Tf)4`9#%1whg5CBk6L#Na@jm}zr2Pl;hxo1oa?N1gAu{)?5;~HY zmgPDp?L+uN;M%ewye~go_EI&9zf@e3B2Myv4}tXXY_Ci3B5?!LrgB$w&jI z?+=0j&`ExLfz%(42dD+=gK+^JrSn0i)E|lroYgaq9Y*o9DE_s4WhQ^D&QG)-0>6W6 zlsfLhjo&GQLi?c?j*`0M56Z-+`A>j@Ybb93M_rqtd`xwC( z=3Ma&T7Wg_#}VynBze^N>|*2wOv%E(LtHG8TmG&ZJo|V43fi6U3{EH$KX|fy={Zg@ksm+D=i|#$&-43Zmy!{x<2r{- zEi=NkRPKMC4>OAoj8Z;G!qG2}BZl+|(O4e)2Y26xEj%?jS!})U==J|Ev^$f+YojPX=`G~eAyub_Z zn79%A*@iG`E513*c*)A4g%4&o|Nl(qr)(x@&|jCUR96J&8(HTP<@oHQ6SmFvehWn@O`6rdW*_6 zBD3`P%v7s*rA}}GM72y0z8sbtNAb>RCEUxC5-V574I{yk$eX>YvxmK^Gn}_hN2L-k zubEJ}62jF3EuZ)DPFFNpBecoh*|0_q%OTmS<@{{bvOin3d^Y<}E!V1Oxo!^cT)T3= zbpV}(9*0rggq+OD;R$H`l^mWDzf`RUA8IQ<G2j79*}J&@wM-Bm7k=JM8kFYEw?MS*~i(MvWt zg4FKXyW5d$Vr)XL>oQFs63y?S6zO+5b+!OSltapxMDDN~jOmndS>834pN%LYig8wW z^0LN3-T7dnJT{JZplAK@oWiM}9?$zbCs0|OSNHE6&%LbaisNW4RO8zN25qX92k4Wj z)~z8em>9)~3H;`mmrn$F4>KmotrNH>W)||mUBFwgI8$Xg<;_Q)b!7uH=E&5E$a^O= zZ;9+bk*A~;67M!0MR41OreZ3kVy%>1J`t|G9VcYzM4ksr=b=fw32}n_NkE?^^6g2y znWNx)YEvG=J1;*Wt4#)Xo-M~u=HIcF{%5A}>dfz*&X+UUE}w4zYrmAw-v(=6HZ{Q7 zQ-LfNYp*$tPl5z_V;XP6zL#H3gIL)q9X{SRC`dXE4&6!e-{}L#@lSY(uVk{xOg;pD zTqO-JoB~A2=|0kuhQCrqxQ>&Vq@_R_j_UXs1`fCWR2xNdaC~A}6hy&{Q}_Up11D%H z&20vJF5L8jDpPgxkEjPzRemM;!_4P53b>6ipX@S=&u}iHMz7|9T|rH$YfT>gD;qY< z1gDU#X9Lv5r{yEFd3vqyN%uKIS{3c4!GhUE@44Th$=~Iw*}Q4OjZBbkigTwNIt7PR z@-R&Qu&g?pCnszkBIp)jT?D0?ygd>NeII7;Ofb1Bn%KWqV%Tivdwgkcz5|56%%972!A?|A($rF(=ww zbEx4OkzK)DH6w=*K9bx40(WZ#kiqzzbn!^jB~UT>kP><@Y>9RV@w&YXw@7fdWqI;gqqPR0}pa#W7cx% zJl-*Z6K8NhV+H6O2ncrD0b>AF#@s7#{~a(BK~Gv&fD`+Us0m>nPB(I-W&rfzvg3T- zrn(@YIgD1gID!@ge{2Anuk2KO2C{L9737rE zpo|BnW34joSOhvijdDkTMejmzq)px5BY#`KYk3JIuowcz!b{XNz#-H5KyYWI1`xkY z=lz4`67L9|LPaf-9X+?p5c zR}gBTw%To{6zPe|CWcu@2C+&#f(N|&u5;vLJq8;OH|q7FKmA;NDS8r1ILP1#mLb?- zsXIs0erF!*9qn-az%#Q;4)1^Iw4*<$5#|-D<3dHW=Ee0cHr>`xbj#o)@CAdIjEfX9 z3E zVa#Qa;wKpO$K}yCfij?kVs|UuCc_ug3(*QfSz4%2 zmh?roxt(nN&h7OdjJkO~@q|`-i$YIJy~SKlE4?K~C!WO$2P0it&O;U=T~;sTExm8q zGQ9-8giK9ufnLmik9p8(i%#f~I_>(1CoIWbp9%so5ipCg_>R03Af&FsL^3sZLnKy! z#e_kz5qy-=B2r$^>%WlMaipG-sr5}-=n03oCvFjLbm#$DOspV9ub&x@7V-C9gXt-K zl04x_p0s|;M!Fk-XeTY=FWfKmRH8|tH^>kPcr?rqPUs>yrcHfOxNifDtql|wN;%b6 zDvOU8G0NEJ0v$}VjfV<$9E>WS)XaDn`7Go^Z}Ip@d`$H;!$1M{?6-KT7npg0yQ>g} zmT|X>o|Bm;oSwN9X&jt78q5Xl6W{WL5v!x);Otr4EE%cC^+@tW8USL49v~AxX7TQ>mmerm*LXmWd3+t zf;XNdS(Gxi;ww5)nG}9O3LjA|P!GzD0!pObP`_b>`v#g(9&ADMlm*UJMU|ktG(!Mh zUr!n7sh=SL1{5Uq3sjb(HyYt-q^I;-rl-o2i+Lh$#Wm>#@o|LvX!rv6II!M$BaFBB z97qY27Njnc43W_I5Qh>Pqe49ADlsaGnGhKnX9|ehpVVNTTe4d*j ziizHAMlr{b%c&B1mrRnojYjn>{TXh$&28lGRxO*}-;kDV1^|~!^=HkbPP5Hsv$@q* zHuY8F1?NGL5`vHF4BduywidNgc?mc7O)g;g*s7sR-Hfrb@NOBMOX%H-raVTM4JMhx ziv}F+&>;dc`_HlBUNiK)erV{sIoB)V#W#W?8j5mGOR8SWc%&PcZybY*E)W%u^|$FM zm=-gm;!~`scpEX<(jb#XMEx$BH=3%t6)%XDH>2wLLAoYYx|VUb_e;#lGKMwd^NNIm z>qV-LHp{6t;Cz9eV2bW&$UH$Z4?EWIbR(AtjTkAZ_aJF^7)rpIN&+L&6TU1nZIq|} zLbsiF1Uu357DBNrCzA5^_&c#zJN_6>H^|T(PHJjUz!8VWHCf8BNV*oK3J|ggwI7kCMK(R|T1v?osWFn}@Zo0Y_tboXe>9{tMIG0zCL=kX1qA_=*2$8Kv z$WH->ra3kP$%>9?iqHd8@6e~HcTGhRn7+_IjR1E^T-mh?bG7SUQktkGlJcZ0xx+94 zQt}Nt`UFcP2nv$*nknlcpdjnPGoaE!*26@Dat9GgYAqNbrVJx}J{`&Q$+KnOFqm8kF$thhJvvIww+SW*8Q9aWlr47NVB48f+ zJ%Q6(5yzcqEXw@$)Vny66sb2b z8-x#sYGgImG?Oz$(zrtgt%|v!H=%(nJ=v)Fyr(MdRO#r{IT)3(y+CPv#?S_1^17zi zqbG@0P#pN`V2@q7EgU-T62o1%y4O_*ryL+c7Hm^?L+Mj|8W zi0fYog@(B!1Q0+6Ek@~4(zS}GhSTIKlJfiaxU+hM0q19gng}-AhEYqXBqLYxW?l#P zqE|@k-e?!6t*}{Wy3`3fNGGOD^FsJ&0Gfmw#w$9al0q8bfk)7mhmnnQ8~_?H)`TYM z4H#Y=v3}P)0UT0<6s6Z+=y476#Hd+&few+ll^%VDuAL_ZXa(KEoL>Z)ffk05wH!6f zqg|zjIYB+e#1AN@s@z}Whu5u9i!p;S&6vT@pbD0gYHQB2aM38fcCd$c~!80ssRqR0i$P1NkhF4{s~ez3Kz#w28(8AK;%QCV~p^ zBR0`QARqD@T0Z3qECWO;X>JkbpafBSaEKAKa)Z?nt!#8nSdC+Gw5*t%IV;T@tV1Tb zRY#{G)9Nz+h&K|hlQap(iOK=Q;0{Wqq7iH#Q zZD}Z8@B(ASo6rr_###+x$~L`*9zg_1KY)NBY_NW4{$SE{Cn{>EX4cH}G|0THjmZqK zC^pL75TAkhN}a`Bf7B~h7BT>wBz2)ewjj9N;Xq-RzZ(AM46B6V1YnQYt`q5!CmCN~e)s|7fnR}a4$r?czTz?(=#fu;h{ zp*L7)T-JuQ)0}h`BnEt;@HlK`0y9nCOF?U@EGai}swOFe0C#n0AnJ4l;1N$S1=I;| zpdAr79Tgz6ge5eNc+1BPNoRouZTAKtMJp){nLuzcj|U?P=D;DCU$1V5Y+%t@o1)IcZ1iHLn!pGp061rl@#dP+hd6^@kh z!_aUrGPDtB6W$E(8t!SPR8r{b=*}eUaN2~Z<%uNf0j+{Eh=rOIr$@?NYha|&hOQ-7 z)QXT!tyfVq1wzmoF}+Gdjv49-u#o(KFT^l05NyW*+w6gYKpqS%I2%Uy>V-^*DHk3^ zIaniy>gPrMkcq(%P#M9=1v(#yVUW)!L!{AW4&(})*H}>c1Be48Dz7(`9UWo>La`^N z3^~EOlTJeR5Ysv7(rS?@Oj&7WUbyGd45#T{X@vZnaUC}nfGdgy84(R zDh-IvBdVbdf_;M#KH`QxWd}1_K;tU~{g}BJA8C@%HWkw%eVf*dmYJ3fk`3?Izi$6> z*R~12h z%r)++QFAJ(*h6Y`W@aShV?KLybR(w^hZ-rH;x`eBvge=7DX(bp@A$1OA zsen3%w1ahBn zv;*Nn?N!uYO7-oiPr6b?_R2uBV1>bUvHxYZ3(T)*7<|*J2im|u;jRWby5@$CNCawz zR)o@^Bo=-cM%{FRYN>AY2GW3}qS-+fyhj6J7@su?+Bpa3)ofma*>#eDtNv7i7)3j+ z6^$bS6ix6|JrOMV8&^n!iqLSW*;&KZ^i5}32t{wfYT~S(Cr>P#=pdOMqBF}>6*331gPzgB3l_pP&Ni(*>eQ8dVRC{&YkDNtN)gk%8 z2BY*yz*On|hOE7bH?O6tZNH)#X@t<>W!5Hg?*lxfX<;A!89DAzLiyhoib$N} z3^Q<(G>JTdJ?Kt{3lBSS|QQxie*7@s*J3(m}!Kn5hg}~+mgqyO_pndfGCcrjH`j_SKw+Oy8>5(%|fh#0KCM- zL)*p7X(jN-RT))-70C}|a{thJ>dFwR;(CpSM-c@IPzF;l!=5Q_ks<6Qw8ct8VIl1G zhE+yinlT(XP&dfXHNj0)?O5kZSgb&U)ws$~XbNOKHKwna26?Aa6{f=@4S%MI-&l9x zy%z=u3YlcthCa1-6$-34z@xx`A*-KAGjot4y4@MH8*DvZi5js>1<*A+aqLfP>#e z!p0_;C_z@a9JsfM1}_QVNE`)HmB`G01-Br2A!j>i6%UwlK{_TJr)_o9{~iNS(hqaM z&Vf6JAO$j2r*i4+40WxX1Gq648aoXtOt-@Val)}mp^%CS1N<4&qY1Y0V6!GoPgzKY z(iJ&qKrN9Pb7kCs2F->M?OYW>prct{6y8xu6UAL(IMYadBc>xr`6TwFmL3XGATEP! z0Z*9XA7OE%gd)Qh$e;vy$cf!iGy;6(7^B&Ya`%|}lj;73UPeU_Af@Kfad5H*XO+!> zqgPq$q|=g+hD?Rd0dY?fe3A7mB=KJ@o%RRe53@GrkX9RgV28BJhutD8zF;JLx&qpf zvfydAmo}n2%=H^ed9hxuvv{HA%dMxiNhnIFyX?Z_t2a!=Ac`qvGY3Q31Gc2|kfnkj zQuzoFHu<=5BON`-BEbW{sRm@(g|*kfVl}-f?R9H<6OwV7-Z(>e+u+%V))*WZn286d z6&4Cjt1%vM%tP?&H)MotFd?mhTSLjfD&aK^{C2kanu=Eh1yZgHuZRnzS0`Tc8DT3N zWTv{qv54r)o6c`Tfo$-nZmKAhQtXN{EaC6ufWbF>>O+rq+GMjeY}ln^cR9e|@huO! z3pdXGT7sZ7B%#W<#xfuuH-4o&+K8Esyb&tvGG!q!gM9EVuT^f!Z^(pDGG?3Q05y2Z zNmLSgW1k8K+$~{f+7iemZsqhih&)Mi!^AK(Y&24~8@n_r6GO$7T!eX!ETgefa zKh^qS2=(15s1#rUKrlq44c6-e4N)N5lR}SCBPo=eoTkPx?I{oZpwAi~Y%I~Tnwh@= zhcnrO;i<%rgK0wso8{s;F}P#Iqry8wP6U)7KZh4wgJ^`@8nkO^nJl!uO&LL73D8)5 z>PBubjHH_fF^H&$p`n=Kh=!l&BEyUe&`5U}frg=44L2V{aZ?b@i7cBzX4XJ>Zi#OZ z28?VhL7IK5U|VMs7~! zE;5+~I59xc*rS*dG>!mFC^ssQOM5y2*#Vmp&Owe}T}2!ovwpRYoQli{H>P81ri&yN zTtD0eDG}l7O6(ZHKGX%?@|ar#twM<=liG~?QYI*!2wetlAjCnNWj65I%a zKjxu{{j-paHv>u-Ox21LN{go9OU(>Zni&O@+TjaSLyQJ~EvITViY(W`qilUKZbZiQ zL8zTm9^M6OI=E4u4ZnzmDELSiH=XMMHbe%VxS|Y!LG(i20u{}OzZ9f?r|xV5^A?(* z**3z}v0WZc-JqhT07-@f()h#!1nD$GF1>cMAlL^AAg=NPF3qFGA-)_~W+kk?ByML; z0FD%o=DLK|UE9EZP;rsDBzRj&$YoYUsx+8?uu}fkK)#pnsPy4X-~&Gul5fB%LcbPj zl>PwtT35ZDJ&$+mXf1+Eu_sA8!MGX8jKep!qO2K;Pccj&3KRlwFe8`>DXIug0WW0& zq-G31{ThdYt?LsMhfPXc#~U3UmTNUiggDg>pB4&Lw`OX^h;vhmUn!q`2}O^5HLd-@yC(U*J5G zneX>}iKBs8$0;UV9caeQTcj7LixD;BJIYr-mx669^CCq^Va?c2`4q#B?MTvNQ3vjP ze7Hy-a2=SsFcIn?*f+UYHRD(MAh1c%tP}_K56V|c0mfXJv5&7yJUJfU9CTTsDvX~* zrD$q+9H+^c{XEGvV}fc_eTSF!q-?t%=fHC1{rh?2x(BIpq*)n$W~*!owS`NBr^!Y8 zd9y@wvM5Oh2n6|~g<%2U{C-}?#!gGuVE_+@aSx;EC34hZ-nw}~nc5eJ?hGWh8~I3* zaI!1WMm7f(KmsQN5AaBQm&XqCn`)ni@520{D&@o>FZe*cI#kwyM*gev<|9ylaDU67 zBhZ7{7qa2ke9$d>0^x>6?o3R_Wpanm_j7c+YBe)ISb$Ab4z^LfTP1?^6Vw^C} zQ@(XYCyZ0VMAG|=ZIo}`@To8kb;!CC#+yIkL*R-|%Mb&`31bRY`8Kl8cNq04IpsSX%fjHl!*we;6XiGG;fj|w zGT{vHWR-mQ48P4)amyyTvOr}YoZ(HYR$S6a_V6C~HmAwUXK-wAnoRtj)76`geb3vs zs)UnO=~B%APMUa1p_%YZ^^d~23Le1LFTV#TW-0RVGQe`0e7_9mBB%NHmSIdR#qa(B zmqFm`$P4^9e`~Y?fn23_7bLtjd%QLHdInutN2_>H&2Q7-rI{PsZA z;lK0otbFE0{tO-6dhQ~Qv3(_%Uj*Y=A$wfHlvl_Zm-r3nu;dcI)qFINE&jkw1xMtR zKXBYleW@?^|G~d=mY`R<P3ek((D42^W(ve8AU_wMZK-JD627^xDbcokM zh+V=&zg8;PPKxWu+UVf6I_D7VLsV%yHiZY z1xWqFMLQNzjyxkm8CU}!#07I}BE-bV(Z3^;RJ74d_Kp<)NIIr!q7x{sP?c#O0qss6 zjYMeHUWw)!`d^I_ag4wGyIdYEp5;4Aa8r?J;@DjR(1yvlNYMfw%bC=;188VAo+U5G zh-s`$PKy<|ImW*&7Apsq3O~jjF<%Hh9u`R=^$DmCiW804a{u%=5hvJU|C{lmwjD(` z)fDT%$VMlMg&eDWLv5US_tzDFSif!V$1kr>Vf?U7uC6OChWs3Rf&8J4*eqd{RLAkm z2R*_QwHG?M3#tLBy}p5i;$_nhgu@RjEh6w!?do^j{rDaCd5nD^U#u_E9V;#Yu0JmH z*B30ld<(=rk%d8f4o5yGB9YruL_=Iu_fv|v7mq#-#A@8m5Roc|$Bf$yU|6@@tXL`Y zQ$;d6=zlL&gmcK(4{s2uH7geZBu|^SukD@LNIZp$?4NEVT7X98H4=0|m;AVqSPsH} zp|Kbqcj{dXMiG7l%se_=&zp#m&K<~Bgg>E)xPj`t*F>~JOW!sT_oJn5O+`~j!75b! zQI2RT-i%*M%>?I^M_)>1dNXlnpw!f6;&qN2*;=Ftx}d9nnmB@+AKEq--TBtdbab^@ zcw=l4xxNz7Odg%aYs-DjMXMTRH2Dl5dB?%V5qh8g5y17kOl~2Dv;A^T3sJ~t7s(DS z#jRi}6I+Uha8~wAOYsin7Pb<%(tQ#P_eqqs5*;0zwklYsw-$ArE8oWq={)Ly*5a1G zI$N3;j26w~@OqmbL?~i}Z7Jzu6wv97bn$4_ir>}_-bE=pWQx&Pqz##32rhTkGej?f zJ?KL|nm54I6kV2Itq5dZUSMPJ79<+gUBEwy61Q9O>mhukQR z(hWwv+XFAw$!FV(I|0~_+d~=0%}r<8iyLbJ1RVOeVf(wTx!zPKDYuxmgd$6TGc);t_ z36GMGXmn^Ve9mJZB5tl**9wEU)KtKx!f z#zM+bx-mBE>D~!TT`gg58(k}IOVu=E84BUq71~Ug8LWrje=xqMmeo%^*l7Czht-UO zvVB)^h@F&)-Nem6fqS}%ewBa0fgJ1*_|~XC>L#k%*d=-3HbLrX{hor<)9yV*8rItX zVowpyQt6f(tOrDCV?4}L5vjU^OqEv1fH=4f58R2fw3kp<5`N!H3__cC^%gJj(W~W& z-l7gaxLP{;h+AtH(S@lMc1fsGxUX0~*+;0~u@bnEywAg|x_?0*@i1a`*~Ep&PDi0qBYl z=yJN6oEz(CrO3vJyHiw+FQBmqI#A1_;^4hkz;AP>I0#Nq?JkjlHRyR4rKQ++pSTTckTO6m#jOKG8zQ^h0b)BE>2tqm zkH?hz#ch;(;C}IZoy{jOE*d(5-{-*ffW`O}S;%OdiuoUJ! z3Gh6XBOM$~*48 zBX4*@B%0TjBS^uxBzrv}dSgLfd%_fhxOuy#Jp6?Cy4GKGbw(b_618y8(r;PfZ;a*n zaz3jjam!K-|HL8U1{POBxM=-gG`5p)Ve;lD!KX`P!c!u6v(m(;#5WAneQKz}s5L_s zMjak1wh`RbEod8ui6frTtI=5KuleBjDR6C}<(}XMXm|79MW4SOZ}Vqpyt3Cb5Q)qD zvz`&taXr*n+3Y!yYq3DN`Z>`jzz$=d7aiC=g=^4rxH9w=JH!PhG%JaLC5^ST6jB*aJctFmmR#8aN~{V`hkNe4g$~wv721r055ma)!M|>#*d#h0 z+>HV+3sl>zeoPb7X{W&#tK7sfMy1c-QP4jtf0pZW2pxCJqdB5Bo-;>_R+LO1Egqxi zYoo;zc>2S~h#q7m$h&d{-S6>SuDHozk!W$Qn8%jN`^E}&BU2c}u%2XH+wsv@F@t>~ z?;j_ut17mB0+455APDm=ruQ?SVg|qa-ySFS*{XhtTlDA{u^>iI0(R#Y^5|q-<+Xeg zHXjZil;gf)FT+~Z&NA|GNnntYalPN9&@_4+6PgC)|Bn8G<$pXV z^Cyd&uQiBX)n^~TcrCvLGjQfj-To&#PcgZscZwKEAo^p97>2bT`jS}G?svj4%L4kC z-mPE#4y6M4U{c|vCNe-YWIE&=?zLGh`@Sr0yZ@$%8~@T=m*z&(8fXN%MEqc>t6VdQtgF?s`+Q!rzJynha= zE$|4);8*F`t;w-IdQy@k(&eBz|o)+-b(U9;D&59~T%%Wv&^-}#+4$oxX_ z2>-1_{#*#+$lV~T&lSBgaz8|G70LuN@=#UT10O~32=jux;Dw81gd#r5zyMyID{jZ! zzMm`Hc*M>V69G#9tMi0|Rjs%lU4Uv#eH&Nj)s&yi7x`p3KDa^l+ah1 z&$N$2x4J+vYWyBlySCC;4C`vP|F!qTZcb1gRt$cyM6N4VlR8`s2?&UOvJ6aQ(Oh|E znV?^am*LArGkUgLPE5mp&vF<(jVtCH1Jm#-$8F(dAR@qG&XfN4MK@{z+XZ^;6>BBa z)(AI!Y`Q``PlMXNM$C$tPPlH}RF5U>xl-WwVmHXAR*GI-{sL52P}5>sY*Wb2ug+r0 zB3cpfOLcAQdQH&z9{`^KU7S`uKHi?@kxoVTZ{lWfyo1luoNB8q)v4gJ@ za=;dmEKh9_d9YB2eMF7`zx+r@?kuI5lFzQq$KrX0`+eWuZW_7YZdXQb-yI?c{?t7? z#A8vR)~D?937iC`rHL&+vNUP0(K0iqej?gXV;_GiYB|hHrsbJWO|q-K6M|@oe0is8 zIBu7CD(ci0YnH~2EppPXYd0*v+$FjaDC_RNDkzVBra;-}b8!}`*GIDB7hR{v~WQM#W)cTnVaUxNr_eW3w3j+cbY!u_an+)?o`77;&tF~Iu8i(8Pq z#*bY{{Mbd3Jn=Qcpbs*6;H(%VH=Gd9+Rg}Om$3&~Yx(*&B8`3N-}Q~iWitJwcmj^Y z!js}zHc>|H!V6UaWHL+C_*h z*N(U8{%t>qYFy;yZtx$yAneZOXP_h-PWXjh<>sAl7%}3iW}7KH^a5^NqB6AJIAC5V z_lMc;m(N}j!@N14AwMdlt}(^Rp(a8aL_MoPhiY&Z6^llLxK^`}dV-&cx}qa06}{;d zA4LZ%k*zL^A;35} z@3L5slKnLS4pccwaA9gO2#yp=7YQ7t<)dVb&35~Yb+#v<%r{`Ru4(I3xV0cP-u8E6 zI#z;s8~oEtzrbrf)Bmr8s@Z`oWVV~DPO%00K=_pH|Eujwz-zj?{?9#k??VQ1MG`XK zL`V#gn1@n1S{+eJsSYFvVvLwo zzTevCp6e#`|9=1HOYifnyZ74ju=d((uRRcrzcG9z>@%3=FUthcf!YVLDa4cQu16Dnhuk=<3sy0!iPtqi5V!bl(0Y9qFB))V81 zX>3_1sy^t2y4|D>{if-N?lv7kQp-IF@H~YnPk+P`La|j z@89xeQRV%%pB4M6u^DLcPSshL>ZP#Yg(g{Yv`O_m@5bK6^#4n(UZO`WDD|a+He3 z{%j~B8$tR7vU6&2k!T;pqFVg=U(5Z|gUcN(a)Q|SxK##y;bl^*M+?)MrdBmTvimN|fjfsLlFW+L33m^rSSwrx6wN;4+EH(}?;a3X|;) zgUwM_7_lvw1*zFziR8bmf#O^+>!p_B{oWAP9Hf~R!k*$%*XGlD(h=(dd!a9>O8i zz~(sAhvPm6jprxylh8#!g2jt-5iA;Cvc4O^LYkD3 z`)sJ|Y3CtqsP4FI;xAbWxxS{TV|#}QTO3~HeSl2MMEgiapCNWcvf~)KJ?!kP zxX2}OYX?~O^j(#ph zs~IW=FUdNfxAK9F#DHm5A5j>?NKbSe#N*Xr<$G`raQ=&A*n!vA|Hn5h^)D{>4XvuEURBIo~Z3JZwc5fj?p+cNmo zMl9X5C&#lM>bdLKzGNM%-d=M6eF)vo-FOh;juj%RF$=O3iPnu-JA8qATw}JXwqq^A zsNm;xE=j@RQ=B`6263Til)&28nt4MGA1e)?+h}BcLm9ICQ#caX5GqD^6Bg?0R!l+_ zDQYA_vinUWH(`^+x3fm@(W zkOZz%03e|9b2#f|gs`0xN1L&PRwv3wF1Rl;1@MeaA&kgTqGxj^zoGSgOBSjb%_BZ+ z&f3>73Eowt;v2%!f&~U*kYTjBh8aB{M`KMiY{BeJ=6Igf!UXI(tK}Z0It4I>DxKAG z;7RBfY$dg47%~rb_YHzbO%6sA&IqETy0v8UD40hXceP@ptH8}U=3!>FXgLOXP3gdz zQNZmTSY7%YTL(6=Ua?yjO-mozq$?vAdJSBksDrl&b9795rpgyV#E z$zSZ?FE*42gRSgmguE{5>FiN$?Jd}Ub*Af}e6`@V*wm4ILFV{JkPJ$2^AUES`Y}Y% zBMg~x`_JOQqwF1QjQ8sV?)TGe=YmdbAXC?tiJzZji^-h(6srr<`QcM6)>3UPH5SG` zPRYJ&6_=l8jWR*`P#HoT7#hW)2{go9HAzi^X2Q@Yvn2HM9=d7cMGsMF?oj4h#HDkF zxIokeF@hliFgimQ2kVB-`>{5WN2%!0?;Jwq*#WFyqU0VD9+j-&W%pQrPXEo$a7VK2Wt1a}hh3R0|oaZ~UBbMmAKM;eSFTepO zuIIWjKVVrB6NOz_pq6deuXbfk!VCU11{iaF$qxb?gamLde1M6TZ?{z2TJggi7Ho{U zDD4Cyn1c?Bw{Uf>_3b930&7)V!*zDOSN?4`)=_@=EXiV-iiQ*ox?`e0BT~AvG<1dh z$OYEj7TaM`_u%81cTk|(U{4Y&AS~3xE)y1FV$=QuEZD@B6GmEY8E+k7HBIcJa##Uj z)yWTUFEb*A%p%O4#TvrgMf-%Xht2H&BrL$h7Tg8aTw>jk z%mG3hnVvTYi!rgc9s6A+r3_aS=FV^jVPR&-BEryWBDe=@VZGznFS_?&&w=Hy?}2IV z;IE>%2kUFiowi@-J=ybcU*3~N*SvweSpH|`brrI6i*@K>S-%I^} zN^E?NCEH4ot9;Dgg1t~6BDfb@=;`VwUH9~2%bQSG2%a(u-WJ}1cZ9K%?1vYp?0!#U zbC@>3@W78XsUsb%qr_(Q#$_+E9PZ6#d!}mS)$e(h=t5GMTy%XX(y1z4^dEAQvy z=_d!guQTpNhQm~)Gr$m*iEDk?HtjdVzPca#`Kb~bjfwgq(7Ejru~s_c%jh{|nxr-T zlnhIkQpp8Vx1L|lg)Xt|Hqt9jW>3VL+)dtRgAPRje_-3?KF0IRL$NVhiZhSk?5Y7Ah3 zE|*})8`t}@$lCD0ShO~@R;3#*w6`VCM=lmekrZ^Mmj|$Vl-NKdR*J+1vNoZJL*Hh{ zNn=%NIu(-JD4Ju5EP?8%A#U_%5t#@`r%LtTNzX@0LOO(jU6~~&>P_fdgwkj>_H$Pf zN+X|6yI|o;C}|Xp8?ieGC5DhvF`+Uk^oOO5eu!{C3N7z}e?w?B zLZx7Ffl!$f6hHFT7uH{3tQesqQrY7HCom)EC-H~FElQtgB~(AVS>&f;?B-72zhn?= z0c{$sNFbu1ho~5$(;z4-=T6`6M7L~K1G1K)=OjUL4B%{uIUi4Bvn|zf2_YKydBkE7 z5yM!p^VU%Is3mkQ7Aq)36i)EK!~q}NZL;HT6D~H1XNR+gv@(i$N4!0p#X}jrZ@6Up zXNO}V{Y_X$uw?;xX3~hr^kO4;?g$o#0H;S_sw|RDyGF97Riw~49pzaozDj48uq(G` zG^?&^*~^i~E%D_T)>_M6ChfjsS&Wuz*jtWeb+tUho>8 zr0F#d_AF_4HXFxoSTqL(x**~vu!Rrh!eeNHMWK7RpsTTZ?n=WUW1n6XPp;sBDYt85 zi;_VuQ2ip@a&dbCdr`}x#LkQ7CbA}|)N2#jEVDBHlUP#Jzt*6q=&CAy7`g;UBuqLM)X9{K_7v8o z>Al@bqXq9K}eBC9WOap2Nbv7G}fPL z^Tsr+cad%GG}fawZhKpCYllQmNx9LoaD{6`=yW#7vR+J|&KgmExzpJP6lvfL=;K<= zVu|GoNLp7gI|O`n7Mp_1{+Pwui+5+RaCPSzv3CaRL(279Gg;?A^Apl-l}J0TWg1_R z787T(Yzi7Oi-kY(2q=g)FmP%`K8i=Ond})Q8htLWY^iib(Si{79_}*sJm`Uz7HXm> zTWD=9M$Tq7Ew?0(IPlEbEY-AQFa3~~vmV4IRoZoZ9Gk!>q=Nl{B3ao+Ig0G>;5%85 zz0O`$_pTSoZ=f$>UVfcTsDRtWdvBoGmTnS7Z?Jyk+2l>EF=6(46BOiuYjas2aceGH zr%pQ{-kHZ@>K9?e)W^+IFM7$^N5@q+UBM(ym&)>8ejUNR@inf}d8`}Gg|wN^-fAwx zCJm#D%pH%vBj1J>^C2?L>y6avshqrvlx~s(VCG3uKXghI@8W(M^{1d5R?j!kumD~6)M(2LH66hUeWZ=g`*o)MiFv#{DI4v{$Or{Ef8c42;T z{)IQF4IGPQ8;HfMN3HC6w34~E%Q7D`46TeUOW0jgIG?!y>EGK~2^VRC)q>|V!P=_X z^8_w5Jo?l{1i~ssr9*SeachOnmCwt9TO+rdT)E^@INWF=_K+GJw~P@XmGh{L4vD-p(>x2zf{HCh9urTgi4H3XO2=+6!p?55lhCGWE6 z;J=M7B3H7&r~=B%2yeyW68zMcu1sMyM;njOwut9ef^rs$i7Q#Ns*A|63LHON$?7&M z5mYiX9F;6amL$NukXK`7v_`jhQM{HY5h)w7wQxiDtil_B@3_*Yn@3XBcC!%%+y^q7|q5G|Jy-x2(OX|lhb=q%12-jZg z!FLeXgCnT><#HW7;gfZ&Yx~phN%DM)I`10Usc{)rgRt9vr&`r-tJKsTq*o-bn$X`E zUbK{t+{kK2ZryaiJWorMqOSv9-?+T3=qopg%=IiHa1kYdoAbD*qtApLY1?Lr57x89 z%y(qkwnZoc{7FGX8DMIBjp61a>B-PqQREjup9`?)t0)4uq0CmZU@~K~V6MCreXW@h zB}CjuCKU||4L~vnDH%=Abk)tBg#Lw0-ze)2O5$zArvXAbeLJOu-NpdDbUD0;T6{V^ zXuDdfSLJp!fp$)XgI-b)P;S2i-6TCzg?i3rg}6amLa(AjdIZwI={c(u*=Y|gpO zqU9!5CxoJ#EiZ{#HXMj*xfrvFB{pzZeXvqTAIAAF2Ii^+LVc4Re4}uNf1CYA{dalbEf)y^A zY-Zg;vfjUcmR$-rWOrsW8|Nd(3$b=E%@=am%hb{zj5w78`ESGf;@2ED%M2%( z>uXzBQ}XzD3ws#s>5nb!F@GFxa8ZB{&Lhe%@jbhh)omzmEPw$Syal~Wyk)m66cM!4 zJk~Va#Cuy=eVytr|A;Bz-3qWo@H(VOhv|v&g@C&95C|&>LdZ(DO7RUxvh6JszS~%{ zI))tV&E@ zr{-j;#WLUNwVRb$;Qhx(IAXE;ka%Ga%ZKTV`523`%ndtG0o8`nJ!l|1edrE{9Lde< za?4W;$GzmpU5*a_2=7<4T#_a0+Y)D>4m+v6-gu%N^>G*Pu1xQifBG37Yc zsV5-b8;vF<8d8qb5xK`%K;wJ9INA-0_jUQ2aq!3)T=A7>BhJm^SUa9L;!OGq zCv7r+I|brsq!*orQG{#NXJKBl+E&RMnihTb_rT-yZ^(F0)qnc|=0?2l$K)3t7`;do zgicT%vINLn0>-0QX2!LolUZ2PHB`D*HHs7O4jdw#E0#T2y1L8$%Ga{&0%Z?(UizBh zvi3z0a}u)IwIia-Nhq{`Jt77ZzO+DOon*nm4r4FWf)+6LLfsr;|4Ft}E&R$k=@gE} zR9QuXWJRI)<_uQs*S-|~XBqBC7K%sDLUwT!iZy3heZLuW=K&vB{t{tT+YE8`EDKTB z7K&fbvcdlMXw*;g4iIMgIhH_#x%wP>;HKDr4pU&+mrK5d44F;kYK{4e9=S4CdGX&u zYv7t!mR^>#j{Q1@K26aiyP+1gpR7K9ivD>4iqH_8?UE?^mc>18EC6j#x5!mC5u`g= z$_Yci z6jO?sgUr8*S+csmP$d6=_Fq>hCjY?t811>SP@MSz^X;ZW;eQ^JA=)wHJlYpcw)H%l zsOA)kxCy-f-BBM?5Lg!NRn7K;25w%U^A9D0!@ zTdHLlREjMbX3G*MFR_m@3y8nCUrxh{tZK&+#SyLGfBJe-Dwhx7O#$dFw!iVm>`}F2 z-puxY=MP>}wWDMI$ppuGy+ldZxy(TXlrp=$d`{I75)1PZdhg9Bhv-?#>Zu@;DW$9n znMX=l1ergUvQRRsUcqV=W}_?6>cgCL1#JU!S6Sm~i;jUJ!t`7i zAd1JYvS&%XrQmL~U4?q<)(5Bdtz7v@!D3QxZNJKb;-s&9k__I*f7o>9-|G**_KVaG zD)J6D1hbAn#f__sJ`la?M;rioQ|$Q>N{+4K;*YE;DemaFk{w@U#M5rJH%06X3z-_;a zRX151qNy`CF~UGozubhz9^~};EtCr6wD}fJ-#7}F+%~AG-EEK_sHoR%wCKSCG4(cU z9`w#}vugKUi?vTpC70 zZ)K2Rj+H1KJu*^9!t#AbFeBXFg)?y+A9N~(1WOoy2Xp2vvGWd_t(F}Z?f=7`tYK`D zsib}))m6?{Li`7U)eZ6Gf7pO{mrwyY!{i?d_y;i{h#xL;0NF@(wp#T4i){-ib(a#0 zbzNd5BI+(1qMah2zr=#OEYoC66%t+?!;{Mi4~*mr5*`*WKb<-ZXqhfD{T^tr)wz?eIR;d>DN7lf?}-x^a)UROzgq}^-0v_h)u!}nYIyDEKWH*%8#b@nb)8Vi7rOot+J2-8=%9d;nB-cp~t#|&}J z35Qnt9e0SYXb};DkpmWC zcx{HabuOrdS{sX&66dzsyoUw+)EdI$VKfQhaRE7Id>MJKj4Vck@I<}9l@P>0-D9l< zySXBwes(X|M8(6v`VkI}Mt}Gj;T()vT&RX}6(- zNV%>)_Y1QU9znjpe4(D~!i@4v4xmAgppg z=;63zi~%tzoY%vEaIOyLAIO35TqK`P1L1TeABTb9>}KcC@41Mfj0oD37#yFQ4lZKI zayz()A=f=RQG9@^l~L%cqFoH% z6X2kvE>K&mIDwxfF{gK3ZnZQhI7*G_3+74MK|}9uxZyYj+~hmxNdMeX(W)M=t1kUg z^sUET0^t(~LJCnsAj}qT*5mCm3m|UdyUq|E!1f2q5GIe8Qe?OCk!Uh8(y_bJ$s?yE zT0qiPfJ@jUH+pAS!6Vl#)nu4>uT)=3EkF~1Do@7Qu@fL3i{+a@nm@(z_AnCSczZee z@kI&nch~5j6306>!srL>t;P19LP`kO>6?7gPV|A}-4p>|UnZ__HI9cixJ(1jh#;*- zc!O8S;Ak)xuSlrRgD~J8tIrQ~cM(Mv*g!d=$a6cmh~k>t!9^6;+)Twq6l1W_ef!Bk6Z5kqT z3!E*`wYm|ksEXW(6|<%rVK`Xpi8!X43BV`I6UindQ>M+4k=si{MsB1EGIAqTk&zqm zLPl-`o70XNW=24=+=vgz%M;1tsBhmtvP1w&Ov@5S`*&y_; zm}-9#^Sbg_To2vZl|N$XD}L|Fk60Rt&!2(cL{Xy~f2fNGNhdVU7&m6@xb%dvqecxM zFeD{yjPf5ubFr;Pk_>}bY;i>ThQ!*x`jZ7Gx)<1#5lQ|}1fV2yJ8?Pz; z>c;)Ws&2emKc$e{6pRmLHOkl+rsoK%#O$8Zlw{4OOcq_b^JekVip-v>q9`1ui63H$ zQpW@LhG&e3iqir`{q8(KeAAu#_ca6mVO12bf3CzeMVDu}PrS0XicOh{Y@SyYB@w2H zCjy5epHI#YE$}&Z=dB2YaD|$6d~&Z5J|Zv!h7%#E&DA{!!6Oi2iGgP zkN5525&e{YUN&VYvisg!QL4kN{GN>nKZiWhkoJ3kU_hsgj8PddW!|F6G#)OJd-CeO zbG&UJf4ng3^GTv89?zc{-2$0w+YuZZi#FR2}>30rS0!(g`S&7Xzo%<9eet7@iA^n8K8q3*DW z;urXAd;!2YK*0u9l_gLS}lt%PZT?Vhamx~K1P8O4u}8*;V{GJXt!CR#6%)R-vgD-5{O*F zmDoCePc8;sr#pBEUyEQbiiHjy>$0vM#cMV)BS%#=N^RovFo22lJ-g7In5`xz>x3bx z!_zTmH_jL{Fvg}Ni#F+egpUW$GlI_>jp2W%npQPPX;Igvyo@w^13=maE&@mMHV=#z zSxZrVK$H{&odoa)NL=h2&0|}bUc>`q0J45CSE0G7{Y{+sV{H=`;Tb&Eo>#AY7oG$D zz>0?OGI$xS)>m4Q&}IN0J1ZBXau{wzyE(DthozaPSt%1YD|LUVbH?znShPr-At*h9 z+6SSqCjJcY)+R3gJ%;C3Z2NAa`Z(_Irzq+5ZORA)%>gtOQR{f9@BP_HmRYrd$ubAM z3aiO75l^zsrEv3%SxJq>bCGVE(8u#gmo;@ff7-iSLz@zboJTbjd&ct!HM^lWGoGj2 zU(FR0xHpe(WK#x-Efe@%?-%2ZA^%3a*fo(qQZd3qqWvUZm!CqYVIpl3uM^O-u}uj? zPM&r1m`KLLyPv3)$s1S{QF}5^?-iC{Q+id1PzjCk*<=jwDM)*W_+c`S4ZIC&#Xhi! z@K<s$-t$Fh%pFS*cRB4H{I^_l||ud~3n$5h^|b&d=D1SYYl6#4rb?@SZg#5G z;_v(3J)wl~MF{5Nv(kz}{eyfqyiv;sQ;RGui9f9Z&0?6W*C^qu)A-X~zO4)v)6jWr z8oy=ns@=xm98Wrr&fudh6*)&sfvyVY``S`ht)7Ji!a(uwSrs@;o7uc~vZ8$WkWJ~2 z%F_(i0pQu~mB1>nh=|~E?TBywG@GyTifnI_a(s+f_8Q35L_3SmU*n0DEZmw47(+hS zloiN(s^~L^M^sEmQB8L0#NjY%B~Ic@%nHYGy@uj41H z<-BB&>{*x=F?tdY603$l=uceF=a)-J>SBm~2W)&9ZHS6)gs4a&#h{eoV=7z32aSaH z4ewiiaC-JZC5(aXr+Ij|vJ{yNLoFJBOWsFemVLY@59miyZI_Mw#c~a@eItLl-dFIW zd24j4OXSn9|TX(Pv`jU3!L*%(vZlX3WyzgO!7@C1ahrl6@|c1ayOWYj>rXtJ3% z5}}*`hHv=v#QRfZPGbI?uCf3~s)63lD36i4*}y)}M*yg?cA1f8RYtT@fJ{ z8MTGFWb6IIU+VrevB0JU3{D%7KAe^q%9w#RWgueA!y1d0Tb?;r0#QiDSc*K-M9Eg3 zP|00_)I<4esg(M_ZG2JSp!=E4oI#>mE|d#+`pXA*M&omNQY9CHR*RZ)7kLjAqkXlS z+_1{E{;gbIZ_tLpHsuL4?UR6~08axt11h zwd%M{aSV<7gSft(r+LSx8G@RgCQ?4&A(W+-Nu)(GQ+5L8Q7CEb3{yW*4h=-DavmNtFIB8cZy;2Es424e~GNE7y* zJVPxxEf($Mud1OVM9p2ivG?#1MjuTa;e2`*|I4CwA0?jN4aLv7QDW6@zAh|zxJ?-h z7zLOH@GPHO=(IH`uf@nt2fs(1X*Qtw?fyto;f9_^cb0rYgthZ?c>KP5r; zQ@%%r|M2Q5{-q3KK6?*U@l*$z?rlH}v}TlL5ko%aD=L{eN&cHP2Blcvb1(LX$BO4Z z;T@hEXOr3r&#tHh`ugirh&#ofa6e6X0y$)e+n?~5O0E!b+rA}8ox1Kpi_c1^2XWGV zO7i&foV4;AE1I7}9_b?PGajwoxlTkcx_$PKC<`FCOhB8-396~Ix|>fwg-a_w)2h&L z8vr0_fY$1s^`*i6lo*xA{p${y2*C#4vjH@mO?)Q=hyW888}fL!asm>GetjREWUzv3 z2-gbWnMEb^8x+|M0(T&f2}t`x@Mzw^Ow!iX9d4)|F@JcR?R39ZG z-61020Drhj2_7!-S?w$O9Qa2>kbX*?DgP)#i#f=nGL>v(G7`<&S~I%a6OV$si8rd? zPdNGi-x}HWpzXVe@NTa@n9a%-5!Vm$hXT#U$%6vEnpsZg!=LjPRqr7VW7lQ0L##Q( zqeB(}M{$+qFi9?X52iQF9EbQG{_#b?X*cFOm^9m`jU1mcJZ+#I|Kn2I+Lb$SCuNoN z7YqHgn$44ehD|e8$chm)-ip!_F;fupS45}AH1R)y zlW=9?Dy9`re;?otJpBEDH&XQZGxsY#mz)uY`C6}XgH7d*B}er?s2uPa<7S51a#U=7Dp%59sdmR*ft*gLfGQ+EP{5v%tAZ{yC?oQ zaB^FUIFn(%0(c5Q_9=k0k%Qs^T~oT^6h)5n;91_yKeLGXHe1mzOH00@|0*qiDEjPU z@KTdj;8vfsb;H@YbZ+b``@^baMH-DG3G3yOX~BJ8un zq4O2}D~WvGc<+1L75zLRTGIHo!+gF|^qUeZeVx@g^oF8O|BC$j=Y0O-#4U=xkgzI_ z$+evIPM%Wq)e_Ch8Ck38#M!SY`gV!$=abBVcnrelqZn{LW%@t0T7iB6g)zjp zdeVyAOzGEdPZ?{Mx+lA`=#VkDEIuSQ`D$RK(da_hrJCoDlonzv1SDeOrexPaZ$e|ZIbWd(dy1^hMO zbpdAjb6{^sJG!Pr66~bCGx3hF+X3_=A%VErT);fQe9^{FOQ<*F3q!7$3zNtLdd$?p zsTuZU*t6Y!V!odi)N(IyQlFb)ahM5bJ;ut==iou_lQAD)5e>bglQ(*N6GS-_-%yOWH@ojrq!wB#T%_gpG+($&xscxJ9AhO z*Y(6rPMm`{S@2s3AWls7x5T~-Xx8`C&<3dyN5#|)yqox}2lrMd0`b>gP){5cXZ*F0 zx`|&J&2O4SDrSa6M#})poxwG=Dpt!oA}UC$8Mp#Y!!V>ggT5=C4ALTN5Fycz`kP>t zm=vVd@h&`O^wF7PVqK8d(px=lY+~0sE-nRW5o+_}LaU{9%zO#%v~j2&HTc|o*l84a z=9CSbekNJ1Hc&VI9`H4QwSe~l>i|SMRGjsI4S;s$td=Iz^_!Xdj4V@XF20(o2t%a#4PKr%oT2uA6 zlj6HDEhu3#dch>O9N4!2wgLvEq^Ar>8#~E9YJ6(Opy8t?z^&&gn|LN%t0lhN076bb zB_0b$N-Iu@$>Caq(4td@e)}qzNi9eKA7J8{BhON96Q6}^W2*H(ZESeI0V%n<=pK$^ zg2`vOxBpzYlT=KEL(+25DUlwbb@jgp_bA|<0YrosPm7`m?HBdn8Id2UH74`7NUed_ z!868I%S2HasRfHi?OH^8(~X29tf>?e-|tGx#Qy|NjM>Ch6yBeXFoudfxUWHZoU?0> zWt#pZh&I9^;W8wlL*3k(vHX;KT_{d=PMyuc_OiGaRBl0{8*< z%%HjpSDb}W+Gy2p$!F*Wp0wi2yEyB-_A}=*G1@-$$;9(Ed3^L$q(p~VOq|9grDozZ zMm=$&7EgRDHF=mA7psN#G2?8j5XKuNBJHZ_PfbGIY2ry0aH2rZJaUX~RpT^&Z!-=) z%u*DIK57%E`T3iU-@2-vcwW2^r?q_9bZ-WF^DF?K=qOi!;T7-;!0UMw@J0o^fN+u0 zSPKwuMryvIT79jGS5gVs10sEFl(uDkt-9N7ui-YRzUHqcm59mpwT>{IpVrsBEh@hx zzG$G~YSJZfy#YMZFNvlNwYK4NE`hlr!3{8pBIrjflwg;5y`k2@|1!LYv;GRR7R>6G z#hHd$^pmE0;$_1>2`068b(h)JZtMZTNf{0|)JOhIKHvnl8}N~{QzI?ZQf(W;kZ{oy z0l87}^hO#Jv*NX9{PRi;&yC(jtL2r7OYvG;?? zqoD-p0h3y+H%w}(!9R*$612yn=Kv?60CA lK)(9!V;O`GKioinS#W2gSXzc)QHgh8d@N}=E-x)Z{|9D~_|E_U delta 62628 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 diff --git a/res/contract_abi.json b/res/contract_abi.json index d0c58c2..304215a 100644 --- a/res/contract_abi.json +++ b/res/contract_abi.json @@ -2,12 +2,12 @@ "schema_version": "0.4.0", "metadata": { "name": "contract", - "version": "1.2.1", + "version": "1.3.0", "build": { "compiler": "rustc 1.86.0", "builder": "cargo-near cargo-near-build 0.11.0" }, - "wasm_hash": "4ktUwgeUSJzwJmGUPoAvSuMa4cbfYuRH8iq5FeTEdohW" + "wasm_hash": "8qN5Q5wxyzZ7ik1SkANXnPKk1AXb9MzoXDzhkD3tvXzW" }, "body": { "functions": [ @@ -544,6 +544,9 @@ { "name": "burn", "kind": "call", + "modifiers": [ + "payable" + ], "params": { "serialization_type": "json", "args": [ @@ -797,6 +800,19 @@ } } }, + { + "name": "get_paused_features", + "kind": "view", + "result": { + "serialization_type": "json", + "type_schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Feature" + } + } + } + }, { "name": "get_steps_since_tge", "kind": "view", @@ -807,6 +823,27 @@ } } }, + { + "name": "is_feature_paused", + "kind": "view", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "feature", + "type_schema": { + "$ref": "#/definitions/Feature" + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } + }, { "name": "is_restricted", "kind": "view", @@ -845,6 +882,43 @@ "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", "type": "string" } + }, + { + "name": "super_admin_account_id", + "type_schema": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + }, + { + "name": "denylist_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + }, + { + "name": "pause_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + }, + { + "name": "unpause_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } } ] } @@ -859,20 +933,58 @@ "serialization_type": "json", "args": [ { - "name": "postfix", + "name": "holding_account_id", "type_schema": { - "type": [ - "string", - "null" - ] + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" } }, { - "name": "holding_account_id", + "name": "super_admin_account_id", "type_schema": { "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", "type": "string" } + }, + { + "name": "oracle_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + }, + { + "name": "denylist_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + }, + { + "name": "pause_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } + }, + { + "name": "unpause_manager_account_ids", + "type_schema": { + "type": "array", + "items": { + "description": "NEAR Account Identifier.\n\nThis is a unique, syntactically valid, human-readable account identifier on the NEAR network.\n\n[See the crate-level docs for information about validation.](index.html#account-id-rules)\n\nAlso see [Error kind precedence](AccountId#error-kind-precedence).\n\n## Examples\n\n``` use near_account_id::AccountId;\n\nlet alice: AccountId = \"alice.near\".parse().unwrap();\n\nassert!(\"ƒelicia.near\".parse::().is_err()); // (ƒ is not f) ```", + "type": "string" + } + } } ] } @@ -924,89 +1036,18 @@ } }, { - "name": "pa_all_paused", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": [ - "array", - "null" - ], - "items": { - "type": "string" - }, - "uniqueItems": true - } - } - }, - { - "name": "pa_is_paused", - "kind": "view", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "key", - "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "pa_pause_feature", + "name": "pause_features", "kind": "call", "params": { "serialization_type": "json", "args": [ { - "name": "key", + "name": "features", "type_schema": { - "type": "string" - } - } - ] - }, - "result": { - "serialization_type": "json", - "type_schema": { - "type": "boolean" - } - } - }, - { - "name": "pa_storage_key", - "kind": "view", - "result": { - "serialization_type": "json", - "type_schema": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - } - } - }, - { - "name": "pa_unpause_feature", - "kind": "call", - "params": { - "serialization_type": "json", - "args": [ - { - "name": "key", - "type_schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/definitions/Feature" + } } } ] @@ -1188,6 +1229,30 @@ "$ref": "#/definitions/StorageBalance" } } + }, + { + "name": "unpause_features", + "kind": "call", + "params": { + "serialization_type": "json", + "args": [ + { + "name": "features", + "type_schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Feature" + } + } + } + ] + }, + "result": { + "serialization_type": "json", + "type_schema": { + "type": "boolean" + } + } } ], "root_schema": { @@ -1204,6 +1269,25 @@ "minimum": 0.0 } }, + "Feature": { + "description": "A contract feature that can be independently paused.\n\nSerialized in snake_case so call args read e.g. `{\"features\": [\"token\", \"minting\"]}`.", + "oneOf": [ + { + "description": "Token movement: `ft_transfer`, `ft_transfer_call`, `burn`, `storage_unregister`.", + "type": "string", + "enum": [ + "token" + ] + }, + { + "description": "Reward minting: `defer_batch`.", + "type": "string", + "enum": [ + "minting" + ] + } + ] + }, "FungibleTokenMetadata": { "type": "object", "required": [ diff --git a/res/contract_abi.zst b/res/contract_abi.zst index a8b6826653286a62d3c37afce7a822ac198be574..d3e0b16e502d5489d9ea905ac00eeb91f9457dad 100644 GIT binary patch literal 2428 zcmV-?34``1wJ-euh@DFS8dInaG%#(H4#2>`z`&@3!4T}e-BOZ~y=kbV?Wf(9c{U|& z>bY6DrSer&@TC7FC-Z2HvNXrG&YBtcxK6!Ur0;oW$>|-r3N|LD!XwQAAcRR zJxpXp)=Y*rX_LraFWT*E0$Lyj3kVf@(pCJmH0t)8!Zh9H=*+ES4il%N{Gcp#&n)HU z#Mo+z(NtP1Bc@UUJ=~nOYVX2XuG68Qh)f^^H{T!*v#AVJL?}=-zuhyPB&QbBXBiNo zXqDT|sY}_O4Cu+um3`@XJQEQDk%ZT?-hSOZNFEizNr$%>rmXny%GUCic78fK~ zn_j*oA}-$m>&+>%O8e>WmWyHOt(@G=r&Urm5t)D<=}Ah!z}sWqO((_R%~ivF%zk>@ zp*)PemS;}V?D3cKc+hddb`3;`21-a^0*9lq`-qi+0tiYyh!D@D0igHH>1a&3oAx4( z#(8s!Jd?;X!3BuWm9oS>O8`L;o*z~!l}Snu5HKRb0f9VXO=wWA+Sk>0LR_~CA<;3i zF|LdD>8mN;f-MzxB3e9;4nm7vFPL$$c?E3sC=QBb0dGT+p!0wrW)2w;gt55!Em|rJ zDxQK09$h1IGKKqzT|$Kh^$i3JoU;LIjgUAn0qINblEAEsKqMrfsXOzubKBk~cV${P zSM70FbK9(#Z!5d$>tcb^veTf!#cJFxeO1%wm;bWXsc+QWnaXvWxAyp$Y$-*}$~YL6 z)?0m9JJ0uZ{t~V8%V{x}xxjElandCYn^?AMjqX=FU&9=Qb_|!{%%Yg~B3xXuv_yTu zv@&}Y{#b5U3lE)6r<3h8H3>zY3oLc5#EZjq{I2V!{I!nXG+=~-GC_f$;=sevF;L(H z20W7nN*a>e3j|F`A;T#F9~1%jpqNMisA~|yuWJ~E*1rCJY8voC;R0ITWJ%^4-_N4k zom)XpTxZS+TSjSSgAd%ei$+)R(qqof2bD92fjI}vuOP>QJmJFjTkx99td_|57`fFM za}J)&wfB=-<}4CNePWi9s;~9c*Wqb(4i<-Nb8`$2NqYq!l?p-{Ct-#+7pY7zO?!fm zXVQ-0`k6=&dM1;M3Pv!IBO*G+bE<+ssPdB(I%TRxk|Zg#22vOZgTZ*9gmdZi@`xme zK@;c>8+SX0(z zrtNU1eSr7@x9MlfVoTPF;{J-p5s*G;EUd+jGvScEtJF3K zOE8|d^7WtsV9gRHL!lVvgwmTpdXK*uRG6}%-DE0_KxV?%JbhKU!_OP-3E~ORYd7fUfT*BOWZr){KFJx?XV&-Jq4eGWs_u&#^=1(Zf;tfwlG9cej$?%8C>20WLU|Z?4z)pgG?w7fiz7-DRVk3-O0k72*lJlk@;~F3lLJ6fi&>m0^0l_vD*ezpMibz zlsZwxtlFlU0t0D@!oyBJqhyZ#!n7V!lU`Zah^yxOMDC!)88(6Gh@ycM5?2&WE4>Qf z2;0d=l$Hj}9ID(SutL|~I2iEhyayFSw@wpilhC%%-26G9Zx~%N-q|_olwg_Cld;9wp0bD zpx=nu9hlpWi*Fo0=h(qqWW8DO1T=vy8<9NjJ=i5-C8AG4)R6Q8qYKQy~$= zBrg{tc&vRkEued9yE&6IS$9;l>;yBjsg0d%iXIyOW@*nl7qG`~n*cyRNdfZyJAtl1 zB~hjuTx#9tlUFh6J9eW9sxj7yBkh=IZ$j7JSsXM0I`jbsp%$vqo zrS;1fz-ofZmN<&heThNGLZWf(kXlNJuxVj#;PH>LEleF`2scU9c|MD_sDweHx6Ll4 z37X3yD5HaQy=q8LeCY&`GKkO$YHDTEQmOdJvJQ{MvEc3tqI85%MO3e@-2dSV)17QF uCV*s*2Yc!a-4DwpM1r!Gqg^XS8Z|In2;VQw?0ZUwiHiFyjQ~HIGb61&0hs>) literal 2243 zcmV;!2t4;FwJ-euh}A^^Do+RwFF6@$R)AcdK7vT zFZno7`Xe@7b>@l8FpMz)(E!r`*#Mq#oe6lDyrdI$uq_-(&RDHtu+^ib-=fpU9)1~? z>y6oCQ{wR>87f~=VbosbSFKz23|wqpigEqcqo9^;B?P@l@%sFG0aJ};w%Lc9cMzXPf1Jb}0 zVH4|vgz4O22|MeO|8RR=a>qHFAL2ysO}PBxM!xy%989DaOJ#&AD;CvgwBd5GxHI() z;V@0xtg;e`SOBE+|6VNF`Ug(wV&V7Aq)0@HMD#&*;?{3f@@tqTO8KXbjErR1o>XW+ zz$KI60Ec1WaD(i)v1jUDu~FvN_%Gt}{AR47vQ5r~vw3*8Y#KtCY5J6DDseA=x>h3) z3)5jlS)fvOca@nFb198cBh^I@82(xkgb2I9_r8a|%u{YQh zv*kRVv?V`gABLUA9LvV;Uc5XyPjMo~7-&H+dn=>#w6lZ!?0GQ*a!LH)S9J$Y3oGv1 zijr1GQruwwn;JadhWG|Y4;5gXET_N#v-ynWUrlbsj^Y-fP$+b=7;J21?Dgy4-9l;!J=E!lx@cKd!ZOkfno?m zHUN!1Iw^aEot~Ue$qqS#Ac}GBEZhwKxg1)}tlAf)vYb`Bl=RiKB*Z&`UwZQD?wFlL$ZJab29u%D8&IuhSn zUB<8??|Q(&rrX!(i}qoajvcU^28|gd^$9siuz;3>G5Q?H6=*l?4H&=T3ETbN-RZN@ z0)W#Ap9ym)3gQEViylH0=~og!#KhhzN8i`U<`(ds24sWxK#^+VW;AucL3r8}^hbl% z7_K#%2$)_`z|8G6wVU+gn#o4=1|7UrIzd<|!@f!FHatZ)0_^sd@`Tl@$!f&bN^B0l z0BG~ewmQLc)1BI;NboevEUqfSsDzj>DJXcDPBGjRSSrwl8zhmzB{lj4h~XIY6)Ytif5)ym!b&=P&eU`iL}Mr z1ta}^Wg!)Kj@;#0NVBUb-Zb7a0@;F@3z{X6b5e;5yp*&k+WlQ7U*&%QjfoaGw>1Om z66$n$Y=DLnq7rxMcU^^5C1FJ)+Au8auc(9==V?mG=;x%@njF>AQE1x5$dett%Q2rMAv-OHVrod2 zjzJK(JF4B`d`kfnav1}=TJz|{45MAH=Q8+ciKy8LNLvja-p(_yu!U?fbG^MJ}!Cr|?HDDs0NfNdH%HvPeWHkIv%Q3PK#M~FA-@Q+$12N3gzL>qt9 zAH;y!wpLe{Axj9#CV=)U6=FZ#WuG&QA94;(dLlXQL;%|m+v$wqaPbZF;hGSHIQ9~V zEk$c&VQYBBm!C|8v+1uYxP3pP**Q|TU5IZ>KIhV`T+F=fGU0-OO$H(v-V?A(LRv&! z#lioR@#yA`s8HrhRMS%vOiW%bNPBF0Bn#-iJ8%A7nj$+#mT7C=1iGJ0Q4wTg312%F z<^o3fbrS&e>koD9KdI|#{RJhyeZD$)>h;Coks%DtIvHafFVZ57wjy-xVaLG&>yAD+ zBGLgxa(<9R+{9A+6ls9*5z_AdmRz9_8A``_rS~N;Gzf}g@>RN_wUsu-4P**`7SMpHk<$e diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e7f22fb..e8528c4 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,3 @@ [toolchain] channel = "1.86" +targets = ["wasm32-unknown-unknown"] From 4e1c71d704abbb75a261423f97346d62a38bf9a1 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 11 Jun 2026 14:03:49 +0100 Subject: [PATCH 46/46] chore: clean lint --- Cargo.toml | 11 +++++++++++ contract/Cargo.toml | 3 +++ contract/src/event.rs | 4 ++-- contract/src/migration.rs | 5 +++++ exploit-stub/Cargo.toml | 3 +++ exploit-stub/src/lib.rs | 7 +++---- scripts/lint.sh | 10 +--------- 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5b14547..78843e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,14 @@ resolver = "2" near-sdk = "5.26.1" near-contract-standards = { path = "vendors/near-contract-standards" } near-plugins = { git = "https://github.com/near/near-plugins.git", tag = "v0.5.1" } + +# Clippy configuration lives here (not as CLI flags in lint.sh) so it applies only +# to crates that opt in via `[lints] workspace = true`. The vendored +# `near-contract-standards` deliberately does not opt in, exempting upstream code +# from our pedantic rules. `-D warnings` in lint.sh escalates these to errors. +[workspace.lints.clippy] +all = { level = "warn", priority = -1 } +pedantic = { level = "warn", priority = -1 } +module_name_repetitions = "allow" +needless_pass_by_value = "allow" +must_use_candidate = "allow" diff --git a/contract/Cargo.toml b/contract/Cargo.toml index 3732d9a..de32f0b 100644 --- a/contract/Cargo.toml +++ b/contract/Cargo.toml @@ -27,3 +27,6 @@ near-plugins = { workspace = true } [dev-dependencies] near-sdk = { workspace = true, features = ["unit-testing"] } + +[lints] +workspace = true diff --git a/contract/src/event.rs b/contract/src/event.rs index d28efab..4a0e239 100644 --- a/contract/src/event.rs +++ b/contract/src/event.rs @@ -8,7 +8,7 @@ //! [events format (nep-297)]: https://github.com/near/NEPs/blob/master/specs/Standards/EventsFormat.md //! //! To add a new event, add a variant to [`Event`]. Serde maps the variant name -//! (snake_cased) to the `event` field and its body to `data`; [`Event::emit`] +//! (`snake_cased`) to the `event` field and its body to `data`; [`Event::emit`] //! wraps it in the `standard`/`version` envelope and logs it. use near_sdk::{env, serde::Serialize, serde_json, AccountIdRef}; @@ -18,7 +18,7 @@ use crate::Feature; const STANDARD: &str = "sweat"; const VERSION: &str = "1.3.0"; -/// A SWEAT contract event. The variant name (snake_cased) becomes the NEP-297 +/// A SWEAT contract event. The variant name (`snake_cased`) becomes the NEP-297 /// `event` discriminator and its fields the `data` payload. #[must_use = "don't forget to `.emit()` this event"] #[derive(Serialize, Debug)] diff --git a/contract/src/migration.rs b/contract/src/migration.rs index 6507bd2..edd124f 100644 --- a/contract/src/migration.rs +++ b/contract/src/migration.rs @@ -49,6 +49,11 @@ struct OldLookupMapAdapter { #[near] impl Contract { + /// Migrates the contract state from the previous layout to the current one. + /// + /// # Panics + /// + /// Panics if the existing on-chain state cannot be read as [`OldContract`]. #[private] #[init(ignore_state)] pub fn migrate( diff --git a/exploit-stub/Cargo.toml b/exploit-stub/Cargo.toml index c2cc02d..489a386 100644 --- a/exploit-stub/Cargo.toml +++ b/exploit-stub/Cargo.toml @@ -10,3 +10,6 @@ crate-type = ["cdylib"] [dependencies] near-sdk = { workspace = true } + +[lints] +workspace = true diff --git a/exploit-stub/src/lib.rs b/exploit-stub/src/lib.rs index 196e44d..462a04c 100644 --- a/exploit-stub/src/lib.rs +++ b/exploit-stub/src/lib.rs @@ -1,9 +1,8 @@ use near_sdk::{ - borsh::{self, BorshDeserialize, BorshSerialize}, env::{self, log_str}, ext_contract, json_types::U128, - near, AccountId, PanicOnDefault, + near, AccountId, PanicOnDefault, Promise, }; #[near(contract_state)] @@ -24,7 +23,7 @@ impl Contract { } #[allow(clippy::unused_self)] - pub fn exploit_on_record(&mut self, ft_account_id: AccountId, amount: U128) { + pub fn exploit_on_record(&mut self, ft_account_id: AccountId, amount: U128) -> Promise { log_str(&format!( "Try to call on_record in callback, ft account = {ft_account_id}" )); @@ -32,7 +31,7 @@ impl Contract { let intruder_id = env::predecessor_account_id(); ext_self::ext(env::current_account_id()) .some_function() - .then(ext_token::ext(ft_account_id).on_record(intruder_id.clone(), amount, intruder_id, U128(0))); + .then(ext_token::ext(ft_account_id).on_record(intruder_id.clone(), amount, intruder_id, U128(0))) } } diff --git a/scripts/lint.sh b/scripts/lint.sh index d6e3e78..beec0cf 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -3,14 +3,6 @@ set -eox pipefail rustup component add clippy -cargo clippy --all \ +cargo clippy --all --target wasm32-unknown-unknown \ -- \ - \ - -W clippy::all \ - -W clippy::pedantic \ - \ - -A clippy::module_name_repetitions \ - -A clippy::needless-pass-by-value \ - -A clippy::must-use-candidate \ - \ -D warnings

=mWX!D-O6 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�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