{
  "version": 1,
  "files": {
    "Cargo.toml": "[package]\nname = \"rockthecoin_controller\"\nversion = \"1.0.0\"\nedition = \"2021\"\npublish = false\n\n[lib]\ncrate-type = [\"cdylib\", \"lib\"]\n\n[dependencies]\nsolana-program = \"=2.3.0\"\n\n[profile.release]\noverflow-checks = true\nlto = \"fat\"\ncodegen-units = 1\n\n[features]\ncustom-heap = []\ncustom-panic = []\n",
    "Cargo.lock": "# This file is automatically @generated by Cargo.\n# It is not intended for manual editing.\nversion = 4\n\n[[package]]\nname = \"ahash\"\nversion = \"0.8.12\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75\"\ndependencies = [\n \"cfg-if\",\n \"once_cell\",\n \"version_check\",\n \"zerocopy\",\n]\n\n[[package]]\nname = \"arrayref\"\nversion = \"0.3.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb\"\n\n[[package]]\nname = \"arrayvec\"\nversion = \"0.7.8\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56\"\n\n[[package]]\nname = \"autocfg\"\nversion = \"1.5.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53\"\n\n[[package]]\nname = \"base64\"\nversion = \"0.12.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff\"\n\n[[package]]\nname = \"base64\"\nversion = \"0.22.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6\"\n\n[[package]]\nname = \"bincode\"\nversion = \"1.3.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad\"\ndependencies = [\n \"serde\",\n]\n\n[[package]]\nname = \"bitflags\"\nversion = \"2.13.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06\"\n\n[[package]]\nname = \"blake3\"\nversion = \"1.8.7\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae\"\ndependencies = [\n \"arrayvec\",\n \"cc\",\n \"cfg-if\",\n \"constant_time_eq\",\n \"cpufeatures 0.3.1\",\n \"digest 0.11.3\",\n]\n\n[[package]]\nname = \"block-buffer\"\nversion = \"0.9.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4\"\ndependencies = [\n \"generic-array\",\n]\n\n[[package]]\nname = \"block-buffer\"\nversion = \"0.10.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\"\ndependencies = [\n \"generic-array\",\n]\n\n[[package]]\nname = \"block-buffer\"\nversion = \"0.12.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa\"\ndependencies = [\n \"hybrid-array\",\n]\n\n[[package]]\nname = \"borsh\"\nversion = \"0.10.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee\"\ndependencies = [\n \"borsh-derive 0.10.4\",\n \"hashbrown 0.13.2\",\n]\n\n[[package]]\nname = \"borsh\"\nversion = \"1.8.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"553c5d846a6ba5150c65e3b1b8ec073bcf1abc20f9b7220de384a4443ea4e20a\"\ndependencies = [\n \"borsh-derive 1.8.1\",\n \"bytes\",\n \"cfg_aliases\",\n]\n\n[[package]]\nname = \"borsh-derive\"\nversion = \"0.10.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89\"\ndependencies = [\n \"borsh-derive-internal\",\n \"borsh-schema-derive-internal\",\n \"proc-macro-crate 0.1.5\",\n \"proc-macro2\",\n \"syn 1.0.109\",\n]\n\n[[package]]\nname = \"borsh-derive\"\nversion = \"1.8.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"12cdfe656708a01f89b451a7d36466e6fe6c414de0aa18fc54f864f6f9ca9f56\"\ndependencies = [\n \"once_cell\",\n \"proc-macro-crate 3.5.0\",\n \"proc-macro2\",\n \"quote\",\n \"syn 3.0.9\",\n]\n\n[[package]]\nname = \"borsh-derive-internal\"\nversion = \"0.10.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 1.0.109\",\n]\n\n[[package]]\nname = \"borsh-schema-derive-internal\"\nversion = \"0.10.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 1.0.109\",\n]\n\n[[package]]\nname = \"bs58\"\nversion = \"0.5.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4\"\ndependencies = [\n \"tinyvec\",\n]\n\n[[package]]\nname = \"bumpalo\"\nversion = \"3.20.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649\"\n\n[[package]]\nname = \"bv\"\nversion = \"0.11.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340\"\ndependencies = [\n \"feature-probe\",\n \"serde\",\n]\n\n[[package]]\nname = \"bytemuck\"\nversion = \"1.25.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797\"\n\n[[package]]\nname = \"bytemuck_derive\"\nversion = \"1.12.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6a1f896587b6f2c069c73d2f0913e2d590c3990285cd2f0b6aa02b786b4c679c\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 3.0.9\",\n]\n\n[[package]]\nname = \"bytes\"\nversion = \"1.12.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04\"\n\n[[package]]\nname = \"cc\"\nversion = \"1.8.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6651c9ed80effdc7db0ff72512157f901af5e3549e341e24b1dd4887d836d838\"\ndependencies = [\n \"find-msvc-tools\",\n \"shlex\",\n]\n\n[[package]]\nname = \"cfg-if\"\nversion = \"1.0.5\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600\"\n\n[[package]]\nname = \"cfg_aliases\"\nversion = \"0.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527\"\n\n[[package]]\nname = \"cmov\"\nversion = \"0.5.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a\"\n\n[[package]]\nname = \"console_error_panic_hook\"\nversion = \"0.1.7\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc\"\ndependencies = [\n \"cfg-if\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"console_log\"\nversion = \"0.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f\"\ndependencies = [\n \"log\",\n \"web-sys\",\n]\n\n[[package]]\nname = \"constant_time_eq\"\nversion = \"0.4.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b\"\n\n[[package]]\nname = \"cpufeatures\"\nversion = \"0.2.17\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\"\ndependencies = [\n \"libc\",\n]\n\n[[package]]\nname = \"cpufeatures\"\nversion = \"0.3.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566\"\ndependencies = [\n \"libc\",\n]\n\n[[package]]\nname = \"crunchy\"\nversion = \"0.2.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5\"\n\n[[package]]\nname = \"crypto-common\"\nversion = \"0.1.7\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\"\ndependencies = [\n \"generic-array\",\n \"typenum\",\n]\n\n[[package]]\nname = \"crypto-common\"\nversion = \"0.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453\"\ndependencies = [\n \"hybrid-array\",\n]\n\n[[package]]\nname = \"ctutils\"\nversion = \"0.4.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"03bb0e1cc970d482d121d9a1744999169b69a07470b3d644a7894e53fcaf4574\"\ndependencies = [\n \"cmov\",\n]\n\n[[package]]\nname = \"curve25519-dalek\"\nversion = \"4.1.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be\"\ndependencies = [\n \"cfg-if\",\n \"cpufeatures 0.2.17\",\n \"curve25519-dalek-derive\",\n \"digest 0.10.7\",\n \"fiat-crypto\",\n \"rand_core 0.6.4\",\n \"rustc_version\",\n \"subtle\",\n \"zeroize\",\n]\n\n[[package]]\nname = \"curve25519-dalek-derive\"\nversion = \"0.1.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 2.0.119\",\n]\n\n[[package]]\nname = \"digest\"\nversion = \"0.9.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066\"\ndependencies = [\n \"generic-array\",\n]\n\n[[package]]\nname = \"digest\"\nversion = \"0.10.7\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\"\ndependencies = [\n \"block-buffer 0.10.4\",\n \"crypto-common 0.1.7\",\n]\n\n[[package]]\nname = \"digest\"\nversion = \"0.11.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2\"\ndependencies = [\n \"block-buffer 0.12.1\",\n \"crypto-common 0.2.2\",\n \"ctutils\",\n]\n\n[[package]]\nname = \"equivalent\"\nversion = \"1.0.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826\"\n\n[[package]]\nname = \"feature-probe\"\nversion = \"0.1.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da\"\n\n[[package]]\nname = \"fiat-crypto\"\nversion = \"0.2.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d\"\n\n[[package]]\nname = \"find-msvc-tools\"\nversion = \"0.1.14\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484\"\n\n[[package]]\nname = \"five8\"\nversion = \"0.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875\"\ndependencies = [\n \"five8_core\",\n]\n\n[[package]]\nname = \"five8_const\"\nversion = \"0.1.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b\"\ndependencies = [\n \"five8_core\",\n]\n\n[[package]]\nname = \"five8_core\"\nversion = \"0.1.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5\"\n\n[[package]]\nname = \"futures-core\"\nversion = \"0.3.34\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e\"\n\n[[package]]\nname = \"futures-task\"\nversion = \"0.3.34\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd\"\n\n[[package]]\nname = \"futures-util\"\nversion = \"0.3.34\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc\"\ndependencies = [\n \"futures-core\",\n \"futures-task\",\n \"pin-project-lite\",\n \"slab\",\n]\n\n[[package]]\nname = \"generic-array\"\nversion = \"0.14.7\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\"\ndependencies = [\n \"typenum\",\n \"version_check\",\n]\n\n[[package]]\nname = \"getrandom\"\nversion = \"0.1.16\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce\"\ndependencies = [\n \"cfg-if\",\n \"libc\",\n \"wasi 0.9.0+wasi-snapshot-preview1\",\n]\n\n[[package]]\nname = \"getrandom\"\nversion = \"0.2.17\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0\"\ndependencies = [\n \"cfg-if\",\n \"js-sys\",\n \"libc\",\n \"wasi 0.11.1+wasi-snapshot-preview1\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"hashbrown\"\nversion = \"0.13.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e\"\ndependencies = [\n \"ahash\",\n]\n\n[[package]]\nname = \"hashbrown\"\nversion = \"0.17.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\"\n\n[[package]]\nname = \"hybrid-array\"\nversion = \"0.4.15\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17\"\ndependencies = [\n \"typenum\",\n]\n\n[[package]]\nname = \"indexmap\"\nversion = \"2.14.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855\"\ndependencies = [\n \"equivalent\",\n \"hashbrown 0.17.1\",\n]\n\n[[package]]\nname = \"itoa\"\nversion = \"1.0.18\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\"\n\n[[package]]\nname = \"js-sys\"\nversion = \"0.3.106\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5\"\ndependencies = [\n \"cfg-if\",\n \"futures-util\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"keccak\"\nversion = \"0.1.6\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653\"\ndependencies = [\n \"cpufeatures 0.2.17\",\n]\n\n[[package]]\nname = \"lazy_static\"\nversion = \"1.5.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb\"\n\n[[package]]\nname = \"libc\"\nversion = \"0.2.191\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a\"\n\n[[package]]\nname = \"libsecp256k1\"\nversion = \"0.6.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73\"\ndependencies = [\n \"arrayref\",\n \"base64 0.12.3\",\n \"digest 0.9.0\",\n \"libsecp256k1-core\",\n \"libsecp256k1-gen-ecmult\",\n \"libsecp256k1-gen-genmult\",\n \"rand 0.7.3\",\n \"serde\",\n \"sha2 0.9.9\",\n]\n\n[[package]]\nname = \"libsecp256k1-core\"\nversion = \"0.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80\"\ndependencies = [\n \"crunchy\",\n \"digest 0.9.0\",\n \"subtle\",\n]\n\n[[package]]\nname = \"libsecp256k1-gen-ecmult\"\nversion = \"0.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3\"\ndependencies = [\n \"libsecp256k1-core\",\n]\n\n[[package]]\nname = \"libsecp256k1-gen-genmult\"\nversion = \"0.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d\"\ndependencies = [\n \"libsecp256k1-core\",\n]\n\n[[package]]\nname = \"lock_api\"\nversion = \"0.4.14\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\"\ndependencies = [\n \"scopeguard\",\n]\n\n[[package]]\nname = \"log\"\nversion = \"0.4.34\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6\"\n\n[[package]]\nname = \"memchr\"\nversion = \"2.8.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98\"\n\n[[package]]\nname = \"memoffset\"\nversion = \"0.9.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a\"\ndependencies = [\n \"autocfg\",\n]\n\n[[package]]\nname = \"num-bigint\"\nversion = \"0.4.8\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367\"\ndependencies = [\n \"num-integer\",\n \"num-traits\",\n]\n\n[[package]]\nname = \"num-derive\"\nversion = \"0.4.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 2.0.119\",\n]\n\n[[package]]\nname = \"num-integer\"\nversion = \"0.1.47\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b\"\ndependencies = [\n \"num-traits\",\n]\n\n[[package]]\nname = \"num-traits\"\nversion = \"0.2.19\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\"\ndependencies = [\n \"autocfg\",\n]\n\n[[package]]\nname = \"once_cell\"\nversion = \"1.21.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\"\n\n[[package]]\nname = \"opaque-debug\"\nversion = \"0.3.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\"\n\n[[package]]\nname = \"parking_lot\"\nversion = \"0.12.5\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a\"\ndependencies = [\n \"lock_api\",\n \"parking_lot_core\",\n]\n\n[[package]]\nname = \"parking_lot_core\"\nversion = \"0.9.12\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\"\ndependencies = [\n \"cfg-if\",\n \"libc\",\n \"redox_syscall\",\n \"smallvec\",\n \"windows-link\",\n]\n\n[[package]]\nname = \"pin-project-lite\"\nversion = \"0.2.17\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\"\n\n[[package]]\nname = \"ppv-lite86\"\nversion = \"0.2.21\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9\"\ndependencies = [\n \"zerocopy\",\n]\n\n[[package]]\nname = \"proc-macro-crate\"\nversion = \"0.1.5\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785\"\ndependencies = [\n \"toml\",\n]\n\n[[package]]\nname = \"proc-macro-crate\"\nversion = \"3.5.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f\"\ndependencies = [\n \"toml_edit\",\n]\n\n[[package]]\nname = \"proc-macro2\"\nversion = \"1.0.107\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9\"\ndependencies = [\n \"unicode-ident\",\n]\n\n[[package]]\nname = \"quote\"\nversion = \"1.0.47\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001\"\ndependencies = [\n \"proc-macro2\",\n]\n\n[[package]]\nname = \"rand\"\nversion = \"0.7.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03\"\ndependencies = [\n \"getrandom 0.1.16\",\n \"libc\",\n \"rand_chacha 0.2.2\",\n \"rand_core 0.5.1\",\n \"rand_hc\",\n]\n\n[[package]]\nname = \"rand\"\nversion = \"0.8.8\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c\"\ndependencies = [\n \"libc\",\n \"rand_chacha 0.3.1\",\n \"rand_core 0.6.4\",\n]\n\n[[package]]\nname = \"rand_chacha\"\nversion = \"0.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402\"\ndependencies = [\n \"ppv-lite86\",\n \"rand_core 0.5.1\",\n]\n\n[[package]]\nname = \"rand_chacha\"\nversion = \"0.3.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\"\ndependencies = [\n \"ppv-lite86\",\n \"rand_core 0.6.4\",\n]\n\n[[package]]\nname = \"rand_core\"\nversion = \"0.5.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19\"\ndependencies = [\n \"getrandom 0.1.16\",\n]\n\n[[package]]\nname = \"rand_core\"\nversion = \"0.6.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\"\ndependencies = [\n \"getrandom 0.2.17\",\n]\n\n[[package]]\nname = \"rand_hc\"\nversion = \"0.2.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c\"\ndependencies = [\n \"rand_core 0.5.1\",\n]\n\n[[package]]\nname = \"redox_syscall\"\nversion = \"0.5.18\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\"\ndependencies = [\n \"bitflags\",\n]\n\n[[package]]\nname = \"rockthecoin_controller\"\nversion = \"1.0.0\"\ndependencies = [\n \"solana-program\",\n]\n\n[[package]]\nname = \"rustc_version\"\nversion = \"0.4.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\"\ndependencies = [\n \"semver\",\n]\n\n[[package]]\nname = \"rustversion\"\nversion = \"1.0.23\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f\"\n\n[[package]]\nname = \"scopeguard\"\nversion = \"1.2.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\"\n\n[[package]]\nname = \"semver\"\nversion = \"1.0.28\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd\"\n\n[[package]]\nname = \"serde\"\nversion = \"1.0.229\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba\"\ndependencies = [\n \"serde_core\",\n \"serde_derive\",\n]\n\n[[package]]\nname = \"serde_bytes\"\nversion = \"0.11.19\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8\"\ndependencies = [\n \"serde\",\n \"serde_core\",\n]\n\n[[package]]\nname = \"serde_core\"\nversion = \"1.0.229\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48\"\ndependencies = [\n \"serde_derive\",\n]\n\n[[package]]\nname = \"serde_derive\"\nversion = \"1.0.229\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 3.0.9\",\n]\n\n[[package]]\nname = \"serde_json\"\nversion = \"1.0.154\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6\"\ndependencies = [\n \"itoa\",\n \"memchr\",\n \"serde\",\n \"serde_core\",\n \"zmij\",\n]\n\n[[package]]\nname = \"sha2\"\nversion = \"0.9.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800\"\ndependencies = [\n \"block-buffer 0.9.0\",\n \"cfg-if\",\n \"cpufeatures 0.2.17\",\n \"digest 0.9.0\",\n \"opaque-debug\",\n]\n\n[[package]]\nname = \"sha2\"\nversion = \"0.10.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\"\ndependencies = [\n \"cfg-if\",\n \"cpufeatures 0.2.17\",\n \"digest 0.10.7\",\n]\n\n[[package]]\nname = \"sha3\"\nversion = \"0.10.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874\"\ndependencies = [\n \"digest 0.10.7\",\n \"keccak\",\n]\n\n[[package]]\nname = \"shlex\"\nversion = \"2.0.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba\"\n\n[[package]]\nname = \"slab\"\nversion = \"0.4.12\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\"\n\n[[package]]\nname = \"smallvec\"\nversion = \"1.16.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b\"\n\n[[package]]\nname = \"solana-account\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258\"\ndependencies = [\n \"solana-account-info\",\n \"solana-clock\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n]\n\n[[package]]\nname = \"solana-account-info\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da\"\ndependencies = [\n \"bincode\",\n \"serde\",\n \"solana-program-error\",\n \"solana-program-memory\",\n \"solana-pubkey\",\n]\n\n[[package]]\nname = \"solana-address-lookup-table-interface\"\nversion = \"2.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395\"\ndependencies = [\n \"bincode\",\n \"bytemuck\",\n \"serde\",\n \"serde_derive\",\n \"solana-clock\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n \"solana-slot-hashes\",\n]\n\n[[package]]\nname = \"solana-atomic-u64\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2\"\ndependencies = [\n \"parking_lot\",\n]\n\n[[package]]\nname = \"solana-big-mod-exp\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567\"\ndependencies = [\n \"num-bigint\",\n \"num-traits\",\n \"solana-define-syscall\",\n]\n\n[[package]]\nname = \"solana-bincode\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc\"\ndependencies = [\n \"bincode\",\n \"serde\",\n \"solana-instruction\",\n]\n\n[[package]]\nname = \"solana-blake3-hasher\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672\"\ndependencies = [\n \"blake3\",\n \"solana-define-syscall\",\n \"solana-hash\",\n \"solana-sanitize\",\n]\n\n[[package]]\nname = \"solana-borsh\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004\"\ndependencies = [\n \"borsh 0.10.4\",\n \"borsh 1.8.1\",\n]\n\n[[package]]\nname = \"solana-clock\"\nversion = \"2.2.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f8584296123df8fe229b95e2ebfd37ae637fe9db9b7d4dd677ac5a78e80dbfce\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-cpi\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11\"\ndependencies = [\n \"solana-account-info\",\n \"solana-define-syscall\",\n \"solana-instruction\",\n \"solana-program-error\",\n \"solana-pubkey\",\n \"solana-stable-layout\",\n]\n\n[[package]]\nname = \"solana-decode-error\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35\"\ndependencies = [\n \"num-traits\",\n]\n\n[[package]]\nname = \"solana-define-syscall\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2\"\n\n[[package]]\nname = \"solana-epoch-rewards\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-hash\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-epoch-schedule\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-example-mocks\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-address-lookup-table-interface\",\n \"solana-clock\",\n \"solana-hash\",\n \"solana-instruction\",\n \"solana-keccak-hasher\",\n \"solana-message\",\n \"solana-nonce\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n \"solana-system-interface\",\n \"thiserror\",\n]\n\n[[package]]\nname = \"solana-feature-gate-interface\"\nversion = \"2.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d\"\ndependencies = [\n \"bincode\",\n \"serde\",\n \"serde_derive\",\n \"solana-account\",\n \"solana-account-info\",\n \"solana-instruction\",\n \"solana-program-error\",\n \"solana-pubkey\",\n \"solana-rent\",\n \"solana-sdk-ids\",\n \"solana-system-interface\",\n]\n\n[[package]]\nname = \"solana-fee-calculator\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d\"\ndependencies = [\n \"log\",\n \"serde\",\n \"serde_derive\",\n]\n\n[[package]]\nname = \"solana-hash\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63\"\ndependencies = [\n \"borsh 1.8.1\",\n \"bytemuck\",\n \"bytemuck_derive\",\n \"five8\",\n \"js-sys\",\n \"serde\",\n \"serde_derive\",\n \"solana-atomic-u64\",\n \"solana-sanitize\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-instruction\"\nversion = \"2.3.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad\"\ndependencies = [\n \"bincode\",\n \"borsh 1.8.1\",\n \"getrandom 0.2.17\",\n \"js-sys\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"serde_json\",\n \"solana-define-syscall\",\n \"solana-pubkey\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-instructions-sysvar\"\nversion = \"2.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57\"\ndependencies = [\n \"bitflags\",\n \"solana-account-info\",\n \"solana-instruction\",\n \"solana-program-error\",\n \"solana-pubkey\",\n \"solana-sanitize\",\n \"solana-sdk-ids\",\n \"solana-serialize-utils\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-keccak-hasher\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79\"\ndependencies = [\n \"sha3\",\n \"solana-define-syscall\",\n \"solana-hash\",\n \"solana-sanitize\",\n]\n\n[[package]]\nname = \"solana-last-restart-slot\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-loader-v2-interface\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654\"\ndependencies = [\n \"serde\",\n \"serde_bytes\",\n \"serde_derive\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n]\n\n[[package]]\nname = \"solana-loader-v3-interface\"\nversion = \"5.0.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2\"\ndependencies = [\n \"serde\",\n \"serde_bytes\",\n \"serde_derive\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n \"solana-system-interface\",\n]\n\n[[package]]\nname = \"solana-loader-v4-interface\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e\"\ndependencies = [\n \"serde\",\n \"serde_bytes\",\n \"serde_derive\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n \"solana-system-interface\",\n]\n\n[[package]]\nname = \"solana-message\"\nversion = \"2.4.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b\"\ndependencies = [\n \"bincode\",\n \"blake3\",\n \"lazy_static\",\n \"serde\",\n \"serde_derive\",\n \"solana-bincode\",\n \"solana-hash\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sanitize\",\n \"solana-sdk-ids\",\n \"solana-short-vec\",\n \"solana-system-interface\",\n \"solana-transaction-error\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-msg\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092\"\ndependencies = [\n \"solana-define-syscall\",\n]\n\n[[package]]\nname = \"solana-native-token\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9\"\n\n[[package]]\nname = \"solana-nonce\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-fee-calculator\",\n \"solana-hash\",\n \"solana-pubkey\",\n \"solana-sha256-hasher\",\n]\n\n[[package]]\nname = \"solana-program\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210\"\ndependencies = [\n \"bincode\",\n \"blake3\",\n \"borsh 0.10.4\",\n \"borsh 1.8.1\",\n \"bs58\",\n \"bytemuck\",\n \"console_error_panic_hook\",\n \"console_log\",\n \"getrandom 0.2.17\",\n \"lazy_static\",\n \"log\",\n \"memoffset\",\n \"num-bigint\",\n \"num-derive\",\n \"num-traits\",\n \"rand 0.8.8\",\n \"serde\",\n \"serde_bytes\",\n \"serde_derive\",\n \"solana-account-info\",\n \"solana-address-lookup-table-interface\",\n \"solana-atomic-u64\",\n \"solana-big-mod-exp\",\n \"solana-bincode\",\n \"solana-blake3-hasher\",\n \"solana-borsh\",\n \"solana-clock\",\n \"solana-cpi\",\n \"solana-decode-error\",\n \"solana-define-syscall\",\n \"solana-epoch-rewards\",\n \"solana-epoch-schedule\",\n \"solana-example-mocks\",\n \"solana-feature-gate-interface\",\n \"solana-fee-calculator\",\n \"solana-hash\",\n \"solana-instruction\",\n \"solana-instructions-sysvar\",\n \"solana-keccak-hasher\",\n \"solana-last-restart-slot\",\n \"solana-loader-v2-interface\",\n \"solana-loader-v3-interface\",\n \"solana-loader-v4-interface\",\n \"solana-message\",\n \"solana-msg\",\n \"solana-native-token\",\n \"solana-nonce\",\n \"solana-program-entrypoint\",\n \"solana-program-error\",\n \"solana-program-memory\",\n \"solana-program-option\",\n \"solana-program-pack\",\n \"solana-pubkey\",\n \"solana-rent\",\n \"solana-sanitize\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-secp256k1-recover\",\n \"solana-serde-varint\",\n \"solana-serialize-utils\",\n \"solana-sha256-hasher\",\n \"solana-short-vec\",\n \"solana-slot-hashes\",\n \"solana-slot-history\",\n \"solana-stable-layout\",\n \"solana-stake-interface\",\n \"solana-system-interface\",\n \"solana-sysvar\",\n \"solana-sysvar-id\",\n \"solana-vote-interface\",\n \"thiserror\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-program-entrypoint\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd\"\ndependencies = [\n \"solana-account-info\",\n \"solana-msg\",\n \"solana-program-error\",\n \"solana-pubkey\",\n]\n\n[[package]]\nname = \"solana-program-error\"\nversion = \"2.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775\"\ndependencies = [\n \"borsh 1.8.1\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"solana-decode-error\",\n \"solana-instruction\",\n \"solana-msg\",\n \"solana-pubkey\",\n]\n\n[[package]]\nname = \"solana-program-memory\"\nversion = \"2.3.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712\"\ndependencies = [\n \"solana-define-syscall\",\n]\n\n[[package]]\nname = \"solana-program-option\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0\"\n\n[[package]]\nname = \"solana-program-pack\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b\"\ndependencies = [\n \"solana-program-error\",\n]\n\n[[package]]\nname = \"solana-pubkey\"\nversion = \"2.4.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1\"\ndependencies = [\n \"borsh 0.10.4\",\n \"borsh 1.8.1\",\n \"bytemuck\",\n \"bytemuck_derive\",\n \"curve25519-dalek\",\n \"five8\",\n \"five8_const\",\n \"getrandom 0.2.17\",\n \"js-sys\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"solana-atomic-u64\",\n \"solana-decode-error\",\n \"solana-define-syscall\",\n \"solana-sanitize\",\n \"solana-sha256-hasher\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-rent\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-sanitize\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf\"\n\n[[package]]\nname = \"solana-sdk-ids\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f\"\ndependencies = [\n \"solana-pubkey\",\n]\n\n[[package]]\nname = \"solana-sdk-macro\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df\"\ndependencies = [\n \"bs58\",\n \"proc-macro2\",\n \"quote\",\n \"syn 2.0.119\",\n]\n\n[[package]]\nname = \"solana-secp256k1-recover\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496\"\ndependencies = [\n \"libsecp256k1\",\n \"solana-define-syscall\",\n \"thiserror\",\n]\n\n[[package]]\nname = \"solana-serde-varint\"\nversion = \"2.2.2\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113\"\ndependencies = [\n \"serde\",\n]\n\n[[package]]\nname = \"solana-serialize-utils\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e\"\ndependencies = [\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-sanitize\",\n]\n\n[[package]]\nname = \"solana-sha256-hasher\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44\"\ndependencies = [\n \"sha2 0.10.9\",\n \"solana-define-syscall\",\n \"solana-hash\",\n]\n\n[[package]]\nname = \"solana-short-vec\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69\"\ndependencies = [\n \"serde\",\n]\n\n[[package]]\nname = \"solana-slot-hashes\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce\"\ndependencies = [\n \"serde\",\n \"serde_derive\",\n \"solana-hash\",\n \"solana-sdk-ids\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-slot-history\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e\"\ndependencies = [\n \"bv\",\n \"serde\",\n \"serde_derive\",\n \"solana-sdk-ids\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-stable-layout\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54\"\ndependencies = [\n \"solana-instruction\",\n \"solana-pubkey\",\n]\n\n[[package]]\nname = \"solana-stake-interface\"\nversion = \"1.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c\"\ndependencies = [\n \"borsh 0.10.4\",\n \"borsh 1.8.1\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"solana-clock\",\n \"solana-cpi\",\n \"solana-decode-error\",\n \"solana-instruction\",\n \"solana-program-error\",\n \"solana-pubkey\",\n \"solana-system-interface\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-system-interface\"\nversion = \"1.0.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90\"\ndependencies = [\n \"js-sys\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"solana-decode-error\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"solana-sysvar\"\nversion = \"2.3.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db\"\ndependencies = [\n \"base64 0.22.1\",\n \"bincode\",\n \"bytemuck\",\n \"bytemuck_derive\",\n \"lazy_static\",\n \"serde\",\n \"serde_derive\",\n \"solana-account-info\",\n \"solana-clock\",\n \"solana-define-syscall\",\n \"solana-epoch-rewards\",\n \"solana-epoch-schedule\",\n \"solana-fee-calculator\",\n \"solana-hash\",\n \"solana-instruction\",\n \"solana-instructions-sysvar\",\n \"solana-last-restart-slot\",\n \"solana-program-entrypoint\",\n \"solana-program-error\",\n \"solana-program-memory\",\n \"solana-pubkey\",\n \"solana-rent\",\n \"solana-sanitize\",\n \"solana-sdk-ids\",\n \"solana-sdk-macro\",\n \"solana-slot-hashes\",\n \"solana-slot-history\",\n \"solana-stake-interface\",\n \"solana-sysvar-id\",\n]\n\n[[package]]\nname = \"solana-sysvar-id\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1\"\ndependencies = [\n \"solana-pubkey\",\n \"solana-sdk-ids\",\n]\n\n[[package]]\nname = \"solana-transaction-error\"\nversion = \"2.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1\"\ndependencies = [\n \"solana-instruction\",\n \"solana-sanitize\",\n]\n\n[[package]]\nname = \"solana-vote-interface\"\nversion = \"2.2.6\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3\"\ndependencies = [\n \"bincode\",\n \"num-derive\",\n \"num-traits\",\n \"serde\",\n \"serde_derive\",\n \"solana-clock\",\n \"solana-decode-error\",\n \"solana-hash\",\n \"solana-instruction\",\n \"solana-pubkey\",\n \"solana-rent\",\n \"solana-sdk-ids\",\n \"solana-serde-varint\",\n \"solana-serialize-utils\",\n \"solana-short-vec\",\n \"solana-system-interface\",\n]\n\n[[package]]\nname = \"subtle\"\nversion = \"2.6.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\"\n\n[[package]]\nname = \"syn\"\nversion = \"1.0.109\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"unicode-ident\",\n]\n\n[[package]]\nname = \"syn\"\nversion = \"2.0.119\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"unicode-ident\",\n]\n\n[[package]]\nname = \"syn\"\nversion = \"3.0.9\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"unicode-ident\",\n]\n\n[[package]]\nname = \"thiserror\"\nversion = \"2.0.21\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e\"\ndependencies = [\n \"thiserror-impl\",\n]\n\n[[package]]\nname = \"thiserror-impl\"\nversion = \"2.0.21\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 3.0.9\",\n]\n\n[[package]]\nname = \"tinyvec\"\nversion = \"1.13.3\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee\"\n\n[[package]]\nname = \"toml\"\nversion = \"0.5.11\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234\"\ndependencies = [\n \"serde\",\n]\n\n[[package]]\nname = \"toml_datetime\"\nversion = \"1.1.2+spec-1.1.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053\"\ndependencies = [\n \"serde_core\",\n]\n\n[[package]]\nname = \"toml_edit\"\nversion = \"0.25.17+spec-1.1.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e3641d5bbb5349a79e1020a242d251efbc546ad8048d133958323ce9c40a9c9c\"\ndependencies = [\n \"indexmap\",\n \"toml_datetime\",\n \"toml_parser\",\n \"winnow\",\n]\n\n[[package]]\nname = \"toml_parser\"\nversion = \"1.1.5+spec-1.1.0\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c\"\ndependencies = [\n \"winnow\",\n]\n\n[[package]]\nname = \"typenum\"\nversion = \"1.20.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20\"\n\n[[package]]\nname = \"unicode-ident\"\nversion = \"1.0.27\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563\"\n\n[[package]]\nname = \"version_check\"\nversion = \"0.9.5\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\"\n\n[[package]]\nname = \"wasi\"\nversion = \"0.9.0+wasi-snapshot-preview1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519\"\n\n[[package]]\nname = \"wasi\"\nversion = \"0.11.1+wasi-snapshot-preview1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b\"\n\n[[package]]\nname = \"wasm-bindgen\"\nversion = \"0.2.129\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409\"\ndependencies = [\n \"cfg-if\",\n \"once_cell\",\n \"rustversion\",\n \"wasm-bindgen-macro\",\n \"wasm-bindgen-shared\",\n]\n\n[[package]]\nname = \"wasm-bindgen-macro\"\nversion = \"0.2.129\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535\"\ndependencies = [\n \"quote\",\n \"wasm-bindgen-macro-support\",\n]\n\n[[package]]\nname = \"wasm-bindgen-macro-support\"\nversion = \"0.2.129\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7\"\ndependencies = [\n \"bumpalo\",\n \"proc-macro2\",\n \"quote\",\n \"syn 3.0.9\",\n \"wasm-bindgen-shared\",\n]\n\n[[package]]\nname = \"wasm-bindgen-shared\"\nversion = \"0.2.129\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6\"\ndependencies = [\n \"unicode-ident\",\n]\n\n[[package]]\nname = \"web-sys\"\nversion = \"0.3.106\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4\"\ndependencies = [\n \"js-sys\",\n \"wasm-bindgen\",\n]\n\n[[package]]\nname = \"windows-link\"\nversion = \"0.2.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\"\n\n[[package]]\nname = \"winnow\"\nversion = \"1.0.4\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81\"\ndependencies = [\n \"memchr\",\n]\n\n[[package]]\nname = \"zerocopy\"\nversion = \"0.8.63\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e5fe1f8f1b06191a00962174c61aa5005e0bb391a6d80d07e24d115c01a92ed8\"\ndependencies = [\n \"zerocopy-derive\",\n]\n\n[[package]]\nname = \"zerocopy-derive\"\nversion = \"0.8.63\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"863ad3ac83293fb4d740aedbfdc9240dd8d1a50c1099acd76ce80ce7c7230c7f\"\ndependencies = [\n \"proc-macro2\",\n \"quote\",\n \"syn 2.0.119\",\n]\n\n[[package]]\nname = \"zeroize\"\nversion = \"1.9.1\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879\"\n\n[[package]]\nname = \"zmij\"\nversion = \"1.0.23\"\nsource = \"registry+https://github.com/rust-lang/crates.io-index\"\nchecksum = \"29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b\"\n",
    "src/lib.rs": "//! Immutable, non-custodial mint caps, transfer-fee ceilings and token vesting.\n//! All keys are supplied by creators. There is no platform administrator or withdrawal key.\nuse solana_program::{account_info::{next_account_info,AccountInfo},clock::Clock,entrypoint,entrypoint::ProgramResult,instruction::{AccountMeta,Instruction},program::{invoke,invoke_signed},program_error::ProgramError,pubkey::Pubkey,rent::Rent,system_instruction,system_program,sysvar::Sysvar};\nentrypoint!(process_instruction);\nconst CLASSIC:Pubkey=solana_program::pubkey!(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nconst EXTENSIONS:Pubkey=solana_program::pubkey!(\"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\");\nfn invalid()->ProgramError{ProgramError::InvalidInstructionData}\nstruct Reader<'a>{data:&'a[u8],at:usize}\nimpl<'a> Reader<'a>{\n fn take(&mut self,n:usize)->Result<&'a[u8],ProgramError>{let end=self.at.checked_add(n).ok_or_else(invalid)?;let value=self.data.get(self.at..end).ok_or_else(invalid)?;self.at=end;Ok(value)}\n fn key(&mut self)->Result<Pubkey,ProgramError>{Ok(Pubkey::new_from_array(self.take(32)?.try_into().map_err(|_|invalid())?))}\n fn u64(&mut self)->Result<u64,ProgramError>{Ok(u64::from_le_bytes(self.take(8)?.try_into().map_err(|_|invalid())?))}\n fn u16(&mut self)->Result<u16,ProgramError>{Ok(u16::from_le_bytes(self.take(2)?.try_into().map_err(|_|invalid())?))}\n fn byte(&mut self)->Result<u8,ProgramError>{Ok(self.take(1)?[0])}\n fn done(&self)->ProgramResult{if self.at==self.data.len(){Ok(())}else{Err(invalid())}}\n}\nfn append_key(out:&mut Vec<u8>,key:&Pubkey){out.extend_from_slice(key.as_ref());}\nfn append_u64(out:&mut Vec<u8>,value:u64){out.extend_from_slice(&value.to_le_bytes());}\nfn signer(account:&AccountInfo)->ProgramResult{if account.is_signer{Ok(())}else{Err(ProgramError::MissingRequiredSignature)}}\nfn token_mint(mint:&AccountInfo,token:&AccountInfo)->ProgramResult{\n if (*token.key!=CLASSIC&&*token.key!=EXTENSIONS)||mint.owner!=token.key||mint.data_len()<82{return Err(ProgramError::IncorrectProgramId)}\n if mint.try_borrow_data()?[45]==0{return Err(ProgramError::UninitializedAccount)}Ok(())\n}\nfn mint_supply(mint:&AccountInfo)->Result<u64,ProgramError>{Ok(u64::from_le_bytes(mint.try_borrow_data()?[36..44].try_into().map_err(|_|invalid())?))}\nfn create_state<'a>(program:&Pubkey,payer:&AccountInfo<'a>,state:&AccountInfo<'a>,system:&AccountInfo<'a>,seeds:&[&[u8]],size:usize)->ProgramResult{\n signer(payer)?;if system.key!=&system_program::id()||state.owner!=system.key||state.data_len()!=0{return Err(ProgramError::AccountAlreadyInitialized)}\n if Pubkey::create_program_address(seeds,program).map_err(|_|invalid())?!=*state.key{return Err(ProgramError::InvalidSeeds)}\n let rent=Rent::get()?.minimum_balance(size);\n if state.lamports()==0{invoke_signed(&system_instruction::create_account(payer.key,state.key,rent,size as u64,program),&[payer.clone(),state.clone(),system.clone()],&[seeds])?;}\n else{\n  if state.lamports()<rent{invoke(&system_instruction::transfer(payer.key,state.key,rent-state.lamports()),&[payer.clone(),state.clone(),system.clone()])?;}\n  invoke_signed(&system_instruction::allocate(state.key,size as u64),&[state.clone(),system.clone()],&[seeds])?;\n  invoke_signed(&system_instruction::assign(state.key,program),&[state.clone(),system.clone()],&[seeds])?;\n }Ok(())\n}\nfn set_authority<'a>(mint:&AccountInfo<'a>,current:&AccountInfo<'a>,token:&AccountInfo<'a>,kind:u8,next:Option<&Pubkey>,seeds:Option<&[&[u8]]>)->ProgramResult{\n let mut data=vec![6,kind,if next.is_some(){1}else{0}];data.extend_from_slice(next.unwrap_or(&Pubkey::default()).as_ref());\n let ix=Instruction{program_id:*token.key,accounts:vec![AccountMeta::new(*mint.key,false),AccountMeta::new_readonly(*current.key,true)],data};\n if let Some(seeds)=seeds{invoke_signed(&ix,&[mint.clone(),current.clone(),token.clone()],&[seeds])}else{invoke(&ix,&[mint.clone(),current.clone(),token.clone()])}\n}\nfn state_reader<'a>(data:&'a[u8],magic:&[u8])->Result<Reader<'a>,ProgramError>{let mut r=Reader{data,at:0};if r.take(4)?!=magic{return Err(ProgramError::InvalidAccountData)}Ok(r)}\nfn process_instruction(program:&Pubkey,accounts:&[AccountInfo],data:&[u8])->ProgramResult{\n let mut r=Reader{data,at:0};match r.byte()?{\n  0=>init_cap(program,accounts,&mut r),1=>mint_capped(program,accounts,&mut r),2=>cap_owner(program,accounts,&mut r),\n  3=>init_vesting(program,accounts,&mut r),4=>release_vesting(program,accounts,&mut r),\n  5=>init_fee(program,accounts,&mut r),6=>set_fee(program,accounts,&mut r),7=>fee_owner(program,accounts,&mut r),\n  _=>Err(invalid())\n }\n}\nfn init_cap(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let owner=r.key()?;let maximum=r.u64()?;let lifetime=r.byte()?;r.done()?;if owner==Pubkey::default()||maximum==0||lifetime>1{return Err(invalid())}\n let a=&mut accounts.iter();let payer=next_account_info(a)?;let mint=next_account_info(a)?;let state=next_account_info(a)?;let system=next_account_info(a)?;let token=next_account_info(a)?;\n token_mint(mint,token)?;let supply=mint_supply(mint)?;if maximum<supply{return Err(invalid())}\n let (expected,bump)=Pubkey::find_program_address(&[b\"cap\",mint.key.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}\n let seed_bump=[bump];let seeds:&[&[u8]]=&[b\"cap\",mint.key.as_ref(),&seed_bump];create_state(program,payer,state,system,seeds,117)?;\n set_authority(mint,payer,token,0,Some(state.key),None)?;\n let mut out=b\"CAP1\".to_vec();append_key(&mut out,mint.key);append_key(&mut out,token.key);append_key(&mut out,&owner);append_u64(&mut out,maximum);append_u64(&mut out,supply);out.push(lifetime);state.try_borrow_mut_data()?.copy_from_slice(&out);Ok(())\n}\nfn read_cap(program:&Pubkey,state:&AccountInfo)->Result<(Pubkey,Pubkey,Pubkey,u64,u64,u8,u8),ProgramError>{\n if state.owner!=program{return Err(ProgramError::IllegalOwner)}let data=state.try_borrow_data()?;let mut r=state_reader(&data,b\"CAP1\")?;\n let mint=r.key()?;let token=r.key()?;let owner=r.key()?;let maximum=r.u64()?;let issued=r.u64()?;let lifetime=r.byte()?;r.done()?;\n let (expected,bump)=Pubkey::find_program_address(&[b\"cap\",mint.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}Ok((mint,token,owner,maximum,issued,lifetime,bump))\n}\nfn mint_capped(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let amount=r.u64()?;r.done()?;if amount==0{return Err(invalid())}\n let a=&mut accounts.iter();let authority=next_account_info(a)?;let state=next_account_info(a)?;let mint=next_account_info(a)?;let destination=next_account_info(a)?;let token=next_account_info(a)?;\n signer(authority)?;let (key,token_key,owner,maximum,issued,lifetime,bump)=read_cap(program,state)?;token_mint(mint,token)?;\n if key!=*mint.key||token_key!=*token.key||owner!=*authority.key{return Err(ProgramError::IllegalOwner)}\n let used=if lifetime==1{issued}else{mint_supply(mint)?};if amount>maximum.checked_sub(used).ok_or_else(invalid)?{return Err(ProgramError::InsufficientFunds)}\n let mut data=vec![14];append_u64(&mut data,amount);data.push(mint.try_borrow_data()?[44]);let bump=[bump];\n invoke_signed(&Instruction{program_id:*token.key,accounts:vec![AccountMeta::new(*mint.key,false),AccountMeta::new(*destination.key,false),AccountMeta::new_readonly(*state.key,true)],data},&[mint.clone(),destination.clone(),state.clone(),token.clone()],&[&[b\"cap\",mint.key.as_ref(),&bump]])?;\n if lifetime==1{state.try_borrow_mut_data()?[108..116].copy_from_slice(&issued.checked_add(amount).ok_or_else(invalid)?.to_le_bytes());}Ok(())\n}\nfn cap_owner(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let next=r.key()?;r.done()?;let a=&mut accounts.iter();let authority=next_account_info(a)?;let state=next_account_info(a)?;let mint=next_account_info(a)?;let token=next_account_info(a)?;\n signer(authority)?;let (key,token_key,owner,_,_,_,bump)=read_cap(program,state)?;if key!=*mint.key||token_key!=*token.key||owner!=*authority.key{return Err(ProgramError::IllegalOwner)}\n if next==Pubkey::default(){let bump=[bump];set_authority(mint,state,token,0,None,Some(&[b\"cap\",mint.key.as_ref(),&bump]))?;}\n state.try_borrow_mut_data()?[68..100].copy_from_slice(next.as_ref());Ok(())\n}\nfn init_vesting(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let nonce=r.key()?;let beneficiary=r.key()?;let amount=r.u64()?;let start=r.u64()?;let cliff=r.u64()?;let end=r.u64()?;r.done()?;\n if beneficiary==Pubkey::default()||amount==0||start==0||start>cliff||cliff>end{return Err(invalid())}\n let a=&mut accounts.iter();let payer=next_account_info(a)?;let mint=next_account_info(a)?;let state=next_account_info(a)?;let system=next_account_info(a)?;let token=next_account_info(a)?;token_mint(mint,token)?;\n let (expected,bump)=Pubkey::find_program_address(&[b\"vest\",mint.key.as_ref(),payer.key.as_ref(),nonce.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}let bump=[bump];\n create_state(program,payer,state,system,&[b\"vest\",mint.key.as_ref(),payer.key.as_ref(),nonce.as_ref(),&bump],204)?;\n let mut out=b\"VST1\".to_vec();for key in [mint.key,token.key,&beneficiary,payer.key,&nonce]{append_key(&mut out,key)}for v in [amount,0,start,cliff,end]{append_u64(&mut out,v)}state.try_borrow_mut_data()?.copy_from_slice(&out);Ok(())\n}\nfn release_vesting(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n r.done()?;let a=&mut accounts.iter();let state=next_account_info(a)?;let mint=next_account_info(a)?;let source=next_account_info(a)?;let destination=next_account_info(a)?;let token=next_account_info(a)?;token_mint(mint,token)?;\n if state.owner!=program{return Err(ProgramError::IllegalOwner)}let data=state.try_borrow_data()?;let mut s=state_reader(&data,b\"VST1\")?;\n let key=s.key()?;let token_key=s.key()?;let beneficiary=s.key()?;let creator=s.key()?;let nonce=s.key()?;let amount=s.u64()?;let released=s.u64()?;let start=s.u64()?;let cliff=s.u64()?;let end=s.u64()?;s.done()?;drop(data);\n if key!=*mint.key||token_key!=*token.key||source.owner!=token.key||destination.owner!=token.key||destination.data_len()<165{return Err(ProgramError::InvalidAccountData)}\n {let d=destination.try_borrow_data()?;if &d[0..32]!=mint.key.as_ref()||&d[32..64]!=beneficiary.as_ref(){return Err(ProgramError::IllegalOwner)}}\n let (expected,bump)=Pubkey::find_program_address(&[b\"vest\",mint.key.as_ref(),creator.as_ref(),nonce.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}\n let now=Clock::get()?.unix_timestamp;if now<0||(now as u64)<cliff{return Err(ProgramError::InsufficientFunds)}let now=now as u64;\n let vested=if now>=end{amount}else{((amount as u128)*((now-start)as u128)/((end-start)as u128))as u64};let payout=vested.checked_sub(released).ok_or_else(invalid)?;if payout==0{return Err(ProgramError::InsufficientFunds)}\n let mut data=vec![12];append_u64(&mut data,payout);data.push(mint.try_borrow_data()?[44]);\n let mut metas=vec![AccountMeta::new(*source.key,false),AccountMeta::new_readonly(*mint.key,false),AccountMeta::new(*destination.key,false),AccountMeta::new_readonly(*state.key,true)];\n for extra in a{metas.push(if extra.is_writable{AccountMeta::new(*extra.key,extra.is_signer)}else{AccountMeta::new_readonly(*extra.key,extra.is_signer)})}\n let bump=[bump];invoke_signed(&Instruction{program_id:*token.key,accounts:metas,data},accounts,&[&[b\"vest\",mint.key.as_ref(),creator.as_ref(),nonce.as_ref(),&bump]])?;\n state.try_borrow_mut_data()?[172..180].copy_from_slice(&vested.to_le_bytes());Ok(())\n}\nfn init_fee(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let owner=r.key()?;let maximum_bps=r.u16()?;let maximum_fee=r.u64()?;r.done()?;if owner==Pubkey::default()||maximum_bps>10000{return Err(invalid())}\n let a=&mut accounts.iter();let payer=next_account_info(a)?;let mint=next_account_info(a)?;let state=next_account_info(a)?;let system=next_account_info(a)?;let token=next_account_info(a)?;token_mint(mint,token)?;if *token.key!=EXTENSIONS{return Err(ProgramError::IncorrectProgramId)}\n {let data=mint.try_borrow_data()?;let mut at=166;let mut found=false;while at+4<=data.len(){let kind=u16::from_le_bytes(data[at..at+2].try_into().map_err(|_|invalid())?);let size=u16::from_le_bytes(data[at+2..at+4].try_into().map_err(|_|invalid())?)as usize;at+=4;let d=data.get(at..at+size).ok_or_else(invalid)?;if kind==1{if d.len()!=108{return Err(invalid())}for offset in [72,90]{let fee=u64::from_le_bytes(d[offset+8..offset+16].try_into().map_err(|_|invalid())?);let bps=u16::from_le_bytes(d[offset+16..offset+18].try_into().map_err(|_|invalid())?);if fee>maximum_fee||bps>maximum_bps{return Err(invalid())}}found=true;break}at+=size;}if !found{return Err(invalid())}}\n let (expected,bump)=Pubkey::find_program_address(&[b\"fee\",mint.key.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}let bump=[bump];create_state(program,payer,state,system,&[b\"fee\",mint.key.as_ref(),&bump],110)?;set_authority(mint,payer,token,4,Some(state.key),None)?;\n let mut out=b\"FEE1\".to_vec();for key in [mint.key,token.key,&owner]{append_key(&mut out,key)}out.extend_from_slice(&maximum_bps.to_le_bytes());append_u64(&mut out,maximum_fee);state.try_borrow_mut_data()?.copy_from_slice(&out);Ok(())\n}\nfn read_fee(program:&Pubkey,state:&AccountInfo)->Result<(Pubkey,Pubkey,Pubkey,u16,u64,u8),ProgramError>{\n if state.owner!=program{return Err(ProgramError::IllegalOwner)}let data=state.try_borrow_data()?;let mut r=state_reader(&data,b\"FEE1\")?;let mint=r.key()?;let token=r.key()?;let owner=r.key()?;let bps=r.u16()?;let maximum=r.u64()?;r.done()?;let (expected,bump)=Pubkey::find_program_address(&[b\"fee\",mint.as_ref()],program);if expected!=*state.key{return Err(ProgramError::InvalidSeeds)}Ok((mint,token,owner,bps,maximum,bump))\n}\nfn set_fee(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let bps=r.u16()?;let maximum=r.u64()?;r.done()?;let a=&mut accounts.iter();let authority=next_account_info(a)?;let state=next_account_info(a)?;let mint=next_account_info(a)?;let token=next_account_info(a)?;signer(authority)?;\n let (key,token_key,owner,cap_bps,cap_fee,bump)=read_fee(program,state)?;if key!=*mint.key||token_key!=*token.key||owner!=*authority.key||bps>cap_bps||maximum>cap_fee{return Err(invalid())}\n let mut data=vec![26,5];data.extend_from_slice(&bps.to_le_bytes());append_u64(&mut data,maximum);let bump=[bump];\n invoke_signed(&Instruction{program_id:*token.key,accounts:vec![AccountMeta::new(*mint.key,false),AccountMeta::new_readonly(*state.key,true)],data},&[mint.clone(),state.clone(),token.clone()],&[&[b\"fee\",mint.key.as_ref(),&bump]])\n}\nfn fee_owner(program:&Pubkey,accounts:&[AccountInfo],r:&mut Reader)->ProgramResult{\n let next=r.key()?;r.done()?;let a=&mut accounts.iter();let authority=next_account_info(a)?;let state=next_account_info(a)?;let mint=next_account_info(a)?;let token=next_account_info(a)?;signer(authority)?;\n let (key,token_key,owner,_,_,bump)=read_fee(program,state)?;if key!=*mint.key||token_key!=*token.key||owner!=*authority.key{return Err(ProgramError::IllegalOwner)}\n if next==Pubkey::default(){let bump=[bump];set_authority(mint,state,token,4,None,Some(&[b\"fee\",mint.key.as_ref(),&bump]))?}state.try_borrow_mut_data()?[68..100].copy_from_slice(next.as_ref());Ok(())\n}\n"
  }
}
