From eb03d24b1ba0deab5ccdcdc278e4dad6da9c4ce8 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 2 Feb 2025 15:56:51 +0530 Subject: [PATCH 01/71] changes --- backend/config/prompt.js | 4 +- backend/server.js | 36 +- backend/tools/index.js | 4 +- .../1/run-1738490619.json | 52 + .../1/run-1738491205.json | 52 + .../DeployTradeIntent.sol/1/run-latest.json | 16 +- .../1/run-1738490619.json | 7 + .../1/run-1738491205.json | 7 + cache/solidity-files-cache.json | 2 +- frontend/src/components/GeneralChat.jsx | 4 +- frontend/src/components/TradingChat.jsx | 38 +- out/AAVEIntents.sol/IAaveETHManager.json | 1 + out/AAVEIntents.sol/aaveIntents.json | 1 + out/IAEth.sol/IAEth.json | 1 + out/IAEth.sol/IENSHelper.json | 1 + out/IAEth.sol/IETH.json | 1 + out/IAEth.sol/IEscrows.json | 1 + out/IAEth.sol/IExecutor.json | 1 + out/IAEth.sol/ISwapRouter.json | 1 + out/IAEth.sol/IToken.json | 1 + .../35fec37d57b4d29e712fc83affe3c315.json | 1 + src/AAVEIntents.sol | 184 ++ src/IAEth.sol | 1828 +++++++++++++++++ 23 files changed, 2206 insertions(+), 38 deletions(-) create mode 100644 broadcast/DeployTradeIntent.sol/1/run-1738490619.json create mode 100644 broadcast/DeployTradeIntent.sol/1/run-1738491205.json create mode 100644 cache/DeployTradeIntent.sol/1/run-1738490619.json create mode 100644 cache/DeployTradeIntent.sol/1/run-1738491205.json create mode 100644 out/AAVEIntents.sol/IAaveETHManager.json create mode 100644 out/AAVEIntents.sol/aaveIntents.json create mode 100644 out/IAEth.sol/IAEth.json create mode 100644 out/IAEth.sol/IENSHelper.json create mode 100644 out/IAEth.sol/IETH.json create mode 100644 out/IAEth.sol/IEscrows.json create mode 100644 out/IAEth.sol/IExecutor.json create mode 100644 out/IAEth.sol/ISwapRouter.json create mode 100644 out/IAEth.sol/IToken.json create mode 100644 out/build-info/35fec37d57b4d29e712fc83affe3c315.json create mode 100644 src/AAVEIntents.sol create mode 100644 src/IAEth.sol diff --git a/backend/config/prompt.js b/backend/config/prompt.js index 85f2bd8..2d15b01 100644 --- a/backend/config/prompt.js +++ b/backend/config/prompt.js @@ -15,7 +15,9 @@ Your task: 2. **Analyze the liquidity pool data** for the following two pools: - **First token pair**: 0x231B7589426Ffe1b75405526fC32aC09D44364c4 (WBTC/DAI) - - **Second token pair**: 0xa43fe16908251ee70ef74718545e4fe6c5ccec9f (PEPE/WETH) + - **Second token pair**: 0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc (WETH/USDC) + - **Third token pair**: 0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11 (WETH/DAI) + - **Fourth token pair**: 0xBb2b8038a1640196FbE3e38816F3e67Cba72D940 (WETH/WBTC) Fetch the liquidity pool stats for both token pairs using the "getLiquidityPoolPrice" tool. diff --git a/backend/server.js b/backend/server.js index cd17ac1..4c35b2e 100644 --- a/backend/server.js +++ b/backend/server.js @@ -84,8 +84,40 @@ app.post("/api/generate-insights", async (req, res) => { } }); - // Start the server app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); -}); \ No newline at end of file +}); + + + +/**====================== + * Fetching Data Test + *========================**/ + +// const getData = async (pairAddress) => { +// const poolAddress = pairAddress; +// const url = `https://api.dexscreener.com/latest/dex/pairs/ethereum/${poolAddress}`; + +// try { +// const response = await fetch(url); +// if (!response.ok) { +// throw new Error("Network response was not ok " + response.statusText); +// } +// const data = await response.json(); +// console.log(data.pair); // Process your data here //Change this as it gives more detailed Data** +// return data.pair; +// } catch (error) { +// console.error("Fetch error: ", error); +// } +// } + +// getData("0x231B7589426Ffe1b75405526fC32aC09D44364c4") +// console.log("======================================") +// getData("0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc") +// console.log("======================================") + +// getData("0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11") +// console.log("======================================") + +// getData("0xBb2b8038a1640196FbE3e38816F3e67Cba72D940") diff --git a/backend/tools/index.js b/backend/tools/index.js index 88b1406..c9b54e4 100644 --- a/backend/tools/index.js +++ b/backend/tools/index.js @@ -32,8 +32,8 @@ export const createNaniTools = ({ account, walletClient, publicClient }) => ({ throw new Error("Network response was not ok " + response.statusText); } const data = await response.json(); - console.log(data); // Process your data here - return data; + console.log(data.pair); // Process your data here //Change this as it gives more detailed Data** + return data.pair; } catch (error) { console.error("Fetch error: ", error); } diff --git a/broadcast/DeployTradeIntent.sol/1/run-1738490619.json b/broadcast/DeployTradeIntent.sol/1/run-1738490619.json new file mode 100644 index 0000000..b1a9c4f --- /dev/null +++ b/broadcast/DeployTradeIntent.sol/1/run-1738490619.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x5bc9a0859057bccac9b5d403a21a32b2cd9f93e67f9e8468a33ea3beaf36a5ff", + "transactionType": "CREATE", + "contractName": "IntentEngine", + "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x138270", + "value": "0x0", + "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", + "nonce": "0x34d", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xf01e0", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x5bc9a0859057bccac9b5d403a21a32b2cd9f93e67f9e8468a33ea3beaf36a5ff", + "transactionIndex": "0x0", + "blockHash": "0x36c26873f7412caf34085e5f954c6b4ed8440dbc7ffc818f5411f9f37e1c4331", + "blockNumber": "0x14c0090", + "gasUsed": "0xf01e0", + "effectiveGasPrice": "0x753dfae3", + "blobGasPrice": "0xbd1745", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "contract IntentEngine", + "value": "0x2ca60d89144D4cdf85dA87af4FE12aBF9265F28C" + } + }, + "timestamp": 1738490619, + "chain": 1, + "commit": "1912bfd" +} \ No newline at end of file diff --git a/broadcast/DeployTradeIntent.sol/1/run-1738491205.json b/broadcast/DeployTradeIntent.sol/1/run-1738491205.json new file mode 100644 index 0000000..bb5b2ab --- /dev/null +++ b/broadcast/DeployTradeIntent.sol/1/run-1738491205.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", + "transactionType": "CREATE", + "contractName": "IntentEngine", + "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x138270", + "value": "0x0", + "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", + "nonce": "0x34d", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xf01e0", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", + "transactionIndex": "0x0", + "blockHash": "0xd37f8099532661ae71953e8f2eda9439f6edc76133910a9dd2dfe406c2d92da5", + "blockNumber": "0x14c00ca", + "gasUsed": "0xf01e0", + "effectiveGasPrice": "0x7cfe8ac8", + "blobGasPrice": "0x221cff9", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c" + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "contract IntentEngine", + "value": "0x2ca60d89144D4cdf85dA87af4FE12aBF9265F28C" + } + }, + "timestamp": 1738491205, + "chain": 1, + "commit": "1912bfd" +} \ No newline at end of file diff --git a/broadcast/DeployTradeIntent.sol/1/run-latest.json b/broadcast/DeployTradeIntent.sol/1/run-latest.json index e25431b..bb5b2ab 100644 --- a/broadcast/DeployTradeIntent.sol/1/run-latest.json +++ b/broadcast/DeployTradeIntent.sol/1/run-latest.json @@ -1,7 +1,7 @@ { "transactions": [ { - "hash": "0x56cb1a990107354e36fc177d84eb1c324e5a40dedfb3654b8a49076ec4ac55fb", + "hash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", "transactionType": "CREATE", "contractName": "IntentEngine", "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c", @@ -26,13 +26,13 @@ "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x56cb1a990107354e36fc177d84eb1c324e5a40dedfb3654b8a49076ec4ac55fb", + "transactionHash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", "transactionIndex": "0x0", - "blockHash": "0x418aadfc8c5aa2e2538784fca50afac02e1439b89a78de8ef4a58916fc0f3700", - "blockNumber": "0x14bfbcf", + "blockHash": "0xd37f8099532661ae71953e8f2eda9439f6edc76133910a9dd2dfe406c2d92da5", + "blockNumber": "0x14c00ca", "gasUsed": "0xf01e0", - "effectiveGasPrice": "0x56f18f17", - "blobGasPrice": "0xcaa0f9d0", + "effectiveGasPrice": "0x7cfe8ac8", + "blobGasPrice": "0x221cff9", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c" @@ -46,7 +46,7 @@ "value": "0x2ca60d89144D4cdf85dA87af4FE12aBF9265F28C" } }, - "timestamp": 1738475753, + "timestamp": 1738491205, "chain": 1, - "commit": "8204fea" + "commit": "1912bfd" } \ No newline at end of file diff --git a/cache/DeployTradeIntent.sol/1/run-1738490619.json b/cache/DeployTradeIntent.sol/1/run-1738490619.json new file mode 100644 index 0000000..3d489ae --- /dev/null +++ b/cache/DeployTradeIntent.sol/1/run-1738490619.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "http://127.0.0.1:8545" + } + ] +} \ No newline at end of file diff --git a/cache/DeployTradeIntent.sol/1/run-1738491205.json b/cache/DeployTradeIntent.sol/1/run-1738491205.json new file mode 100644 index 0000000..3d489ae --- /dev/null +++ b/cache/DeployTradeIntent.sol/1/run-1738491205.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "http://127.0.0.1:8545" + } + ] +} \ No newline at end of file diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index ebe4335..a420d63 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1738474223445,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1738474223445,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1738474223446,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1738474223446,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1738474223473,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1738474223474,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1738474223474,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1738474223475,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1738474223475,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1738474223476,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1738474223477,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1738474223477,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1738474223478,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1738474223478,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1738474223479,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1738474223479,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1738474223479,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1738474223480,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1738474223480,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1738474223517,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1738474223519,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1738475666810,"contentHash":"1154d548615e2361cb7e58103ed62f97","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1738473588069,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1738473588069,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1738473588069,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1738473588069,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1738473588069,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1738473588069,"contentHash":"0dc143f4ac69ab14c4d99bb595cbc679","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1738473588070,"contentHash":"ffc08685b5f86d231bcfa0b633f0baf7","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true}},"builds":["58c984fa81f30e09c0163b31124a40e6"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1738474223445,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1738474223445,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1738474223446,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1738474223446,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1738474223473,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1738474223474,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1738474223474,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1738474223475,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1738474223475,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1738474223476,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1738474223477,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1738474223477,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1738474223478,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1738474223478,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1738474223479,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1738474223479,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1738474223479,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1738474223480,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1738474223480,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1738474223517,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1738474223519,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1738475666810,"contentHash":"1154d548615e2361cb7e58103ed62f97","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1738490601934,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1738473588069,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1738473588069,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1738490599982,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1738473588069,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1738473588069,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1738473588069,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1738473588069,"contentHash":"0dc143f4ac69ab14c4d99bb595cbc679","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1738473588070,"contentHash":"ffc08685b5f86d231bcfa0b633f0baf7","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true}},"builds":["35fec37d57b4d29e712fc83affe3c315","58c984fa81f30e09c0163b31124a40e6"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file diff --git a/frontend/src/components/GeneralChat.jsx b/frontend/src/components/GeneralChat.jsx index 839ec06..a417253 100644 --- a/frontend/src/components/GeneralChat.jsx +++ b/frontend/src/components/GeneralChat.jsx @@ -101,8 +101,8 @@ const IntentAI = () => { {/* Updated Spline Container */}
- -
+ + diff --git a/frontend/src/components/TradingChat.jsx b/frontend/src/components/TradingChat.jsx index 15e2fdd..815ee8e 100644 --- a/frontend/src/components/TradingChat.jsx +++ b/frontend/src/components/TradingChat.jsx @@ -4,8 +4,11 @@ import { Send, Image as ImageIcon, X, Camera, Loader, Sparkles, Command, Message import Spline from '@splinetool/react-spline'; import { TradeABI, TradeContractAddress, ERC20ABI ,WETH_ABI} from '../constants/abi'; import { ethers, getAddress } from 'ethers'; +import { useNavigate } from 'react-router-dom'; + const IntentAI = () => { + const navigate = useNavigate(); const chatContainerRef = useRef(null); const [isLoading, setIsLoading] = useState(false); const [activeTab, setActiveTab] = useState('general'); @@ -34,6 +37,7 @@ const [test,setTest]=useState(""); const [amountTotrade, setAmountToTrade] = useState(null) const [addressfirstTokenToTrade, setaddressfirstTokenToTrade] = useState(null) const [startTX, setstartTX] = useState(null) + const [isApproved, setIsApproved] = useState(false) useEffect(() => { if (chatContainerRef.current) { @@ -89,12 +93,12 @@ const [test,setTest]=useState(""); } const balanceOfDai = async()=>{ - if (!account) { alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") throw new Error("Metamask is not installed"); } - + //weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 + //dai 0x6B175474E89094C44Da98b954EedeAC495271d0F const daiContract = new ethers.Contract("0x6B175474E89094C44Da98b954EedeAC495271d0F", WETH_ABI, signer); const balance = await daiContract.balanceOf(account); console.log("dai balance : ",balance) @@ -148,9 +152,7 @@ const [test,setTest]=useState(""); } const approveTransaction = await tokenToTrade.approve(TradeContractAddress, amountTotrade) await approveTransaction.wait(1); - if(approveTransaction){ - setstartTX(true) - } + setIsApproved(true) }else{ alert("connect metamask again!....") } @@ -176,6 +178,10 @@ const [test,setTest]=useState(""); // Set the first prompt and clear the input field setFirstPrompt(input); console.log("input : ", input); + if(input.toLowerCase()=="confirm"){ + if(amountTotrade>0 && isApproved==true) + commandToTradeStart(); + } setInput(''); try { @@ -227,24 +233,12 @@ const [test,setTest]=useState(""); // await tradeTx.wait() console.log("Trade Transaction Hash => ",tradeTx) } - - useEffect(()=>{ - if(startTX){ - console.log("error aara bc") - commandToTradeStart(); - } - },[startTX]) - - - - const handleKeyPress = (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSend(); } }; - return (
{/* Background gradients */} @@ -271,10 +265,10 @@ const [test,setTest]=useState(""); {/* Title Section */}

- + navigate('/')} className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-500 to-blue-500 animate-gradient-x"> Intent - + navigate('/')} className="text-transparent bg-clip-text bg-gradient-to-r from-purple-200 to-indigo-300"> AI

@@ -285,8 +279,9 @@ const [test,setTest]=useState(""); {/* Updated Spline Container */}
- {/* */} - +{/* \ */} + +
@@ -391,7 +386,6 @@ const [test,setTest]=useState(""); - ); }; diff --git a/out/AAVEIntents.sol/IAaveETHManager.json b/out/AAVEIntents.sol/IAaveETHManager.json new file mode 100644 index 0000000..d656242 --- /dev/null +++ b/out/AAVEIntents.sol/IAaveETHManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"depositETH","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawETH","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"depositETH()":"f6326fb3","withdrawETH(uint256)":"f14210a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"depositETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AAVEIntents.sol\":\"IAaveETHManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/AAVEIntents.sol\":{\"keccak256\":\"0xa2ae48c8135dfa87eaef43a1047ad86fd0cb7086a4fd0b700baa488303f5f9a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4240b9e311c5446ef419572485c84da5208116f607fa1f2ba81312b37aee2ed\",\"dweb:/ipfs/QmZYnbMDJy1yrnJMG2x2gEbHbCmi9NS6zbh6qmN5AMbADF\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]},\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"function","name":"depositETH"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawETH"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AAVEIntents.sol":"IAaveETHManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/AAVEIntents.sol":{"keccak256":"0xa2ae48c8135dfa87eaef43a1047ad86fd0cb7086a4fd0b700baa488303f5f9a1","urls":["bzz-raw://e4240b9e311c5446ef419572485c84da5208116f607fa1f2ba81312b37aee2ed","dweb:/ipfs/QmZYnbMDJy1yrnJMG2x2gEbHbCmi9NS6zbh6qmN5AMbADF"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"},"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file diff --git a/out/AAVEIntents.sol/aaveIntents.json b/out/AAVEIntents.sol/aaveIntents.json new file mode 100644 index 0000000..e9bbbbc --- /dev/null +++ b/out/AAVEIntents.sol/aaveIntents.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_aaveManager","type":"address","internalType":"address"},{"name":"_aEthAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"aEth","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAEth"}],"stateMutability":"view"},{"type":"function","name":"aaveManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAaveETHManager"}],"stateMutability":"view"},{"type":"function","name":"command","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}],"bytecode":{"object":"0x60c03461013a57601f61107838819003918201601f19168301916001600160401b0383118484101761013e57808492604094855283398101031261013a57610052602061004b83610152565b9201610152565b6001600160a01b039091169081156100f5576001600160a01b03169081156100b05760805260a052604051610f119081610167823960805181818161026a0152818161065b0152610943015260a0518181816102fb01526109af0152f35b60405162461bcd60e51b815260206004820152601460248201527f496e76616c6964206145544820616464726573730000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d616e6167657220616464726573730000000000000000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361013a5756fe6080806040526004361015610011575b005b5f905f3560e01c908163030581a7146109675750806351ef6593146108f957635fcc45000361000f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610780576004359067ffffffffffffffff8211610780573660238301121561078057816004013567ffffffffffffffff8111610780573660248285010111610780576020818060246100b25f95610a5d565b966100c06040519889610a1c565b8288520183870137840101526100d68251610a97565b915f5b81518110156101ec576100ec8183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f4100000000000000000000000000000000000000000000000000000000000000811015806101c2575b156101b8575060f81c6020019060ff821161018b577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a6101848287610ae6565b53016100d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001929150610178565b507f5a0000000000000000000000000000000000000000000000000000000000000081111561013a565b82846101f781610b24565b7f48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be0181036105fe575061022890610c95565b8051829182918291825b8281106104ae575b50505090155f1461049157505060b45b80340361043357819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156104075782906004604051809481937ff6326fb30000000000000000000000000000000000000000000000000000000083525af180156103cf5761041e575b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16602082602481845afa9182156104135783926103da575b50604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845233600485015260248401525af180156103cf57610393575080f35b6020813d6020116103c7575b816103ac60209383610a1c565b810103126103c35751801515036103c05780f35b80fd5b5080fd5b3d915061039f565b6040513d84823e3d90fd5b91506020823d60201161040b575b816103f560209383610a1c565b81010312610407579051906044610347565b5050fd5b3d91506103e8565b6040513d85823e3d90fd5b8161042891610a1c565b6103c05780826102cc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f45746865722073656e74206d69736d61746368207769746820616d6f756e742e6044820152fd5b601281106104a0575b5061024a565b9050601203600a028261049a565b6104b88183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f3000000000000000000000000000000000000000000000000000000000000000811015806105d4575b1561056557508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561054f575b6001905b01939293610232565b936001019360128511156105425793929361023a565b7f2e000000000000000000000000000000000000000000000000000000000000009150959194951490816105cb575b50156105a35760018093610546565b6004867f312a9f56000000000000000000000000000000000000000000000000000000008152fd5b90501587610594565b507f3900000000000000000000000000000000000000000000000000000000000000811115610506565b7f855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77036108d15761062d90610c95565b5f9080515f915f905f5b838110610784575b505050505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610780575f916024839260405194859384927ff14210a600000000000000000000000000000000000000000000000000000000845260048401525af1801561077557610762575b508080808047335af13d1561075d573d6106df81610a5d565b906106ed6040519283610a1c565b81528260203d92013e5b156106ff5780f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5769746864726177616c206661696c65642e00000000000000000000000000006044820152fd5b6106f7565b61076e91505f90610a1c565b5f816106c6565b6040513d5f823e3d90fd5b5f80fd5b61078e8183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f3000000000000000000000000000000000000000000000000000000000000000811015806108a7575b1561083857508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610825575b6001905b01939293610637565b916001019160128311156108185761063f565b7f2e0000000000000000000000000000000000000000000000000000000000000091509591949514908161089e575b5015610876576001809361081c565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501587610867565b507f39000000000000000000000000000000000000000000000000000000000000008111156107dc565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610780575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261078057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610780575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107805760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176109ef57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109ef57604052565b67ffffffffffffffff81116109ef57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90610aa182610a5d565b610aae6040519182610a1c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610adc8294610a5d565b0190602036910137565b908151811015610af7570160200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908151905f5b828110610b59577f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f20000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000610ba58387610ae6565b511614610bb457600101610b2a565b90915082518111610c2357610bc881610a97565b905f5b818110610be057505080516020909101209150565b807fff00000000000000000000000000000000000000000000000000000000000000610c0e60019388610ae6565b51165f1a610c1c8286610ae6565b5301610bcb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c696420736c6963652072616e6765000000000000000000000000006044820152fd5b8051821015610af75760209160051b010190565b9060408051610ca48282610a1c565b600181527f2000000000000000000000000000000000000000000000000000000000000000602090910181905283515f805b828110610e7c5750600101917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610d24610d0f85610ec3565b94610d1c87519687610a1c565b808652610ec3565b015f5b818110610e5a5750505f905f905f5b84811115610dd357505050505060038151036108d157805160011015610af757015160208101518151810390811161018b57610d7190610a97565b905f5b8251811015610dcc5781519080820180921161018b577fff00000000000000000000000000000000000000000000000000000000000000610db760019388610ae6565b51165f1a610dc58286610ae6565b5301610d74565b5090925050565b8481148015610e25575b610dea575b600101610d36565b9192610e1a90875194610dfc866109d3565b85528360208601526001810194610e138289610c81565b5286610c81565b506001820191610de2565b50817fff00000000000000000000000000000000000000000000000000000000000000610e52838c610ae6565b511614610ddd565b6020908651610e68816109d3565b5f81525f8382015282828801015201610d27565b837fff00000000000000000000000000000000000000000000000000000000000000610ea8838a610ae6565b511614610eb8575b600101610cd6565b600190910190610eb0565b67ffffffffffffffff81116109ef5760051b6020019056fea2646970667358221220de38d8cee85f423e7dcf1cdb2f7b623e98803c509c0ecce9fdcb1300f55c59ec64736f6c634300081c0033","sourceMap":"259:5564:2:-:0;;;;;;;;;;;;;-1:-1:-1;;259:5564:2;;;;-1:-1:-1;;;;;259:5564:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;259:5564:2;;;;655:26;;259:5564;;-1:-1:-1;;;;;259:5564:2;;727:26;;259:5564;;788:43;;841:26;;259:5564;;;;;;;;788:43;259:5564;;;;;;;;;;;;;;;841:26;259:5564;;;;;;;;;;;;;;-1:-1:-1;;;259:5564:2;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;259:5564:2;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;259:5564:2;;;;;;-1:-1:-1;259:5564:2;;;;;-1:-1:-1;259:5564:2;;;;-1:-1:-1;;;;;259:5564:2;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610011575b005b5f905f3560e01c908163030581a7146109675750806351ef6593146108f957635fcc45000361000f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610780576004359067ffffffffffffffff8211610780573660238301121561078057816004013567ffffffffffffffff8111610780573660248285010111610780576020818060246100b25f95610a5d565b966100c06040519889610a1c565b8288520183870137840101526100d68251610a97565b915f5b81518110156101ec576100ec8183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f4100000000000000000000000000000000000000000000000000000000000000811015806101c2575b156101b8575060f81c6020019060ff821161018b577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a6101848287610ae6565b53016100d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001929150610178565b507f5a0000000000000000000000000000000000000000000000000000000000000081111561013a565b82846101f781610b24565b7f48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be0181036105fe575061022890610c95565b8051829182918291825b8281106104ae575b50505090155f1461049157505060b45b80340361043357819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156104075782906004604051809481937ff6326fb30000000000000000000000000000000000000000000000000000000083525af180156103cf5761041e575b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16602082602481845afa9182156104135783926103da575b50604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845233600485015260248401525af180156103cf57610393575080f35b6020813d6020116103c7575b816103ac60209383610a1c565b810103126103c35751801515036103c05780f35b80fd5b5080fd5b3d915061039f565b6040513d84823e3d90fd5b91506020823d60201161040b575b816103f560209383610a1c565b81010312610407579051906044610347565b5050fd5b3d91506103e8565b6040513d85823e3d90fd5b8161042891610a1c565b6103c05780826102cc565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f45746865722073656e74206d69736d61746368207769746820616d6f756e742e6044820152fd5b601281106104a0575b5061024a565b9050601203600a028261049a565b6104b88183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f3000000000000000000000000000000000000000000000000000000000000000811015806105d4575b1561056557508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561054f575b6001905b01939293610232565b936001019360128511156105425793929361023a565b7f2e000000000000000000000000000000000000000000000000000000000000009150959194951490816105cb575b50156105a35760018093610546565b6004867f312a9f56000000000000000000000000000000000000000000000000000000008152fd5b90501587610594565b507f3900000000000000000000000000000000000000000000000000000000000000811115610506565b7f855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77036108d15761062d90610c95565b5f9080515f915f905f5b838110610784575b505050505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610780575f916024839260405194859384927ff14210a600000000000000000000000000000000000000000000000000000000845260048401525af1801561077557610762575b508080808047335af13d1561075d573d6106df81610a5d565b906106ed6040519283610a1c565b81528260203d92013e5b156106ff5780f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5769746864726177616c206661696c65642e00000000000000000000000000006044820152fd5b6106f7565b61076e91505f90610a1c565b5f816106c6565b6040513d5f823e3d90fd5b5f80fd5b61078e8183610ae6565b517fff0000000000000000000000000000000000000000000000000000000000000081167f3000000000000000000000000000000000000000000000000000000000000000811015806108a7575b1561083857508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610825575b6001905b01939293610637565b916001019160128311156108185761063f565b7f2e0000000000000000000000000000000000000000000000000000000000000091509591949514908161089e575b5015610876576001809361081c565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b90501587610867565b507f39000000000000000000000000000000000000000000000000000000000000008111156107dc565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610780575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261078057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610780575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107805760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040810190811067ffffffffffffffff8211176109ef57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176109ef57604052565b67ffffffffffffffff81116109ef57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90610aa182610a5d565b610aae6040519182610a1c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610adc8294610a5d565b0190602036910137565b908151811015610af7570160200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b908151905f5b828110610b59577f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f20000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000610ba58387610ae6565b511614610bb457600101610b2a565b90915082518111610c2357610bc881610a97565b905f5b818110610be057505080516020909101209150565b807fff00000000000000000000000000000000000000000000000000000000000000610c0e60019388610ae6565b51165f1a610c1c8286610ae6565b5301610bcb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c696420736c6963652072616e6765000000000000000000000000006044820152fd5b8051821015610af75760209160051b010190565b9060408051610ca48282610a1c565b600181527f2000000000000000000000000000000000000000000000000000000000000000602090910181905283515f805b828110610e7c5750600101917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610d24610d0f85610ec3565b94610d1c87519687610a1c565b808652610ec3565b015f5b818110610e5a5750505f905f905f5b84811115610dd357505050505060038151036108d157805160011015610af757015160208101518151810390811161018b57610d7190610a97565b905f5b8251811015610dcc5781519080820180921161018b577fff00000000000000000000000000000000000000000000000000000000000000610db760019388610ae6565b51165f1a610dc58286610ae6565b5301610d74565b5090925050565b8481148015610e25575b610dea575b600101610d36565b9192610e1a90875194610dfc866109d3565b85528360208601526001810194610e138289610c81565b5286610c81565b506001820191610de2565b50817fff00000000000000000000000000000000000000000000000000000000000000610e52838c610ae6565b511614610ddd565b6020908651610e68816109d3565b5f81525f8382015282828801015201610d27565b837fff00000000000000000000000000000000000000000000000000000000000000610ea8838a610ae6565b511614610eb8575b600101610cd6565b600190910190610eb0565b67ffffffffffffffff81116109ef5760051b6020019056fea2646970667358221220de38d8cee85f423e7dcf1cdb2f7b623e98803c509c0ecce9fdcb1300f55c59ec64736f6c634300081c0033","sourceMap":"259:5564:2:-:0;;;;;;;;;;-1:-1:-1;259:5564:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;4480:25;259:5564;;4480:25;:::i;:::-;4520:13;259:5564;4555:3;259:5564;;4535:18;;;;;4585:10;;;;:::i;:::-;259:5564;;;;;4622:9;;;:22;;;4555:3;4621:52;;;-1:-1:-1;259:5564:2;;;;;;;;;;;;;;;;4621:52;259:5564;4609:64;;;;;:::i;:::-;;259:5564;4520:13;;259:5564;;;;;;;;;;4621:52;259:5564;4621:52;;;;;4622:22;4635:9;259:5564;4635:9;;;4622:22;;4535:18;;;1026:23;;;:::i;:::-;1074:20;1064:30;;1074:20;;1132:26;;;;:::i;:::-;259:5564;;4812:14;;;;;;;4979:7;;;;;;4963:561;5571:11;;;;;5567:152;5571:11;;;5584:22;;259:5564;5567:152;1674:9;;:19;259:5564;;1740:11;;259:5564;1740:11;259:5564;1740:39;;;;;259:5564;;;;;1740:39;;;;259:5564;1740:39;;;;;;;;;;5567:152;-1:-1:-1;259:5564:2;;;1811:29;;1834:4;259:5564;1811:29;;259:5564;1811:4;259:5564;;;;;;;1811:29;;;;;;;;;;;5567:152;259:5564;1850:38;259:5564;;;;1850:38;;;;;259:5564;1850:38;;1864:10;259:5564;1850:38;;259:5564;;;;;1850:38;;;;;;;;1060:541;259:5564;;1850:38;259:5564;1850:38;;259:5564;1850:38;;;;;;259:5564;1850:38;;;:::i;:::-;;;259:5564;;;;;;;;;;;;;;;;;;;;1850:38;;;-1:-1:-1;1850:38:2;;;259:5564;;;;;;;;;1811:29;;;259:5564;1811:29;;259:5564;1811:29;;;;;;259:5564;1811:29;;;:::i;:::-;;;259:5564;;;;;;;1850:38;1811:29;;259:5564;;;;1811:29;;;-1:-1:-1;1811:29:2;;;259:5564;;;;;;;;;1740:39;;;;;:::i;:::-;259:5564;;1740:39;;;;259:5564;;;;;;;;;;;;;;;;;;;;;;;5567:152;1197:2;5633:24;;5629:90;;5567:152;;;;5629:90;259:5564;;1197:2;259:5564;5688:2;259:5564;5629:90;;;4988:3;5022:4;;;;:::i;:::-;259:5564;;;;;5048:9;;;:22;;;4988:3;5044:466;;;259:5564;;;5146:2;259:5564;;;;;;;;;;;5197:102;;;5044:466;259:5564;5044:466;;259:5564;4968:9;;;;;5197:102;259:5564;;;5243:26;1197:2;5243:26;;5239:37;5197:102;5239:37;5271:5;;;;;5044:466;259:5564;5327:9;;;;;;;:24;;;;5044:466;-1:-1:-1;5323:187:2;;;259:5564;5402:17;5323:187;5044:466;;5323:187;259:5564;5473:18;;;;;5327:24;5340:11;;;5327:24;;;5048:22;5061:9;259:5564;5061:9;;;5048:22;;1060:541;1238:21;1228:31;1238:21;;1297:26;;;:::i;:::-;259:5564;;;;;4927:21;259:5564;4968:9;259:5564;4979:7;;;;;;4963:561;1955:11;;;;;259:5564;1955:11;259:5564;1955:31;;;;;;259:5564;;;;;;;1955:31;;;;;259:5564;1955:31;;259:5564;1955:31;;259:5564;1955:31;;;;;;;;4963:561;1451:21;;;;;;1410:10;1402:88;;259:5564;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:2;259:5564;;;;;;;;;;;;;1955:31;;;;259:5564;1955:31;;:::i;:::-;259:5564;1955:31;;;;259:5564;;;;;;;;;1955:31;259:5564;;;4988:3;5022:4;;;;:::i;:::-;259:5564;;;;;5048:9;;;:22;;;4988:3;5044:466;;;259:5564;;;5146:2;259:5564;;;;;;;;;;;5197:102;;;5044:466;259:5564;5044:466;;259:5564;4968:9;;;;;5197:102;259:5564;;;5243:26;1363:2;5243:26;;5239:37;5197:102;5239:37;5271:5;;5044:466;259:5564;5327:9;;;;;;;:24;;;;5044:466;-1:-1:-1;5323:187:2;;;259:5564;5402:17;5323:187;5044:466;;5323:187;5473:18;259:5564;5473:18;259:5564;;5473:18;5327:24;5340:11;;;5327:24;;;5048:22;5061:9;259:5564;5061:9;;;5048:22;;1224:377;1575:15;259:5564;1575:15;259:5564;;1575:15;259:5564;;;;;;;;;;;;;;;286:44;259:5564;;;;;;;;;;;;;;;;336:27;259:5564;336:27;259:5564;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;259:5564:2;;;;;-1:-1:-1;259:5564:2;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;2754:467;;259:5564;;2914:13;259:5564;2929:7;;;;;;3153:15;259:5564;3153:15;;259:5564;3153:15;2938:3;259:5564;;2961:19;;;;:::i;:::-;259:5564;;2961:27;2957:170;;259:5564;;2914:13;;2957:170;259:5564;;;;;2523:18;;259:5564;;2597:22;;;:::i;:::-;2634:17;259:5564;2653:7;;;;;;-1:-1:-1;;259:5564:2;;2984:4;259:5564;;;3047:41;;-1:-1:-1;3040:48:2:o;2662:3::-;2701:7;259:5564;2701:7;259:5564;2701:7;;;:::i;:::-;259:5564;;;2681:27;;;;;:::i;:::-;;259:5564;2634:17;;259:5564;;;;;;;2984:4;259:5564;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1999:354::-;;259:5564;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;3630:7:2;;;;;;259:5564;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;259:5564:2;;;;;;3767:17;;-1:-1:-1;3798:13:2;-1:-1:-1;3831:9:2;-1:-1:-1;3842:8:2;;;;;;;259:5564;;;;;2209:1;259:5564;;2193:17;2189:45;;259:5564;;;;;;;;2308:8;259:5564;4216:8;;259:5564;;;;;;;;;;4206:32;;;:::i;:::-;4253:13;-1:-1:-1;4287:3:2;259:5564;;4268:17;;;;;259:5564;;;;;;;;;;;;4318:20;259:5564;4318:20;;;:::i;:::-;259:5564;;-1:-1:-1;4306:32:2;;;;;:::i;:::-;;259:5564;4253:13;;4268:17;-1:-1:-1;4268:17:2;;-1:-1:-1;;1999:354:2:o;3852:3::-;3879:8;;;:26;;;;3852:3;3875:149;;3852:3;259:5564;;3831:9;;3875:149;259:5564;;3929:41;259:5564;;;;;;;:::i;:::-;;;3950:20;259:5564;3950:20;;259:5564;;3935:11;259:5564;3929:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;259:5564:2;;;;3875:149;;3879:26;3891:7;;259:5564;3891:7;;;;:::i;:::-;259:5564;;3891:14;3879:26;;259:5564;;;;;;;;:::i;:::-;-1:-1:-1;259:5564:2;;-1:-1:-1;259:5564:2;;;;;;;;;;;;;3639:3;3666:7;259:5564;3666:7;;;;:::i;:::-;259:5564;;3666:14;3662:27;;3639:3;259:5564;;3615:13;;3662:27;259:5564;;;;;3662:27;;259:5564;;;;;;;;;;;:::o","linkReferences":{},"immutableReferences":{"681":[{"start":618,"length":32},{"start":1627,"length":32},{"start":2371,"length":32}],"684":[{"start":763,"length":32},{"start":2479,"length":32}]}},"methodIdentifiers":{"aEth()":"030581a7","aaveManager()":"51ef6593","command(string)":"5fcc4500"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aaveManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_aEthAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"aEth\",\"outputs\":[{\"internalType\":\"contract IAEth\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"aaveManager\",\"outputs\":[{\"internalType\":\"contract IAaveETHManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AAVEIntents.sol\":\"aaveIntents\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/AAVEIntents.sol\":{\"keccak256\":\"0xa2ae48c8135dfa87eaef43a1047ad86fd0cb7086a4fd0b700baa488303f5f9a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e4240b9e311c5446ef419572485c84da5208116f607fa1f2ba81312b37aee2ed\",\"dweb:/ipfs/QmZYnbMDJy1yrnJMG2x2gEbHbCmi9NS6zbh6qmN5AMbADF\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]},\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_aaveManager","type":"address"},{"internalType":"address","name":"_aEthAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"aEth","outputs":[{"internalType":"contract IAEth","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"aaveManager","outputs":[{"internalType":"contract IAaveETHManager","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AAVEIntents.sol":"aaveIntents"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/AAVEIntents.sol":{"keccak256":"0xa2ae48c8135dfa87eaef43a1047ad86fd0cb7086a4fd0b700baa488303f5f9a1","urls":["bzz-raw://e4240b9e311c5446ef419572485c84da5208116f607fa1f2ba81312b37aee2ed","dweb:/ipfs/QmZYnbMDJy1yrnJMG2x2gEbHbCmi9NS6zbh6qmN5AMbADF"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"},"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"}},"version":1},"id":2} \ No newline at end of file diff --git a/out/IAEth.sol/IAEth.json b/out/IAEth.sol/IAEth.json new file mode 100644 index 0000000..0f9a806 --- /dev/null +++ b/out/IAEth.sol/IAEth.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintOnDeposit","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"redeem","inputs":[{"name":"redeemTokens","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"dst","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","mintOnDeposit(address,uint256)":"94362e8b","redeem(uint256)":"db006a75","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintOnDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"nani.eth (https://github.com/NaniDAO/ie)\",\"custom:version\":\"2.3.0\",\"details\":\"V2 simulates typical commands (sending and swapping tokens) and includes execution. IE also has a workflow to verify the intent of ERC4337 account userOps against calldata. Example commands include \\\"send nani 100 dai\\\" or \\\"swap usdc for 1 eth\\\" and such variants.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Intents Engine (IE) on Ethereum (IETH)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple helper contract for turning transactional intents into executable code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IAEth\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"mintOnDeposit"},{"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"redeem"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IAEth"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/IENSHelper.json b/out/IAEth.sol/IENSHelper.json new file mode 100644 index 0000000..c673c60 --- /dev/null +++ b/out/IAEth.sol/IENSHelper.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"addr","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"node","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolver","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addr(bytes32)":"3b3b57de","name(bytes32)":"691f3431","node(address)":"bffbe61c","owner(bytes32)":"02571be3","ownerOf(uint256)":"6352211e","resolver(bytes32)":"0178b8bf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ENS name resolution helper contracts interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IENSHelper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IENSHelper"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/IETH.json b/out/IAEth.sol/IETH.json new file mode 100644 index 0000000..958e7af --- /dev/null +++ b/out/IAEth.sol/IETH.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addresses","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkUserOp","inputs":[{"name":"intent","type":"string","internalType":"string"},{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intentMatched","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"command","inputs":[{"name":"intents","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"command","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"escrow","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"executeOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lock","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"names","inputs":[{"name":"addresses","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"order","inputs":[{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"orderHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"maker","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"nonce","type":"uint48","internalType":"uint48"},{"name":"expiry","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previewCommand","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"executeCallData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"send","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setName","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swap","inputs":[{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOutMin","type":"string","internalType":"string"},{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"translateCommand","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"translateExecute","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"translateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheAddressOf","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"node","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheNameOf","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"NameSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PairSet","inputs":[{"name":"token0","type":"address","indexed":false,"internalType":"address"},{"name":"token1","type":"address","indexed":false,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsufficientSwap","inputs":[]},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidReceiver","inputs":[]},{"type":"error","name":"InvalidSelector","inputs":[]},{"type":"error","name":"InvalidSwap","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"Overflow","inputs":[]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040525f5b61000e6100e2565b5181146100d35761002a6100206100e2565b600183019061015e565b5160f81c5f5b6100418361003c6100e2565b61015e565b5160f81c60ff8216146100c957600454680100000000000000008110156100b55760018101806004558110156100a15760ff9160019160045f5260205f208160051c019060f882549160031b16908587831b921b19161790550116610030565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5050600201610006565b604051615f3490816101708239f35b60405190608082016001600160401b038111838210176100b5576040908152604483527f2d00020101000a010700016101620163016401650166016701680169016a016b60208401527f016c016d016e016f0170017101720173017401750176017701780179017a060090830152621a010560e81b6060830152565b9081518110156100a157016020019056fe6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea2646970667358221220844d6d9d4815361df7d6189ce9b423351e0cbef39b3ef172f4980542dd7db0bb64736f6c634300081c0033","sourceMap":"1235:61077:3:-:0;;;-1:-1:-1;8170:6:3;1235:61077;;:::i;:::-;6796:141;8147:21;;;;8207:16;1235:61077;;:::i;:::-;8221:1;1235:61077;;8207:16;;:::i;:::-;6796:141;;;-1:-1:-1;8281:3:3;8266:12;1235:61077;;;:::i;:::-;8266:12;:::i;:::-;6796:141;;;;;;8255:24;;;8308:8;6796:141;;;;;;;8221:1;6796:141;;;8308:8;6796:141;;;;;;;;8221:1;6796:141;8308:8;-1:-1:-1;6796:141:3;;-1:-1:-1;6796:141:3;;;;;;;;;;;;;;;;;;;;;;;;;;;8246:7;;6796:141;1235:61077;;;-1:-1:-1;6796:141:3;;8308:8;6796:141;;-1:-1:-1;6796:141:3;;1235:61077;;;-1:-1:-1;1235:61077:3;;8308:8;1235:61077;;-1:-1:-1;1235:61077:3;8255:24;;;8175:1;1235:61077;8136:9;;8147:21;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;:::o;6796:141::-;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea2646970667358221220844d6d9d4815361df7d6189ce9b423351e0cbef39b3ef172f4980542dd7db0bb64736f6c634300081c0033","sourceMap":"1235:61077:3:-:0;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;31114:475;;;;;;;-1:-1:-1;31602:17:3;;;;:38;;-1:-1:-1;31598:64:3;;31706:72;31114:475;;;;31706:72;;:::i;:::-;31788:141;;;;;;31114:475;;-1:-1:-1;31114:475:3;;;;-1:-1:-1;;31980:40:3;;;;;;-1:-1:-1;35628:503:3;;;;;;;;31788:141;35628:503;;;;;-1:-1:-1;35628:503:3;-1:-1:-1;35628:503:3;;;;;;;;-1:-1:-1;35628:503:3;;31938:276;31114:475;;-1:-1:-1;31114:475:3;32223:214;;1235:61077;32223:214;32419:6;;32291:43;;32293:40;;;;32291:43;:::i;:::-;36268:230;-1:-1:-1;36268:230:3;;;;-1:-1:-1;36268:230:3;31114:475;36268:230;;;;;;31114:475;;;;32419:6;:::i;:::-;32223:214;32293:40;;;32291:43;:::i;31980:40::-;;;;31938:276;32140:49;;32148:40;;;;;;;31114:475;;;;32140:49;;:::i;:::-;31938:276;;32148:40;;;;;31788:141;;;;31598:64;31649:13;-1:-1:-1;31649:13:3;1235:61077;-1:-1:-1;31649:13:3;31602:38;31623:17;-1:-1:-1;31623:17:3;;;31602:38;;1235:61077;37130:141;;;;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23375:189;1235:61077;;;:::i;:::-;23375:189;;;;;:::i;:::-;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;7899:28;1235:61077;7899:28;;;;;;1235:61077;7899:28;;:::i;:::-;1235:61077;;;;;;;;;;;;;;38059:12;1235:61077;;;:::i;:::-;38059:12;;;;;:::i;1235:61077::-;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;7287:49;1235:61077;;;;;;-1:-1:-1;;;;;1235:61077:3;;;7287:49;-1:-1:-1;;;;;1235:61077:3;7287:49;;1235:61077;;7287:49;;;;1235:61077;7287:49;;;1235:61077;7287:49;;-1:-1:-1;;;;;1235:61077:3;7287:49;;1235:61077;;7287:49;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;46671:140;;;;;46891:53;1235:61077;;-1:-1:-1;;;;;1235:61077:3;;;-1:-1:-1;;;;;1235:61077:3;;46824:15;46820:56;;1235:61077;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;46915:5;1235:61077;;;;;;;;-1:-1:-1;1235:61077:3;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;46891:53;1235:61077;46820:56;46841:35;-1:-1:-1;46841:35:3;-1:-1:-1;;;;;;1235:61077:3;46820:56;;1235:61077;;;;;-1:-1:-1;;1235:61077:3;;;;;;;37373:261;;;;;;;;;1235:61077;;;39775:6;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;39775:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39775:6;1235:61077;;39797:19;1235:61077;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;39797:19;1235:61077;;39830:10;:21;39826:48;;1235:61077;-1:-1:-1;;;;;1235:61077:3;4081:42;39888:16;39884:60;;1235:61077;37654:91;37373:261;37654:91;1235:61077;39884:60;39933:10;4081:42;;39830:10;39933;:::i;:::-;39884:60;;;39826:48;39860:14;1235:61077;39860:14;1235:61077;;39860:14;37373:261;;1235:61077;37373:261;1235:61077;37373:261;;1235:61077;;;;;-1:-1:-1;;1235:61077:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:3;;:::i;:::-;;;;;7408:74;1235:61077;;-1:-1:-1;;;;;1235:61077:3;;;7408:74;1235:61077;-1:-1:-1;1235:61077:3;;;;-1:-1:-1;;;;;1235:61077:3;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:3;;;;;-1:-1:-1;;;;;1235:61077:3;;:::i;:::-;;;;7178:49;1235:61077;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:3;;44415:22;6631:54;44415:22;;1235:61077;;44415:22;;1235:61077;;44415:22;;;6642:42;44415:22;;;;;;;1235:61077;44415:22;;;1235:61077;;;;6631:54;44465:27;;;1235:61077;44465:27;;1235:61077;;44465:27;44415:22;44465:27;6327:42;44465:27;;;;;;-1:-1:-1;;;;;44465:27:3;1235:61077;44465:27;;;;;1235:61077;;44415:22;1235:61077;;;44454:50;;;;;6631:54;44454:50;;1235:61077;44454:50;;1235:61077;;44454:50;;;;;;1235:61077;44454:50;;;1235:61077;;;;;;;;;;;;;;;;:::i;44454:50::-;;;;1235:61077;44454:50;;;;;;:::i;:::-;;;6316:54;1235:61077;6316:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1235:61077;;;;;;;:::i;:::-;6316:54;;;1235:61077;6316:54;;;;;;;1235:61077;6316:54;1235:61077;6316:54;;1235:61077;6316:54;;;;;1235:61077;;;;;44454:50;;;1235:61077;;6631:54;1235:61077;6631:54;;;;;44465:27;44415:22;44465:27;;;;;1235:61077;44465:27;1235:61077;44465:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;44415:22;;;1235:61077;44415:22;;1235:61077;44415:22;;;;;;6631:54;44415:22;;;:::i;:::-;;;6631:54;;;;;44415:22;;;;;;-1:-1:-1;44415:22:3;;1235:61077;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;43085:15;1235:61077;43085:15;;;43105:26;1235:61077;43085:15;;;;:::i;:::-;43078:23;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:3;43078:53;43105:26;;43150:33;43167:15;;;;:::i;43078:157::-;43202:33;43219:15;;;;:::i;:::-;43202:33;;:::i;:::-;43078:157;;1235:61077;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22061:19;;;;;;1235:61077;22082:3;1235:61077;;;;;;22109:10;1235:61077;;;;;;;;;;:::i;22109:10::-;-1:-1:-1;;1235:61077:3;;;;;;22050:9;;1235:61077;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;46148:140;;;;;;1235:61077;46331:23;1235:61077;-1:-1:-1;;;;;1235:61077:3;;;;:::i;:::-;46331:23;:::i;:::-;1235:61077;;;;;;46365:5;1235:61077;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;46405:50;1235:61077;;;;;;;-1:-1:-1;;1235:61077:3;46365:5;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46405:50;;;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;46405:50;1235:61077;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;;;23915:190;1235:61077;;;:::i;:::-;23915:190;;;;;:::i;1235:61077::-;;-1:-1:-1;;1235:61077:3;;;;;;;37373:261;;;;;;;;;1235:61077;;;40107:6;1235:61077;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:3;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;40107:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;40107:6;1235:61077;;40129:19;1235:61077;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;40129:19;1235:61077;;40162:15;:26;40158:53;;-1:-1:-1;;;;;1235:61077:3;;;;4081:42;40225:16;;40221:134;4081:42;;;;40270:10;4081:42;;;40243:10;40270;:::i;:::-;1235:61077;;4081:42;40369:17;;4081:42;;;;40410:9;:24;4081:42;;40476:9;40410;-1:-1:-1;;;;;40410:9:3;1235:61077;;;40476:9;:::i;40365:227::-;1235:61077;-1:-1:-1;;;;;40569:11:3;1235:61077;;;4081:42;;40545:10;;40569:11;;:::i;:::-;40365:227;;40221:134;1235:61077;40344:10;1235:61077;;;4081:42;;40332:10;;40344;;:::i;:::-;40221:134;;40158:53;40197:14;1235:61077;40197:14;1235:61077;;40197:14;1235:61077;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1235:61077:3;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;1235:61077:3;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;1235:61077:3;;;;;-1:-1:-1;1235:61077:3;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7899:28;1235:61077;;;;;;7899:28;-1:-1:-1;1235:61077:3;;-1:-1:-1;1235:61077:3;;;-1:-1:-1;1235:61077:3;:::o;40746:160::-;;1235:61077;40895:1;1235:61077;;;;;40895:1;-1:-1:-1;;1235:61077:3;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1235:61077:3;;;;;;;;:::o;22225:811::-;;;-1:-1:-1;1235:61077:3;22440:2;1235:61077;;22417:25;22413:144;22440:2;;;22453:24;;;:::i;:::-;22413:144;;-1:-1:-1;;;;;1235:61077:3;;22571:20;22567:51;;22413:144;22648:22;22698:126;22648:22;;;;;:::i;:::-;-1:-1:-1;22746:48:3;;-1:-1:-1;22746:13:3;;;;:48;22698:126;:::i;:::-;1235:61077;-1:-1:-1;;;;;1235:61077:3;;4081:42;22839:13;4081:42;;22876:9;;;:20;4081:42;;22931:7;;;:::i;22835:195::-;22994:10;23011:7;22994:10;;23011:7;;:::i;22746:48::-;22773:21;1235:61077;22773:21;;;:::i;:::-;1235:61077;22746:48;22698:126;:::i;22567:51::-;22648:22;1235:61077;;;-1:-1:-1;;;;;1235:61077:3;;22698:126;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;22567:51;;;;;22413:144;22535:21;;22513:44;22535:21;;;:::i;:::-;22513:44;:::i;:::-;22492:65;;22413:144;;;6316:54;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;6316:54;:::o;18796:3095::-;1235:61077;18796:3095;18896:25;18796:3095;1235:61077;;;:::i;18896:25::-;18948:23;;;:::i;:::-;1235:61077;18998:16;;:52;;;;18796:3095;18998:83;;;;18796:3095;18998:116;;;;18796:3095;18981:2904;;;19262:24;;19333:13;19262:24;;:::i;18981:2904::-;1235:61077;19381:16;;:48;;;;18981:2904;19381:84;;;;18981:2904;19381:117;;;;18981:2904;19364:2521;;;19738:24;;19937:16;19738:24;;:::i;19364:2521::-;1235:61077;19988:16;;:38;;;;19364:2521;19984:1901;;;23375:189;20235:24;;;:::i;23375:189::-;-1:-1:-1;20469:108:3;;-1:-1:-1;20469:108:3;19984:1901;1235:61077;20597:18;;1235:61077;;23915:190;20824:24;;;:::i;20593:1292::-;1235:61077;21188:17;1235:61077;;21433:24;38059:12;21433:24;;:::i;:::-;38059:12;;;:::i;21184:701::-;21832:15;-1:-1:-1;21832:15:3;;-1:-1:-1;21832:15:3;19988:38;20008:18;1235:61077;20008:18;;19988:38;;19381:117;19481:17;1235:61077;19481:17;;19381:117;;:84;19445:20;1235:61077;19445:20;;19381:84;;:48;19413:16;1235:61077;19413:16;;19381:48;;18998:116;19097:17;1235:61077;19097:17;;18998:116;;:83;19066:15;1235:61077;19066:15;;18998:83;;:52;19030:20;1235:61077;19030:20;;18998:52;;4211:42;;;;;;;;;:::o;28048:2722::-;;;;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;-1:-1:-1;1235:61077:3;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;-1:-1:-1;1235:61077:3;;;;;;-1:-1:-1;1235:61077:3;;-1:-1:-1;28322:19:3;-1:-1:-1;1235:61077:3;28380:2;1235:61077;;28355:27;28351:218;28380:2;;;-1:-1:-1;;;;;28411:26:3;;;:::i;:::-;1235:61077;;;28351:218;-1:-1:-1;;;;;1235:61077:3;;;28583:26;28579:65;;28351:218;-1:-1:-1;1235:61077:3;;28380:2;28658:28;28380:2;;-1:-1:-1;;;;;28716:27:3;;;:::i;:::-;1235:61077;;;28654:224;-1:-1:-1;;;;;1235:61077:3;;;28892:27;28888:68;;28654:224;28967:14;-1:-1:-1;1235:61077:3;;;28991:239;;28654:224;-1:-1:-1;;1235:61077:3;;29256:27;;29309:204;;;;;;29545:8;29309:204;;1235:61077;;;29528:25;;29524:48;;1235:61077;;;4081:42;-1:-1:-1;;;;;1235:61077:3;;;29595:19;1235:61077;;;;29624:51;;29309:204;29685:35;5994:10;1235:61077;29685:35;;-1:-1:-1;;;;;29685:35:3;-1:-1:-1;29685:35:3;;;5994:10;29685:35;;;29309:204;4081:42;1235:61077;;;;29744:20;1235:61077;;;;;29774:37;;29309:204;1235:61077;;29853:27;:15;;;;29894:10;30010:82;29894:10;;;;;29849:116;;1235:61077;;;;;30010:82;;:::i;:::-;1235:61077;;;;;;;;;;30173:40;;;;;;;30251:9;;;;;4081:42;30251:58;;30323:63;;;;;5994:10;30323:63;;1235:61077;;;;;;;;;;;;;;;;;5994:10;;;1235:61077;30400:203;;5994:10;;;;;;;30491;1235:61077;5994:10;;;;;1235:61077;5994:10;;;;;;1235:61077;5994:10;;;;;;1235:61077;5994:10;;;;;;30400:203;;;;;;;:::i;:::-;1235:61077;;;30137:476;;;;;;;6631:54;30137:476;;1235:61077;30137:476;;;1235:61077;;;;5994:10;;;1235:61077;5994:10;;;1235:61077;;5994:10;;;1235:61077;;5994:10;;;;;;;;;:::i;:::-;30137:476;1235:61077;;30137:476;;;;;;;-1:-1:-1;;;30137:476:3;;;30323:63;30628:11;;30624:140;;30323:63;28048:2722;;;;:::o;30624:140::-;30667:33;;30669:30;;;;30667:33;:::i;:::-;30659:51;30655:98;;30624:140;;;;;;30655:98;30735:18;-1:-1:-1;30735:18:3;30137:476;-1:-1:-1;30735:18:3;30137:476;;;;1235:61077;30137:476;;1235:61077;30137:476;;;;;;1235:61077;30137:476;;;:::i;:::-;;;5994:10;;;;1235:61077;5994:10;;;;;30137:476;;;;;;;-1:-1:-1;30137:476:3;;30323:63;;6163:49;30323:63;;;30251:58;30287:22;4081:42;;30287:22;:::i;:::-;30251:58;;;30173:40;30208:4;30173:40;;;29849:116;29937:28;;;;;30010:82;29937:28;;:::i;:::-;29919:46;;;29849:116;;;29774:37;4211:42;1235:61077;;29774:37;;29685:35;4211:42;1235:61077;;29685:35;;29624:51;4081:42;;;;;;;;29648:9;:26;4081:42;;29624:51;;;;;;;;29524:48;29562:10;-1:-1:-1;29562:10:3;;-1:-1:-1;29562:10:3;29309:204;29545:8;;29353:160;;29411:15;;;;:58;-1:-1:-1;;;;;1235:61077:3;;;29353:160;;:::i;:::-;29309:204;;29411:58;1235:61077;;29442:27;-1:-1:-1;;;;;1235:61077:3;;;29442:27;:::i;:::-;1235:61077;29411:58;;28991:239;29113:61;;-1:-1:-1;29051:168:3;;29113:16;;;;:61;-1:-1:-1;;;;;1235:61077:3;;;29051:168;;:::i;:::-;28991:239;;;;;29113:61;1235:61077;;29146:28;-1:-1:-1;;;;;1235:61077:3;;;29146:28;:::i;:::-;1235:61077;29113:61;;28888:68;1235:61077;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;28888:68;;;28654:224;-1:-1:-1;;;;;28840:24:3;;28801:77;28840:24;;;:::i;28801:77::-;28770:108;1235:61077;;;28654:224;;28579:65;1235:61077;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;28579:65;;;28351:218;-1:-1:-1;;;;;28532:23:3;;28493:76;28532:23;;;:::i;28493:76::-;28464:105;1235:61077;;;28351:218;;16067:384;;16273:22;16067:384;16273:22;:::i;:::-;1235:61077;;;;;;;;16335:15;;;;;;;;:::i;:::-;16309:48;;;;16305:66;;1235:61077;;;16428:15;1235:61077;;16388:26;16428:15;;:::i;:::-;1235:61077;;;:::i;:::-;;;;;;16418:26;16388:56;16067:384;:::o;16305:66::-;16359:12;;;;1235:61077;16359:12;:::o;8716:3023::-;1235:61077;9051:21;9238:25;1235:61077;;9124:28;;1235:61077;;;;:::i;9238:25::-;9290:23;;;;:::i;:::-;1235:61077;9340:16;;:52;;;;8716:3023;9340:83;;;;8716:3023;9340:116;;;;8716:3023;9323:2410;;;9607:24;;;;;;:::i;:::-;1235:61077;;;;9694:96;;1235:61077;;12229:2;12213:18;12229:2;;12242:17;;;:::i;:::-;12209:123;;-1:-1:-1;;;;;1235:61077:3;;12346:20;12342:59;;12209:123;1235:61077;;12509:119;1235:61077;12459:30;4081:42;-1:-1:-1;;;;;1235:61077:3;;12424:13;12459:30;;:::i;:::-;-1:-1:-1;12550:48:3;;-1:-1:-1;12550:13:3;;;;:48;12509:119;:::i;:::-;12643:6;;;12639:70;;12550:48;12797:20;;;;;;;12819:19;;;;;-1:-1:-1;;;;;1235:61077:3;;12737:122;;;;;;1235:61077;12737:122;;;1235:61077;;;;;;;;;;12737:122;1235:61077;;;;;;;:::i;:::-;12737:122;-1:-1:-1;;12737:122:3;;;;;;:::i;:::-;9645:145;;;;9323:2410;8716:3023::o;12819:19::-;1235:61077;12819:19;;12797:20;;;;;12639:70;1235:61077;;;;12662:47;;;;;-1:-1:-1;;;;;1235:61077:3;;12662:47;;;1235:61077;;;;;;;12662:47;;;;;;:::i;:::-;12639:70;;;12342:59;12509:119;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;12342:59;;;;12209:123;12317:14;;12295:37;12317:14;;;:::i;12295:37::-;12274:58;;12209:123;;;9323:2410;9824:16;;;;;1235:61077;9824:16;;:48;;;;9323:2410;9824:84;;;;9323:2410;9824:117;;;;9323:2410;9807:1926;;;10181:24;;;10297:159;10181:24;;:::i;:::-;10297:159;;;;;:::i;:::-;10250:206;;;;;;;1235:61077;5994:10;1235:61077;;5994:10;1235:61077;5994:10;;10481:27;;;5994:10;10481:27;;;;;;;:::i;:::-;9807:1926;8716:3023::o;9807:1926::-;1235:61077;10542:16;;;;;;;:38;;;;9807:1926;10542:60;;;;9807:1926;10525:1208;;;10825:24;;;;:::i;:::-;10910:142;;;;1235:61077;10910:142;;;13258:16;1235:61077;;13304:2;1235:61077;;13288:18;13284:123;13304:2;;;13317:17;;;:::i;:::-;13284:123;;-1:-1:-1;;;;;1235:61077:3;;13421:20;13417:59;;13284:123;13498:30;13548:119;13498:30;13742:13;13498:30;;13694:22;13498:30;;:::i;:::-;-1:-1:-1;13589:48:3;;-1:-1:-1;13589:13:3;;;;:48;13548:119;:::i;:::-;13694:22;;:::i;:::-;13742:13;;:::i;:::-;1235:61077;13794:17;;:39;;;;13589:48;13790:595;;;1235:61077;13869:9;1235:61077;13790:595;14409:15;1235:61077;10863:189;;;10525:1208;1235:61077::o;13790:595::-;1235:61077;13903:14;;:33;;;;13790:595;13899:486;;;1235:61077;13972:6;1235:61077;13790:595;;13899:486;1235:61077;14003:15;;:35;;;;13899:486;13999:386;;;1235:61077;14074:7;1235:61077;13790:595;;13999:386;1235:61077;14106:16;;:37;;;;13999:386;14102:283;;;1235:61077;14179:7;1235:61077;13790:595;;14102:283;1235:61077;14211:15;;:35;;;;;14102:283;-1:-1:-1;14207:178:3;;;14282:8;1235:61077;13790:595;;14211:35;1235:61077;14230:16;;;14211:35;;;14106:37;14126:17;1235:61077;14126:17;;14106:37;;14003:35;14022:16;1235:61077;14022:16;;14003:35;;13903:33;13921:15;1235:61077;13921:15;;13903:33;;13794:39;13815:18;1235:61077;13815:18;;13794:39;;13417:59;13498:30;1235:61077;;13694:22;1235:61077;13742:13;1235:61077;-1:-1:-1;;;;;1235:61077:3;;13548:119;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;13417:59;;;;;;;;13284:123;13392:14;;13370:37;13392:14;;;:::i;13370:37::-;13349:58;;13284:123;;;10525:1208;11073:17;;;;1235:61077;11073:17;1235:61077;;11434:156;11318:24;5994:10;11318:24;;:::i;11434:156::-;1235:61077;;5994:10;;;;;11615:27;;;5994:10;11615:27;;;11387:203;;;;;;;;;11615:27;;1235:61077;11615:27;:::i;10542:60::-;10584:18;1235:61077;10584:18;;10542:60;;:38;10562:18;1235:61077;10562:18;;10542:38;;9824:117;9924:17;1235:61077;9924:17;;9824:117;;:84;9888:20;1235:61077;9888:20;;9824:84;;:48;9856:16;1235:61077;9856:16;;9824:48;;9340:116;9439:17;1235:61077;9439:17;;9340:116;;:83;9408:15;1235:61077;9408:15;;9340:83;;:52;9372:20;1235:61077;9372:20;;9340:52;;43477:752;1235:61077;;;;43477:752;1235:61077;;43726:2;43704:24;;43726:2;;43755:23;;;;:::i;43700:523::-;43833:30;1235:61077;;;43833:30;1235:61077;;;;;;;;;;;;;43833:30;;;1235:61077;;;;;;;;43833:30;;;;;;;;;;:::i;:::-;1235:61077;;;;44774:19;1235:61077;;;44827:584;44834:6;;;45753:114;;;43833:30;45753:114;;;;;;1235:61077;;45459:54;43833:30;45459:54;;1235:61077;;;;;;;;45459:54;;;;;;:::i;:::-;1235:61077;45449:65;;1235:61077;;;43887:24;6631:54;43887:24;;;1235:61077;43887:24;;1235:61077;43833:30;43887:24;;;6327:42;43887:24;;;;;;;1235:61077;43887:24;;;44827:584;43879:32;6485:42;-1:-1:-1;;;;;43879:32:3;1235:61077;43929:32;43925:96;;44827:584;1235:61077;;44057:27;6631:54;44057:27;;;1235:61077;44057:27;;1235:61077;43833:30;44057:27;43887:24;44057:27;6327:42;44057:27;;;;;;;-1:-1:-1;;;;;44057:27:3;43833:30;44057:27;1235:61077;44057:27;;;44827:584;1235:61077;43887:24;1235:61077;;44046:50;;;;6631:54;44046:50;;;1235:61077;44046:50;;1235:61077;;44046:50;;;;;;;1235:61077;44046:50;;;44827:584;44035:61;-1:-1:-1;;;;;44035:61:3;1235:61077;44135:22;44131:52;;43477:752::o;44131:52::-;44166:17;1235:61077;44166:17;1235:61077;;44166:17;44046:50;;;;;43833:30;44046:50;43833:30;44046:50;;;;;;;:::i;:::-;;;;;44057:27;;;;;;;;;;;;;;:::i;:::-;;;;43925:96;1235:61077;;;;6631:54;43987:34;;;1235:61077;43987:34;;1235:61077;43833:30;43987:34;43887:24;43987:34;6485:42;43987:34;;;;;;;1235:61077;43987:34;;;43925:96;43979:42;43925:96;;;43987:34;;;;43833:30;43987:34;43833:30;43987:34;;;;;;;:::i;:::-;;;;43887:24;;;;;43833:30;43887:24;43833:30;43887:24;;;;;;;:::i;:::-;;;;;44842:3;1235:61077;-1:-1:-1;;1235:61077:3;;44876:20;;;;;:::i;:::-;1235:61077;;;;;44918:8;;44914:240;;5994:10;-1:-1:-1;4081:42:3;;;1235:61077;;5994:10;1235:61077;;;;;;;;;;5994:10;1235:61077;;;;;;;;;;;;;;45261:34;;4081:42;;-1:-1:-1;;45318:12:3;44894:1;45318:12;;45314:83;;44842:3;;;44827:584;1235:61077;44827:584;;;;45314:83;45354:24;;;;:::i;:::-;;45314:83;;;;44914:240;45753:114;;;;;-1:-1:-1;;45753:114:3;;;43833:30;45753:114;;;;;1235:61077;;44992:54;43833:30;44992:54;;1235:61077;;;;;;;;44992:54;;;;;;:::i;:::-;1235:61077;44957:111;;45090:15;45127:8;;;37331:420;;;37373:261;;;;;;;;;1235:61077;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;38955:143;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;38107:18;1235:61077;38135:19;1235:61077;;38194:2;1235:61077;;38169:27;38165:200;38194:2;;;-1:-1:-1;;;;;38210:26:3;;;:::i;:::-;1235:61077;;;38165:200;-1:-1:-1;;;;;1235:61077:3;;;38379:23;38375:67;;38165:200;-1:-1:-1;1235:61077:3;;38194:2;38456:28;38194:2;;38511:27;-1:-1:-1;;;;;38511:27:3;38793:138;38511:27;;;:::i;:::-;1235:61077;;;38452:218;-1:-1:-1;;;;;1235:61077:3;;;38684:24;38680:89;;38452:218;-1:-1:-1;;38843:15:3;;;;-1:-1:-1;;;;;1235:61077:3;;;38793:138;;:::i;:::-;1235:61077;;39006:16;;;;:58;-1:-1:-1;;;;;1235:61077:3;;;38955:143;;:::i;:::-;1235:61077;;4081:42;-1:-1:-1;;;;;1235:61077:3;;;39113:16;39109:54;;39006:58;-1:-1:-1;;;;;39207:10:3;1235:61077;39207:10;;;;;;;1235:61077;;;;39266:27;39262:120;39266:15;;;39207:10;;;39262:120;1235:61077;;;;39449:15;1235:61077;;;;39515:7;39449:15;1235:61077;;;;;;;;;;39561:13;;1235:61077;39561:13;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39561:13;;;;;;:::i;:::-;1235:61077;39551:24;;1235:61077;;;;39537:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4081:42;39537:6;1235:61077;;;4081:42;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1235:61077:3;;;;;;;;;;37654:91;;37373:261;37654:91;37331:420::o;39262:120::-;39354:28;;;;:::i;:::-;39336:46;;;39262:120;;39109:54;4081:42;;;;;39139:9;:23;4081:42;;39109:54;;;;;;39006:58;1235:61077;;39039:25;-1:-1:-1;;;;;1235:61077:3;;;39039:25;:::i;:::-;1235:61077;39006:58;;38680:89;1235:61077;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;38680:89;;;;38452:218;38793:138;38632:24;;;38593:77;38632:24;-1:-1:-1;;;;;38632:24:3;;:::i;38593:77::-;38565:105;1235:61077;;;38452:218;;38375:67;1235:61077;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;38375:67;;;38165:200;-1:-1:-1;;;;;38328:23:3;;38289:76;38328:23;;;:::i;38289:76::-;38263:102;1235:61077;;;38165:200;;1235:61077;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;:::o;41122:1714::-;;1235:61077;41345:2;1235:61077;;;41306:92;;41345:2;-1:-1:-1;;;;;41306:92:3;;41343:1;1235:61077;;41306:92;:::i;:::-;1235:61077;;41417:10;;41413:363;;1235:61077;;41831:3;1235:61077;;;;;;41827:3;1235:61077;;;;41811:53;41840:24;41811:53;;;;;:125;;;;41122:1714;41790:185;;;1235:61077;;42502:299;42177:34;42502:299;42177:34;1235:61077;42177:34;;;;:::i;:::-;42089:122;;;;;;1235:61077;;42229:24;42225:51;;41122:1714;42294:13;42290:51;;41122:1714;1235:61077;;;;;42757:22;-1:-1:-1;;;;;42601:36:3;42390:46;1235:61077;;;41831:3;1235:61077;;42390:46;;1235:61077;;42390:46;:::i;:::-;42544:31;;;;;;1235:61077;;;;;;:::i;:::-;;;;;;;;;42544:31;42601:36;:::i;:::-;1235:61077;;42757:22;:::i;:::-;1235:61077;;;;;;;;;;;;42502:299;;;1235:61077;;;;;;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;42502:299;;-1:-1:-1;;42502:299:3;;;;;;:::i;42544:31::-;1235:61077;;;;;;:::i;:::-;;;;;;;;;42544:31;42601:36;:::i;42290:51::-;42320:21;;;;;;;;;-1:-1:-1;;;;;42601:36:3;42390:46;1235:61077;42320:21;;41831:3;1235:61077;42320:21;42757:22;42320:21;;:::i;:::-;1235:61077;42290:51;;;;;;;;;;;;;;;;42225;1235:61077;;;-1:-1:-1;1235:61077:3;42263:5;1235:61077;;;;-1:-1:-1;1235:61077:3;;:::i;:::-;42225:51;;;41790:185;41958:17;-1:-1:-1;41958:17:3;41343:1;-1:-1:-1;41958:17:3;41811:125;1235:61077;;;41913:23;-1:-1:-1;41884:52:3;;;41811:125;;;41413:363;41506:233;41589:30;;1235:61077;41589:30;;;1235:61077;41506:233;41691:22;41589:30;;;;:::i;:::-;41691:22;;:::i;:::-;1235:61077;;41506:233;;;1235:61077;41506:233;;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;41506:233;;-1:-1:-1;;41506:233:3;;;;;;:::i;8987:1026:1:-;;9132:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:1026;9132:875;;;;;;;8987:1026::o;9132:875::-;;;;;;;;;;;;;;;;;;;;3909:342;4024:221;3909:342;;;4024:221;;;;;;;3909:342::o;4024:221::-;;;;;;;5159:42:3;;;;;;;-1:-1:-1;;;;;5159:42:3;;;;;;1235:61077;;;;5159:42;;;1235:61077;;5159:42;;;1235:61077;5159:42;;;;1235:61077;5159:42;;;1235:61077;5159:42;;;;;;;;;;:::i;:::-;;;1235:61077;5159:42::o;:::-;;;;;;-1:-1:-1;;;;;5159:42:3;;;;;1235:61077;;;;5159:42;;;1235:61077;;5159:42;;;1235:61077;5159:42;;;;1235:61077;5159:42;;;1235:61077;5159:42;;;;;;;;;;:::i;24197:3763::-;;;;;1235:61077;24442:14;1235:61077;;24519:2;1235:61077;;24496:25;24492:137;24519:2;;;24532:24;;;:::i;:::-;24492:137;;-1:-1:-1;;;;;1235:61077:3;;24643:20;24639:59;;24492:137;24728:30;;;:::i;:::-;-1:-1:-1;24827:48:3;;-1:-1:-1;24827:13:3;;;;;24786:119;24827:48;;24786:119;;:::i;:::-;24932:22;;;;:::i;:::-;24980:13;;;:::i;:::-;1235:61077;25008:17;;:39;;;;24827:48;25004:547;;;1235:61077;25079:9;1235:61077;;;;;;25079:9;1235:61077;;;;;;;25004:547;;-1:-1:-1;;;;;1235:61077:3;;4081:42;25565:13;4081:42;;25630:9;;;:20;4081:42;;25798:25;;;;;;;;;;;;;;25849;;;;25858:10;;25849:25;;1235:61077;;26000:614;;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;;;;26000:614;1235:61077;26000:614;-1:-1:-1;;26000:614:3;;;;;;;;:::i;:::-;1235:61077;;25696:1015;;;;;6631:54;25696:1015;;26666:15;1235:61077;25696:1015;5159:42;25696:1015;;;;;;:::i;:::-;;;;;5297:42;26000:614;25696:1015;;;;;;;;;;25669:1042;;:::o;25696:1015::-;;;26000:614;25696:1015;;26000:614;25696:1015;;;;;;6631:54;25696:1015;;;:::i;:::-;;;6631:54;;;;;25669:1042;:::o;25696:1015::-;;;-1:-1:-1;25696:1015:3;;;1235:61077;;6631:54;;;;;;;;25849:25;;;;25798;25813:10;25798:25;;;4081:42;;;;25561:2393;26800:4;;;;;;26807:7;26800:4;;;;;;;26780:10;26807:7;;:::i;:::-;5297:42;15943:691:1;;;;;;1235:61077:3;15943:691:1;;1235:61077:3;15943:691:1;;;;;;;;1235:61077:3;15943:691:1;;;;;;25561:2393:3;15943:691:1;1235:61077:3;15943:691:1;;1235:61077:3;;27218:614;;;15943:691:1;27218:614:3;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;15943:691:1;1235:61077:3;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;15943:691:1;1235:61077:3;;;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;15943:691:1;1235:61077:3;;;;;27218:614;15943:691:1;27218:614:3;-1:-1:-1;;27218:614:3;;;;;;;;:::i;:::-;1235:61077;;26934:995;;;;;;;6631:54;26934:995;;27884:15;1235:61077;26780:10;;5159:42;26934:995;;;;;;:::i;:::-;;;;1235:61077;5297:42;15943:691:1;26934:995:3;;;;;;;1235:61077;26934:995;;;26907:1022;;:::o;15943:691:1:-;;;;;;;;;;;;;;;1235:61077:3;15943:691:1;;;;25004:547:3;1235:61077;25109:14;;:33;;;;25004:547;25105:446;;;1235:61077;25174:6;1235:61077;;;;;;25174:6;1235:61077;;;;;;;25105:446;25004:547;;25105:446;1235:61077;25201:15;;:35;;;;25105:446;25197:354;;;1235:61077;25268:7;1235:61077;;;;;;25268:7;1235:61077;;;;;;;25197:354;25004:547;;25197:354;1235:61077;25296:16;;:37;;;;25197:354;25292:259;;;1235:61077;25365:7;1235:61077;;;;;;25365:7;1235:61077;;;;;;;25292:259;25004:547;;25292:259;1235:61077;25393:15;;:35;;;;;25292:259;-1:-1:-1;25389:162:3;;;25460:8;1235:61077;;;;;;25460:8;1235:61077;;;;;;;25389:162;25004:547;;25393:35;1235:61077;25412:16;;;25393:35;;;25296:37;25316:17;1235:61077;25316:17;;25296:37;;25201:35;25220:16;1235:61077;25220:16;;25201:35;;25109:33;25127:15;1235:61077;25127:15;;25109:33;;25008:39;25029:18;1235:61077;25029:18;;25008:39;;24827:48;24786:119;24854:21;;1235:61077;24854:21;;;:::i;:::-;1235:61077;24827:48;;24639:59;1235:61077;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;24639:59;;;24492:137;24614:14;;24592:37;24614:14;;;:::i;24592:37::-;24571:58;;24492:137;;;24197:3763;;;1235:61077;;24519:2;1235:61077;;24496:25;24492:137;24519:2;;;24532:24;;;:::i;:::-;24492:137;;-1:-1:-1;;;;;1235:61077:3;;24643:20;24639:59;;24492:137;24728:30;;;:::i;:::-;-1:-1:-1;24827:48:3;;-1:-1:-1;24827:13:3;;;;;24786:119;24827:48;;24786:119;;:::i;:::-;24932:22;;;;:::i;:::-;24980:13;;;:::i;:::-;1235:61077;25008:17;;:39;;;;24827:48;25004:547;;;1235:61077;25079:9;1235:61077;;;;;;25079:9;1235:61077;;;;;;;25004:547;;-1:-1:-1;;;;;1235:61077:3;;4081:42;25565:13;4081:42;;25630:9;;;:20;4081:42;;1235:61077;;26000:614;;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;23546:4;1235:61077;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;23546:4;1235:61077;;;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;26000:614;1235:61077;;;;;;;;;;23546:4;1235:61077;;;;;26000:614;23546:4;26000:614;-1:-1:-1;;26000:614:3;;;;;;;;:::i;:::-;1235:61077;;25696:1015;;;;;6631:54;25696:1015;;26666:15;1235:61077;25858:10;;;5159:42;25696:1015;;;;;;:::i;:::-;;;;;5297:42;26000:614;25696:1015;;;;;;;1235:61077;25696:1015;;;25669:1042;;:::o;25561:2393::-;26800:4;;;;26807:7;26800:4;;;;26780:10;26807:7;;:::i;:::-;5297:42;15943:691:1;;;;;;1235:61077:3;15943:691:1;;1235:61077:3;15943:691:1;;;;;;;23546:4:3;1235:61077;15943:691:1;;;;;;25561:2393:3;15943:691:1;1235:61077:3;15943:691:1;;1235:61077:3;;27218:614;;;15943:691:1;27218:614:3;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;23546:4;1235:61077;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;23546:4;1235:61077;;;;-1:-1:-1;;;1235:61077:3;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:3;;;;15943:691:1;1235:61077:3;;;;;;;;;;23546:4;1235:61077;;;;;27218:614;23546:4;27218:614;-1:-1:-1;;27218:614:3;;;;;;;;:::i;:::-;1235:61077;;26934:995;;;;;;;6631:54;26934:995;;27884:15;1235:61077;26780:10;;26934:995;5159:42;26934:995;;;;;;:::i;15943:691:1:-;;;;;;;;;;;;;25004:547:3;1235:61077;25109:14;;:33;;;;25004:547;25105:446;;;1235:61077;25174:6;1235:61077;;;;;;25174:6;1235:61077;;;;;;;25105:446;25004:547;;25105:446;1235:61077;25201:15;;:35;;;;25105:446;25197:354;;;1235:61077;25268:7;1235:61077;;;;;;25268:7;1235:61077;;;;;;;25197:354;25004:547;;25197:354;1235:61077;25296:16;;:37;;;;25197:354;25292:259;;;1235:61077;25365:7;1235:61077;;;;;;25365:7;1235:61077;;;;;;;25292:259;25004:547;;25292:259;1235:61077;25393:15;;:35;;;;;25292:259;-1:-1:-1;25389:162:3;;;25460:8;1235:61077;;;;;;25460:8;1235:61077;;;;;;;25389:162;25004:547;;25393:35;1235:61077;25412:16;;;25393:35;;;25296:37;25316:17;1235:61077;25316:17;;25296:37;;25201:35;25220:16;1235:61077;25220:16;;25201:35;;25109:33;25127:15;1235:61077;25127:15;;25109:33;;25008:39;25029:18;1235:61077;25029:18;;25008:39;;24827:48;24786:119;24854:21;;1235:61077;24854:21;;;:::i;:::-;1235:61077;24827:48;;24639:59;1235:61077;;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;24639:59;;;24492:137;24614:14;;24592:37;24614:14;;;:::i;24592:37::-;24571:58;;24492:137;;;47131:976;;47249:852;;;;;;;-1:-1:-1;;47249:852:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47131:976::o;16555:658::-;1235:61077;16662:17;1235:61077;16695:14;1235:61077;16695:14;;:34;;;;16555:658;16691:56;;1235:61077;16761:15;;16757:37;;4469:42;16808:15;;:36;;;;16555:658;16804:58;;4599:42;16876:14;;16872:36;;4731:42;16922:15;;16918:38;;4731:42;16970:15;;:33;;;;16555:658;16970:55;;;;16555:658;16966:89;;4339:42;17069:16;;:37;;;;16555:658;17069:56;;;;16555:658;17065:93;;4879:42;17172:15;17168:38;;16555:658::o;17168:38::-;5016:42;;-1:-1:-1;17203:2:3;;-1:-1:-1;17189:17:3:o;17065:93::-;-1:-1:-1;4879:42:3;;-1:-1:-1;17155:2:3;;-1:-1:-1;17139:19:3:o;17069:56::-;17110:15;4339:42;17110:15;;17069:56;;:37;17089:17;4339:42;17089:17;;17069:37;;16966:89;-1:-1:-1;4339:42:3;;-1:-1:-1;17053:1:3;;-1:-1:-1;17039:16:3:o;16970:55::-;17007:18;4731:42;17007:18;;16970:55;;:33;16989:14;4731:42;16989:14;;16970:33;;16918:38;-1:-1:-1;4211:42:3;;-1:-1:-1;16953:2:3;;-1:-1:-1;16939:17:3:o;16872:36::-;-1:-1:-1;4731:42:3;;-1:-1:-1;16905:2:3;;-1:-1:-1;16892:16:3:o;16804:58::-;-1:-1:-1;4599:42:3;;-1:-1:-1;16860:1:3;;-1:-1:-1;16846:16:3:o;16808:36::-;16827:17;4469:42;16827:17;;16808:36;;16757:37;-1:-1:-1;4469:42:3;;-1:-1:-1;16792:1:3;;-1:-1:-1;16778:16:3:o;16691:56::-;-1:-1:-1;4081:42:3;;-1:-1:-1;16744:2:3;;-1:-1:-1;16731:16:3:o;16695:34::-;16713:16;1235:61077;16713:16;;16695:34;;1235:61077;;;;;;;;;;;;;:::o;58229:734::-;58374:2;1235:61077;;58362:14;58358:42;;1235:61077;58459:1;58442:460;58462:7;58374:2;58462:7;;;;1235:61077;-1:-1:-1;;;;;1235:61077:3;;;58229:734;:::o;58471:3::-;1235:61077;;;58540:4;;;;:::i;:::-;1235:61077;;;58567:7;58572:2;58567:7;;;:18;;;58471:3;58563:325;;;1235:61077;;;;;;;58563:325;;1235:61077;58447:13;;;;58563:325;58659:2;58654:7;;;:18;;;58563:325;58650:238;;;1235:61077;;;;;;;58650:238;58563:325;;58650:238;58746:2;58741:7;;;:19;;;58650:238;58737:151;;;1235:61077;;;;;;;58737:151;58563:325;;58741:19;58752:8;58757:3;58752:8;;;58741:19;;58654:18;58665:7;58670:2;58665:7;;;58654:18;;58567;58578:7;58583:2;58578:7;;;58567:18;;5094:152:0;9302:399;5094:152;1235:61077:3;5094:152:0;5204:10;9890:208;;;-1:-1:-1;9890:208:0;9302:399;-1:-1:-1;9302:399:0;;761:6;9302:399;;;;;;;;1235:61077:3;5094:152:0;:::o;1235:61077:3:-;;;;;;;:::o;:::-;;;;;;;;;;56329:1818;;;1235:61077;56573:10;;;:::i;:::-;1235:61077;56601:26;;:57;;;;;56329:1818;56597:248;;;1235:61077;;56895:15;1235:61077;56924:21;1235:61077;56959:17;1235:61077;56996:9;1235:61077;57007:7;;;;;;56991:601;57646:11;;;;;57642:185;57646:11;;;1235:61077;;57687:2;1235:61077;;57642:185;;57875:256;;56329:1818;;:::o;57875:256::-;57929:117;;58073:43;;-1:-1:-1;;;;;1235:61077:3;;4081:42;57929:12;4081:42;;57964:10;;:18;57985:9;1235:61077;57929:117;;58101:2;1235:61077;58095:3;1235:61077;;;58073:43;:::i;57929:117::-;58017:29;58035:10;;58017:29;;:::i;:::-;57929:117;;;57642:185;57726:24;;;;;;57722:105;;57642:185;;;;57722:105;1235:61077;;57780:2;1235:61077;;;;;57722:105;;;57016:3;57050:4;;;;:::i;:::-;1235:61077;;;;5994:10;57076:9;;;:22;;;57016:3;57072:506;;;1235:61077;;;57140:2;1235:61077;;5994:10;1235:61077;;;;;;;;57180:102;;;57072:506;1235:61077;57072:506;;1235:61077;56996:9;;;;;57180:102;1235:61077;;;57226:26;;;;57222:37;57180:102;57222:37;57254:5;;;;;57072:506;57310:9;;5994:10;57310:9;;;;;;:24;;;57072:506;57306:272;;;57358:17;;1235:61077;57358:17;57306:272;57072:506;;57306:272;5994:10;57404:9;;;;;;:25;;;57306:272;57400:178;;;57453:19;;1235:61077;57453:19;57400:178;57072:506;;57400:178;57501:9;;;;;57497:81;;1235:61077;57400:178;57072:506;;57497:81;57541:18;1235:61077;57541:18;;1235:61077;57541:18;57404:25;1235:61077;-1:-1:-1;;1235:61077:3;;57417:12;;57404:25;;57310:24;57323:11;;;57310:24;;57076:22;57089:9;5994:10;57089:9;;;57076:22;;56597:248;-1:-1:-1;56705:125:3;;-1:-1:-1;;;;;;;1235:61077:3;;4081:42;56705:12;4081:42;;56744:10;;:18;56765:9;1235:61077;56678:152;:::o;56705:125::-;56801:29;56819:10;;56801:29;;:::i;56601:57::-;1235:61077;56631:27;;;56601:57;;;48171:833;48294:704;;;;;;;;;;;;;;;-1:-1:-1;;48294:704:3;;;;;;;48171:833;:::o;48294:704::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;48294:704:3;;1235:61077;;;53707:1;1235:61077;;;;;;;:::o;:::-;;;53761:1;1235:61077;;;;;;;:::o;:::-;;;53815:1;1235:61077;;;;;;;:::o;:::-;;;51636:1;1235:61077;;;;;;;:::o;:::-;;;52750:1;1235:61077;;;;;;;:::o;:::-;;;53356:1;1235:61077;;;;;;;:::o;:::-;;;52410:1;1235:61077;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;51194:2832::-;51554:29;;;:::i;:::-;1235:61077;;51636:1;51620:17;;51636:1;;51701:8;;51664:47;51674:36;51701:8;;;:::i;:::-;;51674:36;;:::i;:::-;51664:47;:::i;:::-;51701:8;;;51960:36;51820;51847:8;;;:::i;51820:36::-;51929:8;51987;51902:36;51929:8;;;:::i;51902:36::-;51987:8;;:::i;:::-;;51960:36;;:::i;:::-;51757:281;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;51757:281;;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;51757:281;:::o;51725:649::-;52192:8;52281:36;52165;52192:8;;;:::i;:::-;;52165:36;;:::i;:::-;52250:8;52308;52223:36;52250:8;;;:::i;52281:36::-;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;52077:282;;;1235:61077;;;;;;;:::i;51616:2404::-;52410:1;52394:17;;52410:1;;52508:8;;;52481:36;52508:8;;;:::i;:::-;;52481:36;;:::i;:::-;52562:8;52643:36;52535;52562:8;;;:::i;:::-;;52535:36;;:::i;:::-;52616:8;52670;52589:36;52616:8;;;:::i;52589:36::-;52670:8;;:::i;52643:36::-;52427:286;;;;1235:61077;;;;;;;:::i;52390:1630::-;52750:1;52734:17;;52750:1;;52815:8;52778:47;52788:36;52815:8;;;:::i;52778:47::-;52815:8;;;52939:36;52966:8;;;:::i;52939:36::-;53137;53021;53048:8;;;:::i;53021:36::-;53106:8;53164;53079:36;53106:8;;;:::i;53079:36::-;53164:8;;:::i;53137:36::-;52871:320;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;52871:320;;;;:::o;52839:727::-;53323:36;53350:8;;;:::i;53323:36::-;53408:8;53497:36;53381;53408:8;;;:::i;53497:36::-;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;53230:321;;;;;:::o;52730:1290::-;53602:1;53586:17;53602:1;;53674:36;53701:8;;;:::i;53674:36::-;53728;53755:8;;;:::i;53728:36::-;53809:8;53890:36;53782;53809:8;;;:::i;53782:36::-;53863:8;53917;53836:36;53863:8;;;:::i;53836:36::-;53917:8;;:::i;53890:36::-;53649:291;;;;;;:::o;49972:1152::-;50310:29;;;:::i;:::-;50369:1;1235:61077;;50353:17;50349:339;;1235:61077;;50717:1;50701:17;50717:1;;50759:36;50786:8;;;:::i;50759:36::-;50813;50840:8;;;:::i;50813:36::-;50894:8;50975:36;50867;50894:8;;;:::i;50867:36::-;50948:8;51002;50921:36;50948:8;;;:::i;50349:339::-;50411:36;50438:8;;;:::i;50411:36::-;50465;50492:8;;;:::i;50465:36::-;50546:8;50627:36;50519;50546:8;;;:::i;50519:36::-;50600:8;50654;50573:36;50600:8;;;:::i;50573:36::-;50654:8;;:::i;49074:828::-;1235:61077;;54559:17;54575:1;54637:9;-1:-1:-1;54648:8:3;;;;;;1235:61077;-1:-1:-1;;1235:61077:3;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;1235:61077:3;;;;;;54782:31;;-1:-1:-1;54858:13:3;-1:-1:-1;54948:9:3;-1:-1:-1;54959:8:3;;;;;;1235:61077;;55197:41;1235:61077;;;;;;;;:::i;:::-;;;;55216:22;;1235:61077;55197:41;;;;:::i;:::-;;;;:::i;:::-;;49363:1;1235:61077;;49347:17;49343:231;;1235:61077;;49603:1;49587:17;49603:1;;49753:36;49645;49672:8;;;:::i;49645:36::-;49726:8;49780;49699:36;49726:8;;;:::i;49699:36::-;49780:8;;:::i;49753:36::-;49620:183;;;;:::o;49343:231::-;49513:36;49405;49432:8;;;:::i;49405:36::-;49486:8;49540;49459:36;49486:8;;;:::i;49459:36::-;49540:8;;:::i;54969:3::-;-1:-1:-1;;;1235:61077:3;54996:7;;;;:::i;:::-;1235:61077;;54996:20;54992:143;;54969:3;54575:1;1235:61077;54948:9;;54992:143;1235:61077;;55040:41;1235:61077;;;;;;;:::i;:::-;;;55061:20;1235:61077;55061:20;;1235:61077;54575:1;55046:11;1235:61077;55040:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;54575:1:3;1235:61077;;;54992:143;;1235:61077;;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;54658:3;-1:-1:-1;;;1235:61077:3;54685:7;;;;:::i;:::-;1235:61077;;54685:20;54681:74;;54658:3;54575:1;1235:61077;54637:9;;54681:74;54575:1;1235:61077;;;;54681:74;;32578:1835;;1235:61077;-1:-1:-1;;;;;1235:61077:3;;-1:-1:-1;;;;;1235:61077:3;;32737:15;32733:88;1235:61077;;;32754:17;32767:4;32733:88;;32838:36;;;;:::i;:::-;1235:61077;-1:-1:-1;;;;;1235:61077:3;;32888:18;32884:1523;;32578:1835;;:::o;32884:1523::-;1235:61077;;;-1:-1:-1;;;;;1235:61077:3;;;;32929:5;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:3;;-1:-1:-1;1235:61077:3;;;-1:-1:-1;;;;;1235:61077:3;-1:-1:-1;1235:61077:3;;;32968:18;;;32964:1433;;32578:1835;;:::o;32964:1433::-;-1:-1:-1;;;;;33024:37:3;;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;35255:222;34699:325;1235:61077;34699:325;;1235:61077;34699:325;;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;1235:61077;;;;;:::i;:::-;;;;;;;;;33429:19;;;33425:157;;32964:1433;33603:19;;;33599:228;;32964:1433;33848:20;;;33844:231;;32964:1433;34096:21;;;34092:234;;32964:1433;1235:61077;;;;32964:1433;32578:1835::o;34092:234::-;34152:29;;;;:::i;:::-;1235:61077;34213:11;;4081:42;34207:17;;34203:105;34092:234;34203:105;1235:61077;;;;;;;;;;:::i;:::-;;;;;34262:23;;1235:61077;34203:105;;34092:234;;33844:231;33903:28;;;;:::i;:::-;1235:61077;33963:11;;4081:42;33957:17;;33953:104;;33844:231;;;;33953:104;1235:61077;;;;;;;;;;;:::i;:::-;;;;;34012:22;;1235:61077;33953:104;;;;;33599:228;33657:27;;;;:::i;:::-;1235:61077;33716:11;;4081:42;33710:17;;33706:103;;33599:228;;;;33706:103;1235:61077;;;;;;;;;;;:::i;:::-;;;;;33765:21;;1235:61077;33706:103;;;;;33425:157;33483:27;;;;;;;:::i;:::-;1235:61077;;;;;;;:::i;:::-;;;;;33542:21;;1235:61077;33425:157;;;;32733:88;32805:16;32733:88;;;14537:1358;;;;;1235:61077;14965:18;1235:61077;14993:19;1235:61077;;15044:2;1235:61077;;15026:20;15022:135;15044:2;;;15059:19;;;:::i;:::-;15022:135;;-1:-1:-1;;;;;1235:61077:3;;15171:22;15167:65;;15022:135;-1:-1:-1;1235:61077:3;;15044:2;15246:21;15044:2;;15281:20;;;;;;:::i;:::-;15242:153;;-1:-1:-1;;;;;1235:61077:3;;15409:23;15405:68;;15242:153;-1:-1:-1;15648:137:3;;15539:54;;;;15496:129;;15539:15;;;;:54;15496:129;:::i;:::-;15695:57;:16;;;;:57;15648:137;:::i;:::-;1235:61077;;;15796:92;;14537:1358;:::o;15796:92::-;15852:36;;;;;:::i;:::-;15834:54;;;15796:92;14537:1358::o;15405:68::-;15648:137;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:3;;15496:129;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;15405:68;;;;;;;;15242:153;15377:17;;;;15355:40;15377:17;;;:::i;15355:40::-;15328:67;;15242:153;;;15167:65;-1:-1:-1;;;;;1235:61077:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15167:65;;;;15022:135;15140:16;15118:39;15140:16;;;:::i;15118:39::-;15093:64;15022:135;;;59959:820;;60291:36;1235:61077;60210:36;1235:61077;;;60210:36;:::i;:::-;1235:61077;;60291:36;:::i;:::-;41616:2;1235:61077;;60348:40;;;60432:37;1235:61077;60432:37;1235:61077;;;60432:37;;;1235:61077;60432:37;;;1235:61077;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;60432:37;;-1:-1:-1;;60432:37:3;;;;;;:::i;:::-;60341:144;;60348:40;60515:43;60348:40;;;;60515:43;:::i;:::-;1235:61077;;60576:33;60572:93;;1235:61077;60432:37;1235:61077;;;60708:53;1235:61077;;;;;;;;;;;;60708:53;;;1235:61077;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;60708:53;;-1:-1:-1;;60708:53:3;;;;;;:::i;60572:93::-;60629:21;;:::o;59959:820::-;;;;1235:61077;60151:2;1235:61077;60220:25;60210:36;60220:25;;;;:::i;:::-;60210:36;:::i;:::-;1235:61077;;;;;60291:36;1235:61077;;60291:36;:::i;:::-;1235:61077;;;60348:40;;;60432:37;1235:61077;60432:37;1235:61077;;;60432:37;;;1235:61077;60432:37;;;1235:61077;;;;;;;;;;;;;-1:-1:-1;1235:61077:3;;;;60432:37;;-1:-1:-1;;60432:37:3;;;;;;:::i;:::-;60341:144;;60348:40;60515:43;60348:40;;;;60515:43;:::i;1235:61077::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;1235:61077:3;;;;:::i;:::-;;;;;;;;:::o;59036:583::-;;1235:61077;;;;;;:::i;:::-;59192:2;1235:61077;;;;;;;;-1:-1:-1;59225:7:3;59230:2;59225:7;;;;-1:-1:-1;59586:16:3;-1:-1:-1;59036:583:3:o;59234:3::-;1235:61077;;;59302:43;59544:1;1235:61077;;59336:2;1235:61077;;;;-1:-1:-1;;;;;1235:61077:3;;59302:43;:::i;:::-;1235:61077;;5994:10;;;;;;;59534:24;;1235:61077;;59549:9;;1235:61077;;;;;;59507:9;5994:10;59507:9;:::i;:::-;1235:61077;;59496:20;1235:61077;;;59496:20;;-1:-1:-1;59496:20:3;;;:::i;:::-;;5994:10;1235:61077;;;;;;;;;5994:10;;;59549:9;:::i;:::-;-1:-1:-1;59534:24:3;1235:61077;;59534:24;;:::i;:::-;;1235:61077;59214:9;;17310:479;1235:61077;17428:17;-1:-1:-1;;;;;1235:61077:3;;;4469:42;17461:13;;17457:37;;4599:42;17508:13;;17504:37;;4731:42;17555:12;;17551:36;;4211:42;17601:13;;17597:38;;4339:42;17649:13;;17645:37;;4879:42;17696:15;;17692:42;;5016;17748:13;17744:38;;17310:479::o;17744:38::-;1235:61077;;;;;;;;;:::i;:::-;;;;;;;;;17763:19;17779:2;17763:19;:::o;17692:42::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17713:21;17731:2;17713:21;:::o;17645:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17664:18;17680:1;17664:18;:::o;17597:38::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17616:19;17632:2;17616:19;:::o;17551:36::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17569:18;17584:2;17569:18;:::o;17504:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17523:18;17539:1;17523:18;:::o;17457:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17476:18;17492:1;17476:18;:::o;55766:497::-;;1235:61077;;55955:3;1235:61077;;55940:13;;;;55997:2;55988:4;;;;:::i;:::-;1235:61077;;;55982:17;;:38;;;55955:3;55978:228;;;1235:61077;56074:4;56062:2;1235:61077;;56074:4;;;;:::i;:::-;1235:61077;;;;;;;;55978:228;1235:61077;55929:9;;;55982:38;56009:4;56018:2;56009:4;;;;:::i;:::-;1235:61077;;;56003:17;;55982:38;;55940:13;;-1:-1:-1;;55766:497:3:o;36579:426::-;36710:289;;;36579:426;;;;36710:289;;;;;;;;;;36579:426;:::o;1235:61077::-;;;;;;;;;;;:::o;54353:902::-;;1235:61077;;54559:17;54575:1;54637:9;-1:-1:-1;54648:8:3;;;;;;1235:61077;-1:-1:-1;;1235:61077:3;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;1235:61077:3;;;;;;54782:31;;;-1:-1:-1;54858:13:3;-1:-1:-1;54948:9:3;-1:-1:-1;54959:8:3;;;;;;1235:61077;55197:41;1235:61077;;;;;;;;;;:::i;:::-;;;;55216:22;;1235:61077;55197:41;;;;:::i;:::-;;;:::i;:::-;;54353:902::o;54969:3::-;-1:-1:-1;;;1235:61077:3;54996:7;;;;:::i;:::-;1235:61077;;54996:20;54992:143;;54969:3;54575:1;1235:61077;54948:9;;54992:143;1235:61077;;55040:41;1235:61077;;;;;;;:::i;:::-;;;55061:20;1235:61077;55061:20;;1235:61077;54575:1;55046:11;1235:61077;55040:41;;;;;:::i;:::-;-1:-1:-1;54575:1:3;1235:61077;;;54992:143;;1235:61077;;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:3;;-1:-1:-1;1235:61077:3;;;;;;;;;;;;;54658:3;-1:-1:-1;;;1235:61077:3;54685:7;;;;:::i;:::-;1235:61077;;54685:20;54681:74;;54658:3;54575:1;1235:61077;54637:9;;54681:74;54575:1;1235:61077;;;;54681:74;;55322:379;;;55506:32;55516:8;;;4081:42;;;1235:61077;;55506:32;:::i;:::-;55557:9;-1:-1:-1;55588:3:3;1235:61077;;55568:18;;;;4081:42;1235:61077;55623:20;1235:61077;4081:42;;;1235:61077;55623:20;;:::i;:::-;1235:61077;;-1:-1:-1;55611:32:3;;;;;:::i;:::-;;1235:61077;55557:9;;55568:18;-1:-1:-1;55568:18:3;;-1:-1:-1;;55322:379:3:o;54113:172::-;1235:61077;54199:10;;;:::i;:::-;:19;54195:36;;1235:61077;;;;;;;;5994:10;1235:61077;;;;54249:12;;:28;;;;54241:37;;54113:172;:::o;54249:28::-;1235:61077;;;;;;;;5994:10;1235:61077;;;54265:12;;54113:172;:::o;54195:36::-;54220:11;54227:4;54220:11;:::o;17862:791::-;;;-1:-1:-1;;;;;1235:61077:3;;;4879:42;18005:16;;:34;;;17862:791;18001:101;;5016:42;18116:14;;:32;;;17862:791;18112:99;;4469:42;18225:14;;:32;;;17862:791;18221:99;;4211:42;18334:14;;:32;;;17862:791;18330:99;;4731:42;18443:13;;:31;;;17862:791;18439:98;;4339:42;18551:14;:32;;;;17862:791;18547:99;;;17862:791::o;18547:99::-;18604:42;;-1:-1:-1;18597:49:3:o;18551:32::-;4211:42;1235:61077;;-1:-1:-1;;;;;1235:61077:3;18569:14;18551:32;;;18439:98;-1:-1:-1;18495:42:3;;-1:-1:-1;;18488:49:3:o;18443:31::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:3;;18460:14;18443:31;;18330:99;-1:-1:-1;18387:42:3;;-1:-1:-1;;18380:49:3:o;18334:32::-;1235:61077;4599:42;-1:-1:-1;;;;;1235:61077:3;;18352:14;18334:32;;18221:99;-1:-1:-1;18278:42:3;;-1:-1:-1;;18271:49:3:o;18225:32::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:3;;18243:14;18225:32;;18112:99;-1:-1:-1;18169:42:3;;-1:-1:-1;;18162:49:3:o;18116:32::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:3;;18134:14;18116:32;;18001:101;-1:-1:-1;18060:42:3;;-1:-1:-1;;18053:49:3:o;18005:34::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:3;;18025:14;18005:34;;61590:720;;61698:606;;;-1:-1:-1;;61698:606:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;61698:606:3;;;;;;;;;-1:-1:-1;;61698:606:3;;;;;;;;61590:720::o;60837:584::-;;1235:61077;;60993:10;;61048:79;61055:8;;;:32;;;61048:79;61055:32;;;-1:-1:-1;;1235:61077:3;61048:79;;61055:32;;;61144:10;;61140:67;;61248:14;;;:::i;:::-;61281:9;61062:1;61292:8;;;;;;-1:-1:-1;61377:27:3;;-1:-1:-1;;60837:584:3:o;61302:3::-;61343:6;1235:61077;61343:6;1235:61077;61343:6;;;:::i;:::-;1235:61077;;61062:1;61325:24;;;;;:::i;:::-;;1235:61077;61281:9;;61055:32;1235:61077;5994:10;1235:61077;61067:12;-1:-1:-1;;1235:61077:3;;61067:12;;:::i;:::-;1235:61077;;61067:20;61055:32;;59696:193;1235:61077;;;;59817:3;59806:14;59854:2;59850:6;;59854:2;;;59859:4;59850:20;;1235:61077;;5994:10;;59696:193;:::o;59850:20::-;59866:4;59850:20;;","linkReferences":{}},"methodIdentifiers":{"addresses(string)":"bdfe7d47","cancelOrder(bytes32)":"7489ec23","checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"a35e6511","command(string)":"5fcc4500","command(string[])":"52a13e88","escrow(string,string,string,string,string)":"1db51297","executeOrder(bytes32)":"049b76c4","lock(string,string,string,string,string)":"fdbfc0a6","names(address)":"5cf3d346","order(string,string,string,string,string)":"d315e54f","orderHashes(uint256)":"df69558c","orders(bytes32)":"9c3f1e90","pairs(address,address)":"69454b86","previewCommand(string)":"bfe68676","send(string,string,string)":"5615264d","setName(address,string)":"3121db1c","setPair(address,address,address)":"7bb41012","swap(string,string,string,string,string)":"6662c9e3","translateCommand(bytes)":"04659197","translateExecute(bytes)":"f12a64eb","translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"579a8c4c","whatIsTheAddressOf(string)":"c47d04e2","whatIsTheNameOf(address)":"5a274d62"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"PairSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"addresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"checkUserOp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"intentMatched\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"intents\",\"type\":\"string[]\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"executeOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addresses\",\"type\":\"address\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"order\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orderHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"expiry\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"pairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"previewCommand\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executeCallData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOutMin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateCommand\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateExecute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"translateUserOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"whatIsTheAddressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"whatIsTheNameOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"InsufficientSwap()\":[{\"details\":\"Insufficient swap output.\"}],\"InvalidCharacter()\":[{\"details\":\"Non-numeric character.\"}],\"InvalidReceiver()\":[{\"details\":\"Invalid out receiver.\"}],\"InvalidSelector()\":[{\"details\":\"Invalid selector for spend.\"}],\"InvalidSwap()\":[{\"details\":\"0-liquidity.\"}],\"InvalidSyntax()\":[{\"details\":\"Invalid command.\"}],\"OrderExpired()\":[{\"details\":\"Order expiry has arrived.\"}],\"Overflow()\":[{\"details\":\"Bad math.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"Unauthorized()\":[{\"details\":\"Invalid function caller.\"}]},\"events\":{\"NameSet(address,string)\":{\"details\":\"Logs the setting of a token name.\"},\"PairSet(address,address,address)\":{\"details\":\"Logs the setting of a swap pool pair on Uniswap V3.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOrder(bytes32)\":{\"details\":\"Cancels a standing order by the `maker`.\"},\"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`.\"},\"command(string)\":{\"details\":\"Executes a text command from an `intent` string.\"},\"command(string[])\":{\"details\":\"Executes batch of text commands from an `intents` string.\"},\"constructor\":{\"details\":\"Constructs this IE on Ethereum with ENS `ASCII_MAP`.\"},\"escrow(string,string,string,string,string)\":{\"details\":\"Executes an `escrow` command from the parts of a matched intent string.\"},\"executeOrder(bytes32)\":{\"details\":\"Executes a standing order for the `receiver`.\"},\"lock(string,string,string,string,string)\":{\"details\":\"Executes a `lock` command from the parts of a matched intent string.\"},\"order(string,string,string,string,string)\":{\"details\":\"Executes an `order` command from the parts of a matched intent string.\"},\"previewCommand(string)\":{\"details\":\"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'.\"},\"send(string,string,string)\":{\"details\":\"Executes a `send` command from the parts of a matched intent string.\"},\"setName(address,string)\":{\"details\":\"Sets a public `name` tag for a given `token` address. Governed by DAO.\"},\"setPair(address,address,address)\":{\"details\":\"Sets a public pool `pair` for swapping tokens. Governed by DAO.\"},\"swap(string,string,string,string,string)\":{\"details\":\"Executes a `swap` command from the parts of a matched intent string.\"},\"translateCommand(bytes)\":{\"details\":\"Translates an `intent` from raw `command()` calldata.\"},\"translateExecute(bytes)\":{\"details\":\"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match.\"},\"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Translate packed ERC4337 userOp `callData` into readable `intent`.\"},\"whatIsTheAddressOf(string)\":{\"details\":\"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address.\"},\"whatIsTheNameOf(address)\":{\"details\":\"Returns ENS reverse name resolution details.\"}},\"stateVariables\":{\"ASCII_MAP\":{\"details\":\"String mapping for `ENSAsciiNormalizer` logic.\"},\"CURIA\":{\"details\":\"The resolution registry smart account.\"},\"DAI\":{\"details\":\"The Maker DAO USD stablecoin address.\"},\"DAO\":{\"details\":\"The governing DAO address.\"},\"ENS_REGISTRY\":{\"details\":\"ENS fallback registry contract.\"},\"ENS_REVERSE\":{\"details\":\"ENS reverse registrar contract.\"},\"ENS_WRAPPER\":{\"details\":\"ENS name wrapper token contract.\"},\"ESCROWS\":{\"details\":\"The Escrows protocol singleton.\"},\"ETH\":{\"details\":\"The conventional ERC7528 ETH address.\"},\"MAX_SQRT_RATIO_MINUS_ONE\":{\"details\":\"The maximum value that can be returned from `getSqrtRatioAtTick` (minus one).\"},\"MIN_SQRT_RATIO_PLUS_ONE\":{\"details\":\"The minimum value that can be returned from `getSqrtRatioAtTick` (plus one).\"},\"RETH\":{\"details\":\"The Rocket Pool Staked ETH token address.\"},\"UNISWAP_V3_FACTORY\":{\"details\":\"The address of the Uniswap V3 Factory.\"},\"UNISWAP_V3_POOL_INIT_CODE_HASH\":{\"details\":\"The Uniswap V3 Pool `initcodehash`.\"},\"USDC\":{\"details\":\"The Circle USD stablecoin address.\"},\"USDT\":{\"details\":\"The Tether USD stablecoin address.\"},\"WBTC\":{\"details\":\"The popular wrapped BTC address.\"},\"WETH\":{\"details\":\"The canonical wrapped ETH address.\"},\"WSTETH\":{\"details\":\"The Lido Wrapped Staked ETH token address.\"},\"_REENTRANCY_GUARD_SLOT\":{\"details\":\"Equivalent to: `uint72(bytes9(keccak256(\\\"_REENTRANCY_GUARD_SLOT\\\")))`.\"},\"_idnamap\":{\"details\":\"Each index in idnamap refers to an ascii code point. If idnamap[char] > 2, char maps to a valid ascii character. Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. Modified from `ENSAsciiNormalizer` deployed by royalfork.eth (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758).\"},\"addresses\":{\"details\":\"DAO-governed token names to addresses.\"},\"names\":{\"details\":\"DAO-governed token addresses to names.\"},\"orderHashes\":{\"details\":\"Array of onchain order struct hashes.\"},\"orders\":{\"details\":\"Open order book for p2p asset exchange.\"},\"pairs\":{\"details\":\"DAO-governed token swap pool routing on Uniswap V3.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSwap"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidSelector"},{"inputs":[],"type":"error","name":"InvalidSwap"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"type":"error","name":"OrderExpired"},{"inputs":[],"type":"error","name":"Overflow"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":false},{"internalType":"address","name":"token1","type":"address","indexed":false},{"internalType":"address","name":"pair","type":"address","indexed":false}],"type":"event","name":"PairSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelOrder"},{"inputs":[{"internalType":"string","name":"intent","type":"string"},{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"checkUserOp","outputs":[{"internalType":"bool","name":"intentMatched","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"intents","type":"string[]"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"executeOrder"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"lock","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"addresses","type":"address"}],"stateMutability":"view","type":"function","name":"names","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"order","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orderHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"uint48","name":"expiry","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"previewCommand","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"executeCallData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"}],"stateMutability":"payable","type":"function","name":"send"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"payable","type":"function","name":"setName"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"payable","type":"function","name":"setPair"},{"inputs":[{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOutMin","type":"string"},{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"swap"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"translateCommand","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"view","type":"function","name":"translateExecute","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"translateUserOp","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"whatIsTheAddressOf","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"whatIsTheNameOf","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"cancelOrder(bytes32)":{"details":"Cancels a standing order by the `maker`."},"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`."},"command(string)":{"details":"Executes a text command from an `intent` string."},"command(string[])":{"details":"Executes batch of text commands from an `intents` string."},"constructor":{"details":"Constructs this IE on Ethereum with ENS `ASCII_MAP`."},"escrow(string,string,string,string,string)":{"details":"Executes an `escrow` command from the parts of a matched intent string."},"executeOrder(bytes32)":{"details":"Executes a standing order for the `receiver`."},"lock(string,string,string,string,string)":{"details":"Executes a `lock` command from the parts of a matched intent string."},"order(string,string,string,string,string)":{"details":"Executes an `order` command from the parts of a matched intent string."},"previewCommand(string)":{"details":"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'."},"send(string,string,string)":{"details":"Executes a `send` command from the parts of a matched intent string."},"setName(address,string)":{"details":"Sets a public `name` tag for a given `token` address. Governed by DAO."},"setPair(address,address,address)":{"details":"Sets a public pool `pair` for swapping tokens. Governed by DAO."},"swap(string,string,string,string,string)":{"details":"Executes a `swap` command from the parts of a matched intent string."},"translateCommand(bytes)":{"details":"Translates an `intent` from raw `command()` calldata."},"translateExecute(bytes)":{"details":"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match."},"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Translate packed ERC4337 userOp `callData` into readable `intent`."},"whatIsTheAddressOf(string)":{"details":"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address."},"whatIsTheNameOf(address)":{"details":"Returns ENS reverse name resolution details."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/IEscrows.json b/out/IAEth.sol/IEscrows.json new file mode 100644 index 0000000..16e8535 --- /dev/null +++ b/out/IAEth.sol/IEscrows.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"escrow","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"escrow(address,address,address,address,uint256,string,uint256)":"8e3de7ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Escrows protocol locking interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IEscrows\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IEscrows"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/IExecutor.json b/out/IAEth.sol/IExecutor.json new file mode 100644 index 0000000..4dacb4a --- /dev/null +++ b/out/IAEth.sol/IExecutor.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"execute","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(address,uint256,bytes)":"b61d27f6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple calldata executor interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/ISwapRouter.json b/out/IAEth.sol/ISwapRouter.json new file mode 100644 index 0000000..0620ca8 --- /dev/null +++ b/out/IAEth.sol/ISwapRouter.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"swap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Uniswap V3 swapping interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"ISwapRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/IAEth.sol/IToken.json b/out/IAEth.sol/IToken.json new file mode 100644 index 0000000..7268f63 --- /dev/null +++ b/out/IAEth.sol/IToken.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple token handler interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/build-info/35fec37d57b4d29e712fc83affe3c315.json b/out/build-info/35fec37d57b4d29e712fc83affe3c315.json new file mode 100644 index 0000000..156668d --- /dev/null +++ b/out/build-info/35fec37d57b4d29e712fc83affe3c315.json @@ -0,0 +1 @@ +{"id":"35fec37d57b4d29e712fc83affe3c315","source_id_to_path":{"0":"lib/solady/src/utils/MetadataReaderLib.sol","1":"lib/solady/src/utils/SafeTransferLib.sol","2":"src/AAVEIntents.sol","3":"src/IAEth.sol","4":"src/IERC20.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/src/AAVEIntents.sol b/src/AAVEIntents.sol new file mode 100644 index 0000000..83f526c --- /dev/null +++ b/src/AAVEIntents.sol @@ -0,0 +1,184 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import {IAEth} from "./IAEth.sol"; +import {IERC20} from "./IERC20.sol"; + + +interface IAaveETHManager { + function depositETH() external payable; + + function withdrawETH(uint256 amount) external; +} + +contract aaveIntents { + IAaveETHManager public immutable aaveManager; + IAEth public immutable aEth; + error InvalidSyntax(); + error InvalidCharacter(); + address constant wethaddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + + struct StringPart { + uint256 start; + uint256 end; + } + + constructor(address _aaveManager, address _aEthAddress) { + require(_aaveManager != address(0), "Invalid manager address"); + require(_aEthAddress != address(0), "Invalid aETH address"); + aaveManager = IAaveETHManager(_aaveManager); + aEth = IAEth(_aEthAddress); + } + + function command(string calldata intent) external payable { + bytes memory normalized = _lowercase(bytes(intent)); + bytes32 action = _extraction(normalized); + + if (action == keccak256("deposit")) { + bytes memory amount = _extractAmount(normalized); + _deposit(_toUint(amount, 18, true)); + } else if (action == keccak256("withdraw")) { + bytes memory amount = _extractAmount(normalized); + _withdraw(_toUint(amount, 18, false)); + (bool ok, ) = payable(msg.sender).call{ + value: address(this).balance + }(""); + require(ok, "Withdrawal failed."); + } else { + revert InvalidSyntax(); + } + } + + function _deposit(uint256 amount) internal { + require(msg.value == amount, "Ether sent mismatch with amount."); + aaveManager.depositETH{value: amount}(); + uint256 aEthBalance = aEth.balanceOf(address(this)); + aEth.transfer(msg.sender, aEthBalance); + } + + function _withdraw(uint256 amount) internal { + aaveManager.withdrawETH(amount); + } + + function _extractAmount( + bytes memory normalizedIntent + ) internal pure returns (bytes memory amount) { + StringPart[] memory parts = _split(normalizedIntent, " "); + if (parts.length != 3) revert InvalidSyntax(); // Expect "action amount ETH" + return _getPart(normalizedIntent, parts[1]); // Extract the "amount" part + } + + function _slice( + bytes memory data, + uint256 start, + uint256 end + ) internal pure returns (bytes memory) { + require(end >= start && end <= data.length, "Invalid slice range"); + bytes memory result = new bytes(end - start); + for (uint256 i = start; i < end; i++) { + result[i - start] = data[i]; + } + return result; + } + + function _extraction( + bytes memory normalizedIntent + ) internal pure returns (bytes32) { + uint256 len = normalizedIntent.length; + for (uint256 i = 0; i < len; i++) { + if (normalizedIntent[i] == 0x20) { + // Detect space + return keccak256(_slice(normalizedIntent, 0, i)); // Use the slice helper + } + } + revert InvalidSyntax(); // If no space is found, the input is invalid + } + + function _split( + bytes memory base, + string memory delimiter + ) internal pure returns (StringPart[] memory parts) { + require( + bytes(delimiter).length == 1, + "Delimiter must be one character" + ); + bytes1 del = bytes(delimiter)[0]; + uint256 len = base.length; + uint256 count; + + unchecked { + for (uint256 i = 0; i < len; ++i) { + if (base[i] == del) count++; + } + + parts = new StringPart[](count + 1); + uint256 partIndex; + uint256 start; + + for (uint256 i; i <= len; ++i) { + if (i == len || base[i] == del) { + parts[partIndex++] = StringPart(start, i); + start = i + 1; + } + } + } + } + + function _getPart( + bytes memory base, + StringPart memory part + ) internal pure returns (bytes memory result) { + result = new bytes(part.end - part.start); + for (uint256 i = 0; i < result.length; ++i) { + result[i] = base[part.start + i]; + } + } + + function _lowercase( + bytes memory subject + ) internal pure returns (bytes memory result) { + result = new bytes(subject.length); + for (uint256 i = 0; i < subject.length; ++i) { + bytes1 b = subject[i]; + result[i] = (b >= 0x41 && b <= 0x5A) ? bytes1(uint8(b) + 32) : b; + } + } + + function _toUint( + bytes memory s, + uint256 decimals, + bool scale + ) internal pure returns (uint256 result) { + unchecked { + uint256 len = s.length; + bool hasDecimal; + uint256 decimalPlaces; + + for (uint256 i; i < len; ++i) { + bytes1 c = s[i]; + if (c >= 0x30 && c <= 0x39) { + // '0' to '9' + result = result * 10 + (uint256(uint8(c)) - 48); + if (hasDecimal) { + if (++decimalPlaces > decimals) break; + } + } else if (c == 0x2E && !hasDecimal) { + // '.' + hasDecimal = true; + } else { + revert InvalidCharacter(); + } + } + + if (scale) { + if (!hasDecimal) result = 10 * decimals; + else if (decimalPlaces < decimals) + result = 10 * (decimals - decimalPlaces); + } + } + } + + receive() external payable {} + + fallback() external payable {} +} \ No newline at end of file diff --git a/src/IAEth.sol b/src/IAEth.sol new file mode 100644 index 0000000..283d9c8 --- /dev/null +++ b/src/IAEth.sol @@ -0,0 +1,1828 @@ +// ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ ⌘ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.19; + +import {SafeTransferLib} from "../lib/solady/src/utils/SafeTransferLib.sol"; +import {MetadataReaderLib} from "../lib/solady/src/utils/MetadataReaderLib.sol"; + +/// @title Intents Engine (IE) on Ethereum (IETH) +/// @notice Simple helper contract for turning transactional intents into executable code. +/// @dev V2 simulates typical commands (sending and swapping tokens) and includes execution. +/// IE also has a workflow to verify the intent of ERC4337 account userOps against calldata. +/// Example commands include "send nani 100 dai" or "swap usdc for 1 eth" and such variants. +/// @author nani.eth (https://github.com/NaniDAO/ie) +/// @custom:version 2.3.0 + + +interface IAEth { + function mintOnDeposit(address account, uint256 amount) external payable; //only lending pools can call this so how will we call?? **** + + function redeem(uint256 redeemTokens) external; + + function balanceOf(address owner) external view returns (uint256); + + function transfer(address dst, uint256 amount) external returns (bool); + + function approve(address, uint256) external returns (bool); +} + +contract IETH { + /// ======================= LIBRARY USAGE ======================= /// + + /// @dev Token transfer library. + using SafeTransferLib for address; + + /// @dev Token metadata reader library. + using MetadataReaderLib for address; + + /// ======================= CUSTOM ERRORS ======================= /// + + /// @dev Bad math. + error Overflow(); + + /// @dev 0-liquidity. + error InvalidSwap(); + + /// @dev Invalid command. + error InvalidSyntax(); + + /// @dev Invalid out receiver. + error InvalidReceiver(); + + /// @dev Non-numeric character. + error InvalidCharacter(); + + /// @dev Invalid function caller. + error Unauthorized(); + + /// @dev Order expiry has arrived. + error OrderExpired(); + + /// @dev Insufficient swap output. + error InsufficientSwap(); + + /// @dev Invalid selector for spend. + error InvalidSelector(); + + /// @dev Unauthorized reentrant call. + error Reentrancy(); + + /// =========================== EVENTS =========================== /// + + /// @dev Logs the setting of a token name. + event NameSet(address token, string name); + + /// @dev Logs the setting of a swap pool pair on Uniswap V3. + event PairSet(address token0, address token1, address pair); + + /// ========================== STRUCTS ========================== /// + + /// @dev The packed ERC4337 user operation (userOp) struct. + struct PackedUserOperation { + address sender; + uint256 nonce; + bytes initCode; + bytes callData; + bytes32 accountGasLimits; + uint256 preVerificationGas; + bytes32 gasFees; + bytes paymasterAndData; + bytes signature; + } + + /// @dev The `swap()` command information struct. + struct SwapInfo { + bool ETHIn; + bool ETHOut; + address tokenIn; + address tokenOut; + uint256 amountIn; + } + + /// @dev The `swap()` pool liquidity struct. + struct SwapLiq { + address pool; + uint256 liq; + } + + /// @dev The string start and end indices. + struct StringPart { + uint256 start; + uint256 end; + } + + /// @dev The onchain order struct. + struct Order { + address tokenIn; + address tokenOut; + uint256 amountIn; + uint256 amountOut; + address maker; + address receiver; + uint48 nonce; + uint48 expiry; + } + + /// =========================== ENUMS =========================== /// + + /// @dev `ENSAsciiNormalizer` rules. + enum Rule { + DISALLOWED, + VALID + } + + /// ========================= CONSTANTS ========================= /// + + /// @dev The governing DAO address. + address internal constant DAO = 0xDa000000000000d2885F108500803dfBAaB2f2aA; + + /// @dev The conventional ERC7528 ETH address. + address internal constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + + /// @dev The canonical wrapped ETH address. + address internal constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + + /// @dev The popular wrapped BTC address. + address internal constant WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; + + /// @dev The Circle USD stablecoin address. + address internal constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; + + /// @dev The Tether USD stablecoin address. + address internal constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; + + /// @dev The Maker DAO USD stablecoin address. + address internal constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F; + + /// @dev The Lido Wrapped Staked ETH token address. + address internal constant WSTETH = + 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0; + + /// @dev The Rocket Pool Staked ETH token address. + address internal constant RETH = 0xae78736Cd615f374D3085123A210448E74Fc6393; + + /// @dev The resolution registry smart account. + address internal constant CURIA = + 0x0000000000001d8a2e7bf6bc369525A2654aa298; + + /// @dev The Escrows protocol singleton. + address internal constant ESCROWS = + 0x00000000000044992CB97CB1A57A32e271C04c11; + + /// @dev Equivalent to: `uint72(bytes9(keccak256("_REENTRANCY_GUARD_SLOT")))`. + uint256 internal constant _REENTRANCY_GUARD_SLOT = 0x929eee149b4bd21268; + + /// @dev The address of the Uniswap V3 Factory. + address internal constant UNISWAP_V3_FACTORY = + 0x1F98431c8aD98523631AE4a59f267346ea31F984; + + /// @dev The Uniswap V3 Pool `initcodehash`. + bytes32 internal constant UNISWAP_V3_POOL_INIT_CODE_HASH = + 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54; + + /// @dev The minimum value that can be returned from `getSqrtRatioAtTick` (plus one). + uint160 internal constant MIN_SQRT_RATIO_PLUS_ONE = 4295128740; + + /// @dev The maximum value that can be returned from `getSqrtRatioAtTick` (minus one). + uint160 internal constant MAX_SQRT_RATIO_MINUS_ONE = + 1461446703485210103287273052203988822378723970341; + + /// @dev ENS fallback registry contract. + IENSHelper internal constant ENS_REGISTRY = + IENSHelper(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e); + + /// @dev ENS name wrapper token contract. + IENSHelper internal constant ENS_WRAPPER = + IENSHelper(0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401); + + /// @dev ENS reverse registrar contract. + IENSHelper internal constant ENS_REVERSE = + IENSHelper(0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb); + + /// @dev String mapping for `ENSAsciiNormalizer` logic. + bytes internal constant ASCII_MAP = + hex"2d00020101000a010700016101620163016401650166016701680169016a016b016c016d016e016f0170017101720173017401750176017701780179017a06001a010500"; + + /// ========================== STORAGE ========================== /// + + /// @dev DAO-governed token names to addresses. + mapping(string name => address) public addresses; + + /// @dev DAO-governed token addresses to names. + mapping(address addresses => string) public names; + + /// @dev Open order book for p2p asset exchange. + mapping(bytes32 orderHash => Order) public orders; + + /// @dev DAO-governed token swap pool routing on Uniswap V3. + mapping(address token0 => mapping(address token1 => address)) public pairs; + + /// @dev Each index in idnamap refers to an ascii code point. + /// If idnamap[char] > 2, char maps to a valid ascii character. + /// Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. + /// Modified from `ENSAsciiNormalizer` deployed by royalfork.eth + /// (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758). + bytes1[] internal _idnamap; + + /// @dev Array of onchain order struct hashes. + bytes32[] public orderHashes; + + /// ======================== CONSTRUCTOR ======================== /// + + /// @dev Constructs this IE on Ethereum with ENS `ASCII_MAP`. + constructor() payable { + unchecked { + for (uint256 i; i != ASCII_MAP.length; i += 2) { + bytes1 r = ASCII_MAP[i + 1]; + for (uint8 j; j != uint8(ASCII_MAP[i]); ++j) { + _idnamap.push(r); + } + } + } + } + + /// ====================== COMMAND PREVIEW ====================== /// + + /// @dev Preview natural language smart contract command. + /// The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. + /// `swap` syntax uses common format: 'swap 100 DAI for WETH'. + /// `lock` syntax uses send format: 'lock 1 WETH for vitalik'. + function previewCommand( + string calldata intent + ) + public + view + virtual + returns ( + address to, // Receiver address. + uint256 amount, // Formatted amount. + uint256 minAmountOut, // Formatted amount. + address token, // Asset to send `to`. + bytes memory callData, // Raw calldata for send transaction. + bytes memory executeCallData // Anticipates common execute API. + ) + { + bytes memory normalized = _lowercase(bytes(intent)); + bytes32 action = _extraction(normalized); + if ( + action == "send" || + action == "transfer" || + action == "pay" || + action == "grant" + ) { + ( + bytes memory _to, + bytes memory _amount, + bytes memory _token + ) = _extractSend(normalized); + (to, amount, token, callData, executeCallData) = _previewSend( + _to, + _amount, + _token + ); + } else if ( + action == "swap" || + action == "sell" || + action == "exchange" || + action == "stake" + ) { + ( + bytes memory amountIn, + bytes memory amountOutMin, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) = _extractSwap(normalized); + address _receiver; + (amount, minAmountOut, token, to, _receiver) = _previewSwap( + amountIn, + amountOutMin, + tokenIn, + tokenOut, + receiver + ); + callData = abi.encodePacked(_receiver); + } else if ( + action == "lock" || action == "lockup" || action == "escrow" + ) { + ( + bytes memory _to, + bytes memory _amount, + bytes memory _token, + bytes memory _time, + bytes memory _unit + ) = _extractLock(normalized); + (to, amount, token, minAmountOut /*expiry*/) = _previewLock( + _to, + _amount, + _token, + _time, + _unit + ); + } else if (action == "order") { + ( + bytes memory amountIn, + bytes memory amountOut, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) = _extractSwap(normalized); + address _receiver; + (amount, minAmountOut, token, to, _receiver) = _previewSwap( + amountIn, + amountOut, + tokenIn, + tokenOut, + receiver + ); + callData = abi.encodePacked(_receiver); + } else { + revert InvalidSyntax(); // Invalid command format. + } + } + + /// @dev Previews a `send` command from the parts of a matched intent string. + function _previewSend( + bytes memory to, + bytes memory amount, + bytes memory token + ) + internal + view + virtual + returns ( + address _to, + uint256 _amount, + address _token, + bytes memory callData, + bytes memory executeCallData + ) + { + uint256 decimals; + if (token.length == 42) _token = _toAddress(token); + else (_token, decimals) = _returnTokenConstants(bytes32(token)); + if (_token == address(0)) _token = addresses[string(token)]; + bool isETH = _token == ETH; + (, _to, ) = whatIsTheAddressOf(string(to)); + _amount = _toUint( + amount, + decimals != 0 ? decimals : _token.readDecimals(), + _token + ); + + if (!isETH) callData = abi.encodeCall(IToken.transfer, (_to, _amount)); + executeCallData = abi.encodeCall( + IExecutor.execute, + (isETH ? _to : _token, isETH ? _amount : 0, callData) + ); + } + + /// @dev Previews a `lock` command from the parts of a matched intent string. + function _previewLock( + bytes memory to, + bytes memory amount, + bytes memory token, + bytes memory time, + bytes memory unit + ) + internal + view + virtual + returns (address _to, uint256 _amount, address _token, uint256 _expiry) + { + uint256 decimals; + if (token.length == 42) _token = _toAddress(token); + else (_token, decimals) = _returnTokenConstants(bytes32(token)); + if (_token == address(0)) _token = addresses[string(token)]; + (, _to, ) = whatIsTheAddressOf(string(to)); + _amount = _toUint( + amount, + decimals != 0 ? decimals : _token.readDecimals(), + _token + ); + + uint256 _time = _simpleToUint256(time); + bytes32 _unit = bytes32(unit); + + unchecked { + if (_unit == "minute" || _unit == "minutes") { + _time = _time * 1 minutes; + } else if (_unit == "day" || _unit == "days") { + _time = _time * 1 days; + } else if (_unit == "week" || _unit == "weeks") { + _time = _time * 1 weeks; + } else if (_unit == "month" || _unit == "months") { + _time = _time * 4 weeks; + } else if (_unit == "year" || _unit == "years") { + _time = _time * 52 weeks; + } else { + revert InvalidSyntax(); // Invalid `unit`. + } + + _expiry = block.timestamp + _time; + } + } + + /// @dev Previews a `swap` command from the parts of a matched intent string. + function _previewSwap( + bytes memory amountIn, + bytes memory amountOutMin, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) + internal + view + virtual + returns ( + uint256 _amountIn, + uint256 _amountOut, + address _tokenIn, + address _tokenOut, + address _receiver + ) + { + uint256 decimalsIn; + uint256 decimalsOut; + if (tokenIn.length == 42) _tokenIn = _toAddress(tokenIn); + else (_tokenIn, decimalsIn) = _returnTokenConstants(bytes32(tokenIn)); + if (_tokenIn == address(0)) _tokenIn = addresses[string(tokenIn)]; + if (tokenOut.length == 42) _tokenOut = _toAddress(tokenOut); + else + (_tokenOut, decimalsOut) = _returnTokenConstants(bytes32(tokenOut)); + if (_tokenOut == address(0)) _tokenOut = addresses[string(tokenOut)]; + + _amountIn = _toUint( + amountIn, + decimalsIn != 0 ? decimalsIn : _tokenIn.readDecimals(), + _tokenIn + ); + _amountOut = _toUint( + amountOutMin, + decimalsOut != 0 ? decimalsOut : _tokenOut.readDecimals(), + _tokenOut + ); + + if (receiver.length != 0) + (, _receiver, ) = whatIsTheAddressOf(string(receiver)); + } + + /// @dev Checks packed ERC4337 userOp against the output of the command intent. + /// note: This function checks ETH and ERC20 transfers only with `execute()`. + function checkUserOp( + string calldata intent, + PackedUserOperation calldata userOp + ) public view virtual returns (bool intentMatched) { + (, , , , , bytes memory executeCallData) = previewCommand(intent); + if (executeCallData.length != userOp.callData.length) return false; + return keccak256(executeCallData) == keccak256(userOp.callData); + } + + /// @dev Checks and returns the canonical token address constant for a matched intent string. + function _returnTokenConstants( + bytes32 token + ) internal pure virtual returns (address _token, uint256 _decimals) { + if (token == "eth" || token == "ether") return (ETH, 18); + if (token == "usdc") return (USDC, 6); + if (token == "usdt" || token == "tether") return (USDT, 6); + if (token == "dai") return (DAI, 18); + if (token == "weth") return (WETH, 18); + if (token == "wbtc" || token == "btc" || token == "bitcoin") + return (WBTC, 8); + if (token == "steth" || token == "wsteth" || token == "lido") + return (WSTETH, 18); + if (token == "reth") return (RETH, 18); + } + + /// @dev Checks and returns the canonical token string constant for a matched address. + function _returnTokenAliasConstants( + address token + ) internal pure virtual returns (string memory _token, uint256 _decimals) { + if (token == USDC) return ("USDC", 6); + if (token == USDT) return ("USDT", 6); + if (token == DAI) return ("DAI", 18); + if (token == WETH) return ("WETH", 18); + if (token == WBTC) return ("WBTC", 8); + if (token == WSTETH) return ("WSTETH", 18); + if (token == RETH) return ("RETH", 18); + } + + /// @dev Checks and returns popular pool pairs for WETH swaps. + function _returnPoolConstants( + address token0, + address token1 + ) internal pure virtual returns (address pool) { + if (token0 == WSTETH && token1 == WETH) + return 0x109830a1AAaD605BbF02a9dFA7B0B92EC2FB7dAa; + if (token0 == RETH && token1 == WETH) + return 0x553e9C493678d8606d6a5ba284643dB2110Df823; + if (token0 == USDC && token1 == WETH) + return 0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640; + if (token0 == WETH && token1 == USDT) + return 0x11b815efB8f581194ae79006d24E0d814B7697F6; + if (token0 == DAI && token1 == WETH) + return 0xC2e9F25Be6257c210d7Adf0D4Cd6E3E881ba25f8; + if (token0 == WBTC && token1 == WETH) + return 0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0; + } + + /// ===================== COMMAND EXECUTION ===================== /// + + /// @dev Executes a text command from an `intent` string. + function command(string calldata intent) public payable virtual { + bytes memory normalized = _lowercase(bytes(intent)); + bytes32 action = _extraction(normalized); + if ( + action == "send" || + action == "transfer" || + action == "pay" || + action == "grant" + ) { + ( + bytes memory to, + bytes memory amount, + bytes memory token + ) = _extractSend(normalized); + send(string(to), string(amount), string(token)); + } else if ( + action == "swap" || + action == "sell" || + action == "exchange" || + action == "stake" + ) { + ( + bytes memory amountIn, + bytes memory amountOutMin, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) = _extractSwap(normalized); + swap( + string(amountIn), + string(amountOutMin), + string(tokenIn), + string(tokenOut), + string(receiver) + ); + } else if (action == "lock" || action == "lockup") { + ( + bytes memory to, + bytes memory amount, + bytes memory token, + bytes memory time, + bytes memory unit + ) = _extractLock(normalized); + bytes32 id = lock( + string(to), + string(amount), + string(token), + string(time), + string(unit) + ); + assembly ("memory-safe") { + mstore(0x00, id) + return(0x00, 0x20) + } + } else if (action == "escrow") { + ( + bytes memory to, + bytes memory amount, + bytes memory token, + bytes memory time, + bytes memory unit + ) = _extractLock(normalized); + bytes32 id = escrow( + string(to), + string(amount), + string(token), + string(time), + string(unit) + ); + assembly ("memory-safe") { + mstore(0x00, id) + return(0x00, 0x20) + } + } else if (action == "order") { + ( + bytes memory amountIn, + bytes memory amountOut, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) = _extractSwap(normalized); + bytes32 id = order( + string(tokenIn), + string(tokenOut), + string(amountIn), + string(amountOut), + string(receiver) + ); + assembly ("memory-safe") { + mstore(0x00, id) + return(0x00, 0x20) + } + } else { + revert InvalidSyntax(); // Invalid command format. + } + } + + /// @dev Executes batch of text commands from an `intents` string. + function command(string[] calldata intents) public payable virtual { + for (uint256 i; i != intents.length; ++i) { + command(intents[i]); + } + } + + /// @dev Executes a `send` command from the parts of a matched intent string. + function send( + string memory to, + string memory amount, + string memory token + ) public payable virtual { + address _token; + uint256 decimals; + if (bytes(token).length == 42) _token = _toAddress(bytes(token)); + else (_token, decimals) = _returnTokenConstants(bytes32(bytes(token))); + if (_token == address(0)) _token = addresses[token]; + (, address _to, ) = whatIsTheAddressOf(to); + uint256 _amount = _toUint( + bytes(amount), + decimals != 0 ? decimals : _token.readDecimals(), + _token + ); + + if (_token == ETH) { + require(msg.value == _amount); + _to.safeTransferETH(_amount); + } else { + _token.safeTransferFrom(msg.sender, _to, _amount); + } + } + + /// @dev Executes a `lock` command from the parts of a matched intent string. + function lock( + string memory to, + string memory amount, + string memory token, + string memory time /*'40'*/, + string memory unit /*'days'*/ + ) public payable virtual returns (bytes32) { + return + _escrow( + bytes(to), + bytes(amount), + bytes(token), + bytes(time), + bytes(unit), + true + ); + } + + /// @dev Executes an `escrow` command from the parts of a matched intent string. + function escrow( + string memory to, + string memory amount, + string memory token, + string memory time /*'40'*/, + string memory unit /*'days'*/ + ) public payable virtual returns (bytes32) { + return + _escrow( + bytes(to), + bytes(amount), + bytes(token), + bytes(time), + bytes(unit), + false + ); + } + + /// @dev Handles either a `lock` or `escrow` command via Escrows protocol. + function _escrow( + bytes memory to, + bytes memory amount, + bytes memory token, + bytes memory time /*'40'*/, + bytes memory unit /*'days'*/, + bool lockup + ) internal virtual returns (bytes32) { + address _token; + uint256 decimals; + if (bytes(token).length == 42) _token = _toAddress(bytes(token)); + else (_token, decimals) = _returnTokenConstants(bytes32(token)); + if (_token == address(0)) _token = addresses[string(token)]; + (, address _to, ) = whatIsTheAddressOf(string(to)); + uint256 _amount = _toUint( + amount, + decimals != 0 ? decimals : _token.readDecimals(), + _token + ); + + uint256 _time = _simpleToUint256(time); + bytes32 _unit = bytes32(unit); + + if (_unit == "minute" || _unit == "minutes") { + _time = _time * 1 minutes; + } else if (_unit == "day" || _unit == "days") { + _time = _time * 1 days; + } else if (_unit == "week" || _unit == "weeks") { + _time = _time * 1 weeks; + } else if (_unit == "month" || _unit == "months") { + _time = _time * 4 weeks; + } else if (_unit == "year" || _unit == "years") { + _time = _time * 52 weeks; + } else { + revert InvalidSyntax(); // Invalid `unit`. + } + + if (_token == ETH) { + unchecked { + require(msg.value == _amount); + return + IEscrows(ESCROWS).escrow{value: _amount}( + address(0), + lockup ? _to : msg.sender, + lockup ? msg.sender : _to, + CURIA, + _amount, + string( + abi.encodePacked( + "lock", + " ", + amount, + " ", + token, + " ", + "for", + " ", + to, + " ", + "for", + " ", + time, + " ", + unit + ) + ), + block.timestamp + _time + ); + } + } else { + _token.safeTransferFrom(msg.sender, address(this), _amount); + _token.safeApprove(ESCROWS, _amount); + unchecked { + return + IEscrows(ESCROWS).escrow( + _token, + lockup ? _to : msg.sender, + lockup ? msg.sender : _to, + CURIA, + _amount, + string( + abi.encodePacked( + "lock", + " ", + amount, + " ", + token, + " ", + "for", + " ", + to, + " ", + "for", + " ", + time, + " ", + unit + ) + ), + block.timestamp + _time + ); + } + } + } + + /// @dev Executes a `swap` command from the parts of a matched intent string. + function swap( + string memory amountIn, + string memory amountOutMin, + string memory tokenIn, + string memory tokenOut, + string memory receiver + ) public payable virtual { + SwapInfo memory info; + uint256 decimalsIn; + uint256 decimalsOut; + if (bytes(tokenIn).length == 42) + info.tokenIn = _toAddress(bytes(tokenIn)); + else + (info.tokenIn, decimalsIn) = _returnTokenConstants( + bytes32(bytes(tokenIn)) + ); + if (info.tokenIn == address(0)) info.tokenIn = addresses[tokenIn]; + if (bytes(tokenOut).length == 42) + info.tokenOut = _toAddress(bytes(tokenOut)); + else + (info.tokenOut, decimalsOut) = _returnTokenConstants( + bytes32(bytes(tokenOut)) + ); + if (info.tokenOut == address(0)) info.tokenOut = addresses[tokenOut]; + + uint256 minOut; + if (bytes(amountOutMin).length != 0) { + minOut = _toUint( + bytes(amountOutMin), + decimalsOut != 0 ? decimalsOut : info.tokenOut.readDecimals(), + info.tokenOut + ); + } + + bool exactOut = bytes(amountIn).length == 0; + info.amountIn = exactOut + ? minOut + : _toUint( + bytes(amountIn), + decimalsIn != 0 ? decimalsIn : info.tokenIn.readDecimals(), + info.tokenIn + ); + + if (info.amountIn >= 1 << 255) revert Overflow(); + info.ETHIn = info.tokenIn == ETH; + if (info.ETHIn) require(msg.value == info.amountIn); + if (info.ETHIn) info.tokenIn = WETH; + info.ETHOut = info.tokenOut == ETH; + if (info.ETHOut) info.tokenOut = WETH; + + address _receiver; + if (bytes(receiver).length == 0) _receiver = msg.sender; + else (, _receiver, ) = whatIsTheAddressOf(receiver); + + (address pool, bool zeroForOne) = _computePoolAddress( + info.tokenIn, + info.tokenOut + ); + (int256 amount0, int256 amount1) = ISwapRouter(pool).swap( + !info.ETHOut ? _receiver : address(this), + zeroForOne, + !exactOut ? int256(info.amountIn) : -int256(info.amountIn), + zeroForOne ? MIN_SQRT_RATIO_PLUS_ONE : MAX_SQRT_RATIO_MINUS_ONE, + abi.encodePacked( + info.ETHIn, + info.ETHOut, + msg.sender, + info.tokenIn, + info.tokenOut, + _receiver + ) + ); + + if (minOut != 0) { + if (uint256(-(zeroForOne ? amount1 : amount0)) < minOut) + revert InsufficientSwap(); + } + } + + /// @dev Fallback `uniswapV3SwapCallback`. + /// If ETH is swapped, WETH is forwarded. + fallback() external payable virtual { + int256 amount0Delta; + int256 amount1Delta; + bool ETHIn; + bool ETHOut; + address payer; + address tokenIn; + address tokenOut; + address receiver; + assembly ("memory-safe") { + amount0Delta := calldataload(0x4) + amount1Delta := calldataload(0x24) + ETHIn := byte(0, calldataload(0x84)) + ETHOut := byte(0, calldataload(add(0x84, 1))) + payer := shr(96, calldataload(add(0x84, 2))) + tokenIn := shr(96, calldataload(add(0x84, 22))) + tokenOut := shr(96, calldataload(add(0x84, 42))) + receiver := shr(96, calldataload(add(0x84, 62))) + } + if (amount0Delta <= 0 && amount1Delta <= 0) revert InvalidSwap(); + (address pool, bool zeroForOne) = _computePoolAddress( + tokenIn, + tokenOut + ); + assembly ("memory-safe") { + if iszero(eq(caller(), pool)) { + revert(codesize(), codesize()) + } + } + if (ETHIn) { + _wrapETH(uint256(zeroForOne ? amount0Delta : amount1Delta)); + } else { + tokenIn.safeTransferFrom( + payer, + pool, + uint256(zeroForOne ? amount0Delta : amount1Delta) + ); + } + if (ETHOut) { + uint256 amount = uint256( + -(zeroForOne ? amount1Delta : amount0Delta) + ); + _unwrapETH(amount); + receiver.safeTransferETH(amount); + } + } + + /// @dev Computes the create2 address for given token pair. + /// note: This process checks all available pools for price. + function _computePoolAddress( + address tokenA, + address tokenB + ) internal view virtual returns (address pool, bool zeroForOne) { + if (tokenA < tokenB) zeroForOne = true; + else (tokenA, tokenB) = (tokenB, tokenA); + pool = _returnPoolConstants(tokenA, tokenB); + if (pool == address(0)) { + pool = pairs[tokenA][tokenB]; + if (pool == address(0)) { + address pool100 = _computePairHash(tokenA, tokenB, 100); // Lowest fee. + address pool500 = _computePairHash(tokenA, tokenB, 500); // Lower fee. + address pool3000 = _computePairHash(tokenA, tokenB, 3000); // Mid fee. + address pool10000 = _computePairHash(tokenA, tokenB, 10000); // Hi fee. + SwapLiq memory topPool; + uint256 liq; + if (pool100.code.length != 0) { + liq = _balanceOf(tokenA, pool100); + topPool = SwapLiq(pool100, liq); + } + if (pool500.code.length != 0) { + liq = _balanceOf(tokenA, pool500); + if (liq > topPool.liq) { + topPool = SwapLiq(pool500, liq); + } + } + if (pool3000.code.length != 0) { + liq = _balanceOf(tokenA, pool3000); + if (liq > topPool.liq) { + topPool = SwapLiq(pool3000, liq); + } + } + if (pool10000.code.length != 0) { + liq = _balanceOf(tokenA, pool10000); + if (liq > topPool.liq) { + topPool = SwapLiq(pool10000, liq); + } + } + pool = topPool.pool; // Return top pool. + } + } + } + + /// @dev Computes the create2 deployment hash for a given token pair. + function _computePairHash( + address token0, + address token1, + uint24 fee + ) internal pure virtual returns (address pool) { + bytes32 salt = _hash(token0, token1, fee); + assembly ("memory-safe") { + mstore8(0x00, 0xff) // Write the prefix. + mstore(0x35, UNISWAP_V3_POOL_INIT_CODE_HASH) + mstore(0x01, shl(96, UNISWAP_V3_FACTORY)) + mstore(0x15, salt) + pool := keccak256(0x00, 0x55) + mstore(0x35, 0) // Restore overwritten. + } + } + + /// @dev Returns `keccak256(abi.encode(value0, value1, value2))`. + function _hash( + address value0, + address value1, + uint24 value2 + ) internal pure virtual returns (bytes32 result) { + assembly ("memory-safe") { + let m := mload(0x40) + mstore(m, value0) + mstore(add(m, 0x20), value1) + mstore(add(m, 0x40), value2) + result := keccak256(m, 0x60) + } + } + + /// @dev Wraps an `amount` of ETH to WETH and funds pool caller for swap. + function _wrapETH(uint256 amount) internal virtual { + assembly ("memory-safe") { + pop(call(gas(), WETH, amount, codesize(), 0x00, codesize(), 0x00)) + mstore(0x14, caller()) // Store the `pool` argument. + mstore(0x34, amount) // Store the `amount` argument. + mstore(0x00, 0xa9059cbb000000000000000000000000) // `transfer(address,uint256)`. + pop(call(gas(), WETH, 0, 0x10, 0x44, codesize(), 0x00)) + mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten. + } + } + + /// @dev Unwraps an `amount` of ETH from WETH for return. + function _unwrapETH(uint256 amount) internal virtual { + assembly ("memory-safe") { + mstore(0x00, 0x2e1a7d4d) // `withdraw(uint256)`. + mstore(0x20, amount) // Store the `amount` argument. + pop(call(gas(), WETH, 0, 0x1c, 0x24, codesize(), 0x00)) + } + } + + /// @dev Returns the amount of ERC20 `token` owned by `account`. + function _balanceOf( + address token, + address account + ) internal view virtual returns (uint256 amount) { + assembly ("memory-safe") { + mstore(0x00, 0x70a08231000000000000000000000000) // `balanceOf(address)`. + mstore(0x14, account) // Store the `account` argument. + pop(staticcall(gas(), token, 0x10, 0x24, 0x20, 0x20)) + amount := mload(0x20) + } + } + + /// @dev ETH receiver fallback. + /// Only canonical WETH can call. + receive() external payable virtual { + assembly ("memory-safe") { + if iszero(eq(caller(), WETH)) { + revert(codesize(), codesize()) + } + } + } + + /// @dev Guards a function from reentrancy. + modifier nonReentrant() virtual { + assembly ("memory-safe") { + if eq(sload(_REENTRANCY_GUARD_SLOT), address()) { + mstore(0x00, 0xab143c06) // `Reentrancy()`. + revert(0x1c, 0x04) + } + sstore(_REENTRANCY_GUARD_SLOT, address()) + } + _; + assembly ("memory-safe") { + sstore(_REENTRANCY_GUARD_SLOT, codesize()) + } + } + + /// @dev Executes an `order` command from the parts of a matched intent string. + function order( + string memory tokenIn, + string memory tokenOut, + string memory amountIn, + string memory amountOut, + string memory receiver + ) public payable nonReentrant returns (bytes32 hash) { + Order memory o; + uint256 decimalsIn; + uint256 decimalsOut; + + if (bytes(tokenIn).length == 42) o.tokenIn = _toAddress(bytes(tokenIn)); + else + (o.tokenIn, decimalsIn) = _returnTokenConstants( + bytes32(bytes(tokenIn)) + ); + if (o.tokenIn == address(0)) o.tokenIn = addresses[string(tokenIn)]; + if (bytes(tokenOut).length == 42) + o.tokenOut = _toAddress(bytes(tokenOut)); + else + (o.tokenOut, decimalsOut) = _returnTokenConstants( + bytes32(bytes(tokenOut)) + ); + if (o.tokenOut == address(0)) + o.tokenOut = addresses[string(bytes(tokenOut))]; + + o.amountIn = _toUint( + bytes(amountIn), + decimalsIn != 0 ? decimalsIn : o.tokenIn.readDecimals(), + o.tokenIn + ); + o.amountOut = _toUint( + bytes(amountOut), + decimalsOut != 0 ? decimalsOut : o.tokenOut.readDecimals(), + o.tokenOut + ); + + if (o.tokenIn == ETH) require(msg.value == o.amountIn); + unchecked { + o.maker = msg.sender; + address _receiver; + if (bytes(receiver).length == 0) _receiver = msg.sender; + else (, _receiver, ) = whatIsTheAddressOf(receiver); + o.receiver = _receiver; + o.nonce = uint48(block.timestamp); + o.expiry = uint48(block.timestamp + 1 weeks); + orders[hash = keccak256(abi.encode(o))] = o; + orderHashes.push(hash); + } + } + + /// @dev Cancels a standing order by the `maker`. + function cancelOrder(bytes32 hash) public nonReentrant { + Order memory o = orders[hash]; + delete orders[hash]; + if (msg.sender != o.maker) revert Unauthorized(); + if (o.tokenIn == ETH) msg.sender.safeTransferETH(o.amountIn); + } + + /// @dev Executes a standing order for the `receiver`. + function executeOrder(bytes32 hash) public payable nonReentrant { + Order memory o = orders[hash]; + delete orders[hash]; + if (block.timestamp > o.expiry) revert OrderExpired(); + if (o.tokenIn == ETH) msg.sender.safeTransferETH(o.amountIn); + else o.tokenIn.safeTransferFrom(o.maker, msg.sender, o.amountIn); + if (o.tokenOut == ETH) { + require(msg.value == o.amountOut); + o.receiver.safeTransferETH(msg.value); + } else { + o.tokenOut.safeTransferFrom(msg.sender, o.receiver, o.amountOut); + } + } + + /// ==================== COMMAND TRANSLATION ==================== /// + + /// @dev Translates an `intent` from raw `command()` calldata. + function translateCommand( + bytes calldata callData + ) public pure virtual returns (string memory intent) { + return string(callData[4:]); + } + + /// @dev Translates an `intent` for send action from the solution `callData` of standard `execute()`. + /// note: The function selector technically doesn't need to be `execute()` but params should match. + function translateExecute( + bytes calldata callData + ) public view virtual returns (string memory intent) { + unchecked { + (address target, uint256 value) = abi.decode( + callData[4:68], + (address, uint256) + ); + + if (value != 0) { + return + string( + abi.encodePacked( + "send ", + _convertWeiToString(value, 18), + " ETH to 0x", + _toAsciiString(target) + ) + ); + } + + if ( + bytes4(callData[132:136]) != IToken.transfer.selector && + bytes4(callData[132:136]) != IToken.approve.selector + ) revert InvalidSelector(); + bool transfer = bytes4(callData[132:136]) == + IToken.transfer.selector; + + ( + string memory token, + uint256 decimals + ) = _returnTokenAliasConstants(target); + if (bytes(token).length == 0) token = names[target]; + if (decimals == 0) decimals = target.readDecimals(); // Sanity check. + (target, value) = abi.decode(callData[136:], (address, uint256)); + + return + string( + abi.encodePacked( + transfer ? "send " : "approve ", + _convertWeiToString(value, decimals), + " ", + token, + " to 0x", + _toAsciiString(target) + ) + ); + } + } + + /// @dev Translate packed ERC4337 userOp `callData` into readable `intent`. + function translateUserOp( + PackedUserOperation calldata userOp + ) public view virtual returns (string memory intent) { + return + bytes4(userOp.callData) == IExecutor.execute.selector + ? translateExecute(userOp.callData) + : translateCommand(userOp.callData); + } + + /// ====================== ENS VERIFICATION ====================== /// + + /// @dev Returns ENS name ownership details. + /// note: The `receiver` should be already set, + /// or, the command should use the raw address. + function whatIsTheAddressOf( + string memory name + ) + public + view + virtual + returns (address owner, address receiver, bytes32 node) + { + // If address length, convert. + if (bytes(name).length == 42) { + receiver = _toAddress(bytes(name)); + } else { + node = _namehash(string(abi.encodePacked(name, ".eth"))); + owner = ENS_REGISTRY.owner(node); + if (IENSHelper(owner) == ENS_WRAPPER) + owner = ENS_WRAPPER.ownerOf(uint256(node)); + receiver = IENSHelper(ENS_REGISTRY.resolver(node)).addr(node); // Fails on misname. + if (receiver == address(0)) revert InvalidReceiver(); // No receiver has been set. + } + } + + /// @dev Returns ENS reverse name resolution details. + function whatIsTheNameOf( + address user + ) public view virtual returns (string memory) { + bytes32 node = ENS_REVERSE.node(user); + return IENSHelper(ENS_REGISTRY.resolver(node)).name(node); + } + + /// @dev Computes an ENS domain namehash. + function _namehash( + string memory domain + ) internal view virtual returns (bytes32 node) { + // Process labels (in reverse order for namehash). + uint256 i = bytes(domain).length; + uint256 lastDot = i; + unchecked { + for (; i != 0; --i) { + bytes1 c = bytes(domain)[i - 1]; + if (c == ".") { + node = keccak256( + abi.encodePacked(node, _labelhash(domain, i, lastDot)) + ); + lastDot = i - 1; + continue; + } + require(c < 0x80); + bytes1 r = _idnamap[uint8(c)]; + require(uint8(r) != uint8(Rule.DISALLOWED)); + if (uint8(r) > 1) { + bytes(domain)[i - 1] = r; + } + } + } + return + keccak256(abi.encodePacked(node, _labelhash(domain, i, lastDot))); + } + + /// @dev Computes an ENS domain labelhash given its start and end. + function _labelhash( + string memory domain, + uint256 start, + uint256 end + ) internal pure virtual returns (bytes32 hash) { + assembly ("memory-safe") { + hash := keccak256(add(add(domain, 0x20), start), sub(end, start)) + } + } + + /// ========================= GOVERNANCE ========================= /// + + /// @dev Sets a public `name` tag for a given `token` address. Governed by DAO. + function setName( + address token, + string calldata name + ) public payable virtual { + assembly ("memory-safe") { + if iszero(eq(caller(), DAO)) { + revert(codesize(), codesize()) + } + } + string memory normalized = string(_lowercase(bytes(name))); + names[token] = normalized; + emit NameSet(addresses[normalized] = token, normalized); + } + + /// @dev Sets a public pool `pair` for swapping tokens. Governed by DAO. + function setPair( + address tokenA, + address tokenB, + address pair + ) public payable virtual { + assembly ("memory-safe") { + if iszero(eq(caller(), DAO)) { + revert(codesize(), codesize()) + } + } + if (tokenB < tokenA) (tokenA, tokenB) = (tokenB, tokenA); + emit PairSet(tokenA, tokenB, pairs[tokenA][tokenB] = pair); + } + + /// ===================== STRING OPERATIONS ===================== /// + + /// @dev Returns copy of string in lowercase. + /// Modified from Solady LibString `toCase`. + function _lowercase( + bytes memory subject + ) internal pure virtual returns (bytes memory result) { + assembly ("memory-safe") { + let len := mload(subject) + result := add(mload(0x40), 0x20) + subject := add(subject, 1) + let flags := shl(add(70, shl(5, 0)), 0x3ffffff) + let w := not(0) + for { + let o := len + } 1 { + + } { + o := add(o, w) + let b := and(0xff, mload(add(subject, o))) + mstore8(add(result, o), xor(b, and(shr(b, flags), 0x20))) + if iszero(o) { + break + } + } + result := mload(0x40) + mstore(result, len) // Store the length. + let last := add(add(result, 0x20), len) + mstore(last, 0) // Zeroize the slot after the string. + mstore(0x40, add(last, 0x20)) // Allocate the memory. + } + } + + /// @dev Extracts the first word (action) as bytes32. + function _extraction( + bytes memory normalizedIntent + ) internal pure virtual returns (bytes32 result) { + assembly ("memory-safe") { + let str := add(normalizedIntent, 0x20) + result := mload(str) + + // Find the index of the first space or null terminator. + let spaceIndex := 32 + for { + let i := 0 + } lt(i, 32) { + i := add(i, 1) + } { + let char := byte(i, result) + if or(eq(char, 0x20), eq(char, 0)) { + spaceIndex := i + break + } + } + + // Create a mask to clear bytes after the first word. + let mask := shl(mul(8, sub(32, spaceIndex)), not(0)) + result := and(result, mask) + } + } + + /// @dev Extract the key words of normalized `send` intent. + function _extractSend( + bytes memory normalizedIntent + ) + internal + pure + virtual + returns (bytes memory to, bytes memory amount, bytes memory token) + { + StringPart[] memory parts = _split(normalizedIntent, " "); + if (parts.length == 4) { + return ( + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[3]) + ); + } + if (parts.length == 5) { + return ( + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[2]) + ); + } else { + revert InvalidSyntax(); // Command is not formatted. + } + } + + /// @dev Extract the key words of normalized `lock` intent. + function _extractLock( + bytes memory normalizedIntent + ) + internal + pure + virtual + returns ( + bytes memory to, + bytes memory amount, + bytes memory token, + bytes memory time, + bytes memory unit + ) + { + StringPart[] memory parts = _split(normalizedIntent, " "); + if (parts.length == 7) { + return ( + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[3]), + _getPart(normalizedIntent, parts[5]), + _getPart(normalizedIntent, parts[6]) + ); + } + if (parts.length == 8) { + return ( + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[6]), + _getPart(normalizedIntent, parts[7]) + ); + } else { + revert InvalidSyntax(); // Command is not formatted. + } + } + + /// @dev Extract the key words of normalized `swap` intent. + function _extractSwap( + bytes memory normalizedIntent + ) + internal + pure + virtual + returns ( + bytes memory amountIn, + bytes memory amountOutMin, + bytes memory tokenIn, + bytes memory tokenOut, + bytes memory receiver + ) + { + StringPart[] memory parts = _split(normalizedIntent, " "); + bool isNumber; + if (parts.length == 5) { + isNumber = _isNumber(_getPart(normalizedIntent, parts[1])); + if (isNumber) { + return ( + // 'exactIn'. + _getPart(normalizedIntent, parts[1]), + "", + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[4]), + "" + ); + } else { + return ( + // 'exactOut'. + "", + _getPart(normalizedIntent, parts[3]), + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[4]), + "" + ); + } + } else if (parts.length == 6) { + return ( + // 'minOut'. + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[5]), + "" + ); + } else if (parts.length == 7) { + isNumber = _isNumber(_getPart(normalizedIntent, parts[1])); + if (isNumber) { + return ( + // 'exactIn' send. + _getPart(normalizedIntent, parts[1]), + "", + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[6]) + ); + } else { + return ( + // 'exactOut' send. + "", + _getPart(normalizedIntent, parts[3]), + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[6]) + ); + } + } else if (parts.length == 8) { + // 'minOut' send. + return ( + _getPart(normalizedIntent, parts[1]), + _getPart(normalizedIntent, parts[4]), + _getPart(normalizedIntent, parts[2]), + _getPart(normalizedIntent, parts[5]), + _getPart(normalizedIntent, parts[7]) + ); + } else { + revert InvalidSyntax(); // Unformatted. + } + } + + /// @dev Validate whether given bytes string is number, percentage or 'all'. + function _isNumber(bytes memory s) internal pure virtual returns (bool) { + if (bytes32(s) == "all") return true; + return (s[0] >= 0x30 && s[0] <= 0x39); + } + + /// @dev Splits a string into parts based on a delimiter. + function _split( + bytes memory base, + bytes1 delimiter + ) internal pure virtual returns (StringPart[] memory parts) { + unchecked { + uint256 len = base.length; + uint256 count = 1; + // Count the number of parts. + for (uint256 i; i != len; ++i) { + if (base[i] == delimiter) { + ++count; + } + } + parts = new StringPart[](count); + uint256 partIndex; + uint256 start; + // Split the string and populate parts array. + for (uint256 i; i != len; ++i) { + if (base[i] == delimiter) { + parts[partIndex++] = StringPart(start, i); + start = i + 1; + } + } + // Add the final part. + parts[partIndex] = StringPart(start, len); + } + } + + /// @dev Converts a `StringPart` into its compact bytes. + function _getPart( + bytes memory base, + StringPart memory part + ) internal pure virtual returns (bytes memory) { + unchecked { + bytes memory result = new bytes(part.end - part.start); + for (uint256 i; i != result.length; ++i) { + result[i] = base[part.start + i]; + } + return result; + } + } + + /// @dev Simple bytes string converter for time units. + function _simpleToUint256( + bytes memory b + ) internal pure virtual returns (uint256) { + unchecked { + uint256 result; + for (uint256 i; i != b.length; ++i) { + if (uint8(b[i]) >= 48 && uint8(b[i]) <= 57) { + result = result * 10 + (uint8(b[i]) - 48); + } else { + revert InvalidCharacter(); // Non-digit character found. + } + } + return result; + } + } + + /// @dev Convert string to decimalized numerical value. + function _toUint( + bytes memory s, + uint256 decimals, + address token + ) internal view virtual returns (uint256 result) { + unchecked { + // Check for "all" or "100%" first. + bytes32 sBytes32 = bytes32(s); + if (sBytes32 == bytes32("all") || sBytes32 == bytes32("100%")) { + return + token == ETH + ? msg.sender.balance + msg.value + : _balanceOf(token, msg.sender); + } + + uint256 len = s.length; + bool hasDecimal; + uint256 decimalPlaces; + bool isPercentage; + + for (uint256 i; i < len; ++i) { + bytes1 c = s[i]; + if (c >= 0x30 && c <= 0x39) { + result = result * 10 + uint8(c) - 48; + if (hasDecimal) { + if (++decimalPlaces > decimals) break; + } + } else if (c == 0x2E && !hasDecimal) { + hasDecimal = true; + } else if (c == 0x25 && i == len - 1) { + isPercentage = true; + } else if (c != 0x20) { + revert InvalidCharacter(); + } + } + + // Adjust for decimals. + if (!hasDecimal) { + result *= 10 ** decimals; + } else if (decimalPlaces < decimals) { + result *= 10 ** (decimals - decimalPlaces); + } + + // Handle percentage. + if (isPercentage) { + uint256 balance = token == ETH + ? msg.sender.balance + msg.value + : _balanceOf(token, msg.sender); + result = (balance * result) / (100 * 10 ** decimals); + } + } + } + + /// @dev Converts a hexadecimal string to its `address` representation. + function _toAddress( + bytes memory s + ) internal pure virtual returns (address addr) { + unchecked { + if (s.length != 42) revert InvalidSyntax(); + uint256 result; + for (uint256 i = 2; i != 42; ++i) { + result *= 16; + uint8 b = uint8(s[i]); + if (b >= 48 && b <= 57) { + result += b - 48; + } else if (b >= 65 && b <= 70) { + result += b - 55; + } else if (b >= 97 && b <= 102) { + result += b - 87; + } else { + revert InvalidSyntax(); + } + } + return address(uint160(result)); + } + } + + /// @dev Convert an address to an ASCII string representation. + function _toAsciiString( + address x + ) internal pure virtual returns (string memory) { + unchecked { + bytes memory s = new bytes(40); + for (uint256 i; i != 20; ++i) { + bytes1 b = bytes1( + uint8(uint256(uint160(x)) / (2 ** (8 * (19 - i)))) + ); + bytes1 hi = bytes1(uint8(b) / 16); + bytes1 lo = bytes1(uint8(b) - 16 * uint8(hi)); + s[2 * i] = _char(hi); + s[2 * i + 1] = _char(lo); + } + return string(s); + } + } + + /// @dev Convert a single byte to a character in the ASCII string. + function _char(bytes1 b) internal pure virtual returns (bytes1 c) { + unchecked { + uint8 n = uint8(b) & 0xf; + c = bytes1(n + (n < 10 ? 0x30 : 0x57)); + } + } + + /// @dev Convert number to string and insert decimal point. + function _convertWeiToString( + uint256 weiAmount, + uint256 decimals + ) internal pure virtual returns (string memory) { + unchecked { + uint256 scalingFactor = 10 ** decimals; + string memory wholeNumberStr = _toString(weiAmount / scalingFactor); + string memory decimalPartStr = _toString(weiAmount % scalingFactor); + while (bytes(decimalPartStr).length != decimals) { + decimalPartStr = string(abi.encodePacked("0", decimalPartStr)); + } + decimalPartStr = _removeTrailingZeros(bytes(decimalPartStr)); + if (bytes(decimalPartStr).length == 0) { + return wholeNumberStr; + } + return + string(abi.encodePacked(wholeNumberStr, ".", decimalPartStr)); + } + } + + /// @dev Remove any trailing zeroes from bytes. + function _removeTrailingZeros( + bytes memory str + ) internal pure virtual returns (string memory) { + unchecked { + uint256 len = str.length; + uint256 end = len; + while (end != 0 && str[end - 1] == 0x30) { + --end; + } + if (end == len) { + return string(str); + } + bytes memory trimmedBytes = new bytes(end); + for (uint256 i; i != end; ++i) { + trimmedBytes[i] = str[i]; + } + return string(trimmedBytes); + } + } + + /// @dev Returns the base 10 decimal representation of `value`. + /// Modified from (https://github.com/Vectorized/solady/blob/main/src/utils/LibString.sol) + function _toString( + uint256 value + ) internal pure virtual returns (string memory str) { + assembly ("memory-safe") { + str := add(mload(0x40), 0x80) + mstore(0x40, add(str, 0x20)) + mstore(str, 0) + let end := str + let w := not(0) + for { + let temp := value + } 1 { + + } { + str := add(str, w) + mstore8(str, add(48, mod(temp, 10))) + temp := div(temp, 10) + if iszero(temp) { + break + } + } + let len := sub(end, str) + str := sub(str, 0x20) + mstore(str, len) + } + } +} + +/// @dev ENS name resolution helper contracts interface. +interface IENSHelper { + function addr(bytes32) external view returns (address); + + function node(address) external view returns (bytes32); + + function owner(bytes32) external view returns (address); + + function ownerOf(uint256) external view returns (address); + + function resolver(bytes32) external view returns (address); + + function name(bytes32) external view returns (string memory); +} + +/// @dev Simple token handler interface. +interface IToken { + function approve(address, uint256) external returns (bool); + + function transfer(address, uint256) external returns (bool); +} + +/// @notice Simple calldata executor interface. +interface IExecutor { + function execute( + address, + uint256, + bytes calldata + ) external payable returns (bytes memory); +} + +/// @dev Simple Escrows protocol locking interface. +interface IEscrows { + function escrow( + address, + address, + address, + address, + uint256, + string calldata, + uint256 + ) external payable returns (bytes32); +} + +/// @dev Simple Uniswap V3 swapping interface. +interface ISwapRouter { + function swap( + address, + bool, + int256, + uint160, + bytes calldata + ) external returns (int256, int256); +} From 10d40e817d52aa7fb61bd40987d43858415d1371 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 2 Feb 2025 19:13:05 +0530 Subject: [PATCH 02/71] intent engine : trading with quant(ai) done --- backend/agent.js | 58 ----------- backend/package-lock.json | 98 +++++++++++++++++++ backend/package.json | 1 + backend/server.js | 37 ++----- backend/tools/index.js | 34 +------ .../1/run-1738495606.json | 52 ++++++++++ .../1/run-1738503199.json | 52 ++++++++++ .../DeployTradeIntent.sol/1/run-latest.json | 24 ++--- .../1/run-1738495606.json | 7 ++ .../1/run-1738503199.json | 7 ++ frontend/src/components/TradingChat.jsx | 46 ++++++++- frontend/src/constants/abi.js | 2 +- 12 files changed, 281 insertions(+), 137 deletions(-) delete mode 100644 backend/agent.js create mode 100644 broadcast/DeployTradeIntent.sol/1/run-1738495606.json create mode 100644 broadcast/DeployTradeIntent.sol/1/run-1738503199.json create mode 100644 cache/DeployTradeIntent.sol/1/run-1738495606.json create mode 100644 cache/DeployTradeIntent.sol/1/run-1738503199.json diff --git a/backend/agent.js b/backend/agent.js deleted file mode 100644 index b58e93b..0000000 --- a/backend/agent.js +++ /dev/null @@ -1,58 +0,0 @@ -import dotenv from "dotenv"; -dotenv.config(); - -import { SYSTEM_PROMPT } from "./config/prompt.js"; -import { createPublicClient, createWalletClient, http } from "viem"; -import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; -import { mainnet } from "viem/chains"; -import { createNaniTools } from "./tools/index.js"; -import { openai } from "@ai-sdk/openai"; -import {createOpenAI as createGroq} from '@ai-sdk/openai' -import { generateText } from "ai"; - -const groq = createGroq({ - baseURL: 'https://api.groq.com/openai/v1', - apiKey: process.env.GROQ_API_KEY, -}); - -let PRIVATE_KEY = process.env.PRIVATE_KEY; -console.log("Private Key:", PRIVATE_KEY); -if (!PRIVATE_KEY) { - PRIVATE_KEY = generatePrivateKey(); - console.log("Generated Private Key:", PRIVATE_KEY); -} -const account = privateKeyToAccount(PRIVATE_KEY); -console.log("Agent Address: ", account.address); -const walletClient = createWalletClient({ - account, - chain: mainnet, //change to eth - transport: http(), -}); -const publicClient = createPublicClient({ - chain: mainnet, - transport: http(`https://rpc.ankr.com/eth/${process.env.ANKR_API_KEY}`), -}); -const tools = createNaniTools({ - account, - walletClient, - publicClient, -}); - -const { text } = await generateText({ - model: groq('llama3-8b-8192'), - maxSteps: 10, - system: SYSTEM_PROMPT, - tools, - prompt: - "i have some tokens give me insights on trading them i dont have a high risk apetite so kepe that in mind", - onStepFinish({ text, toolCalls, toolResults, finishReason, usage }) { - if (toolCalls[0]?.toolName) { - console.log(`[${toolCalls[0].toolName}]`, toolResults[0]?.result); - } - }, -}); -console.log("Output:", text); -console.log("typeof:", typeof text); -let response = text + " uniswap"; -console.log("response:", response); -console.log("typeof:", typeof response); diff --git a/backend/package-lock.json b/backend/package-lock.json index aaafe3c..b8d945f 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -15,6 +15,7 @@ "axios": "^1.7.9", "cors": "^2.8.5", "dotenv": "^16.1.4", + "ethers": "^6.13.5", "express": "^4.21.2", "groq-sdk": "^0.12.0", "moralis": "^2.27.2", @@ -1052,6 +1053,11 @@ "node": ">= 0.6" } }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, "node_modules/agentkeepalive": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", @@ -1620,6 +1626,93 @@ "node": ">=10.0.0" } }, + "node_modules/ethers": { + "version": "6.13.5", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", + "integrity": "sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -2808,6 +2901,11 @@ "node": ">=6" } }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", diff --git a/backend/package.json b/backend/package.json index eee5135..90de0e3 100644 --- a/backend/package.json +++ b/backend/package.json @@ -11,6 +11,7 @@ "axios": "^1.7.9", "cors": "^2.8.5", "dotenv": "^16.1.4", + "ethers": "^6.13.5", "express": "^4.21.2", "groq-sdk": "^0.12.0", "moralis": "^2.27.2", diff --git a/backend/server.js b/backend/server.js index 4c35b2e..7c8e4d0 100644 --- a/backend/server.js +++ b/backend/server.js @@ -4,11 +4,7 @@ dotenv.config(); import express from "express"; import cors from "cors"; import { SYSTEM_PROMPT } from "./config/prompt.js"; -import { createPublicClient, createWalletClient, http } from "viem"; -import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; -import { mainnet } from "viem/chains"; import { createNaniTools } from "./tools/index.js"; -import { openai } from "@ai-sdk/openai"; import { generateText } from "ai"; import { createOpenAI as createGroq } from '@ai-sdk/openai'; @@ -19,36 +15,15 @@ const PORT = process.env.PORT || 5000; app.use(cors()); // Enable CORS for frontend communication app.use(express.json()); // Parse JSON request bodies -// Initialize wallet and tools -let PRIVATE_KEY = process.env.PRIVATE_KEY; -if (!PRIVATE_KEY) { - PRIVATE_KEY = generatePrivateKey(); - console.log("Generated Private Key:", PRIVATE_KEY); -} -const account = privateKeyToAccount(PRIVATE_KEY); -console.log("Agent Address: ", account.address); - -const walletClient = createWalletClient({ - account, - chain: mainnet, // Change to Ethereum mainnet - transport: http(), -}); - -const publicClient = createPublicClient({ - chain: mainnet, - transport: http(`https://rpc.ankr.com/eth/${process.env.ANKR_API_KEY}`), -}); - -const tools = createNaniTools({ - account, - walletClient, - publicClient, -}); - // API endpoint to handle requests from the frontend app.post("/api/generate-insights", async (req, res) => { try { - const { prompt } = req.body; // Get the prompt from the frontend + + const { prompt, balances } = req.body; // Get the prompt from the frontend + console.log("balance backedn 1 : , ", balances) + const tools = createFoundryUpTools({ + balances + }); if (!prompt) { return res.status(400).json({ error: "Prompt is required" }); diff --git a/backend/tools/index.js b/backend/tools/index.js index c9b54e4..202b2f0 100644 --- a/backend/tools/index.js +++ b/backend/tools/index.js @@ -1,22 +1,10 @@ import dotenv from "dotenv"; dotenv.config(); -import Moralis from "moralis"; -import { AnkrProvider } from "@ankr.com/ankr.js"; import { z } from "zod"; import { tool } from "ai"; -import { http } from "viem"; -if (!process.env.ANKR_API_KEY) { - throw new Error("ANKR_API_KEY environment variable must be set"); -} -const provider = new AnkrProvider( - `https://rpc.ankr.com/multichain/${process.env.ANKR_API_KEY}` -); - -// const ZEROX_API_URL = "https://arbitrum.api.0x.org"; - -export const createNaniTools = ({ account, walletClient, publicClient }) => ({ +export const createFoundryUpTools = (tokenBalance) => ({ getLiquidityPoolPrice: tool({ description: "Get liquidity pool price using Moralis", parameters: z.object({ @@ -39,26 +27,12 @@ export const createNaniTools = ({ account, walletClient, publicClient }) => ({ } }, }), - getBalance: tool({ description: "Check token balances with current prices", parameters: z.object({}), execute: async () => { - try { - const [address] = await walletClient.getAddresses(); - const response = await provider.getAccountBalance({ - blockchain: "eth", - walletAddress: address, - onlyWhitelisted: false, - }); - if (!response) { - throw new Error("Failed to fetch balance"); - } - return response; - } catch (error) { - console.error("Error fetching balance:", error); - return { error: error.message || "An unknown error occurred" }; - } + console.log("balances json in backend : ", tokenBalance) + return tokenBalance }, }), -}); +}); \ No newline at end of file diff --git a/broadcast/DeployTradeIntent.sol/1/run-1738495606.json b/broadcast/DeployTradeIntent.sol/1/run-1738495606.json new file mode 100644 index 0000000..5e922b2 --- /dev/null +++ b/broadcast/DeployTradeIntent.sol/1/run-1738495606.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xfcd99e35081e7f93c085dd924f594cdafa984bf609df5f7b5771facdba27f515", + "transactionType": "CREATE", + "contractName": "IntentEngine", + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x138270", + "value": "0x0", + "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", + "nonce": "0x34e", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xf01e0", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xfcd99e35081e7f93c085dd924f594cdafa984bf609df5f7b5771facdba27f515", + "transactionIndex": "0x0", + "blockHash": "0x57c06467b86456f6871177acd85827c86cbbddadc5217536a93c1f1e54997ffa", + "blockNumber": "0x14c0237", + "gasUsed": "0xf01e0", + "effectiveGasPrice": "0x9f9590bc", + "blobGasPrice": "0x36a4936", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a" + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "contract IntentEngine", + "value": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" + } + }, + "timestamp": 1738495606, + "chain": 1, + "commit": "eb03d24" +} \ No newline at end of file diff --git a/broadcast/DeployTradeIntent.sol/1/run-1738503199.json b/broadcast/DeployTradeIntent.sol/1/run-1738503199.json new file mode 100644 index 0000000..1f01832 --- /dev/null +++ b/broadcast/DeployTradeIntent.sol/1/run-1738503199.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", + "transactionType": "CREATE", + "contractName": "IntentEngine", + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "gas": "0x138270", + "value": "0x0", + "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", + "nonce": "0x34e", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xf01e0", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", + "transactionIndex": "0x0", + "blockHash": "0x0d83dd1358a191147737091adbdc37b94105481c6c6c614514fc9fc649f5be81", + "blockNumber": "0x14c04ac", + "gasUsed": "0xf01e0", + "effectiveGasPrice": "0x105aa07cf", + "blobGasPrice": "0x3fef4b2", + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a" + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "contract IntentEngine", + "value": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" + } + }, + "timestamp": 1738503199, + "chain": 1, + "commit": "eb03d24" +} \ No newline at end of file diff --git a/broadcast/DeployTradeIntent.sol/1/run-latest.json b/broadcast/DeployTradeIntent.sol/1/run-latest.json index bb5b2ab..1f01832 100644 --- a/broadcast/DeployTradeIntent.sol/1/run-latest.json +++ b/broadcast/DeployTradeIntent.sol/1/run-latest.json @@ -1,10 +1,10 @@ { "transactions": [ { - "hash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", + "hash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", "transactionType": "CREATE", "contractName": "IntentEngine", - "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c", + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a", "function": null, "arguments": null, "transaction": { @@ -12,7 +12,7 @@ "gas": "0x138270", "value": "0x0", "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", - "nonce": "0x34d", + "nonce": "0x34e", "chainId": "0x1" }, "additionalContracts": [], @@ -26,16 +26,16 @@ "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x41eac749c1ae0413cef2582e905e1306673703feabed61347003c96db0117533", + "transactionHash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", "transactionIndex": "0x0", - "blockHash": "0xd37f8099532661ae71953e8f2eda9439f6edc76133910a9dd2dfe406c2d92da5", - "blockNumber": "0x14c00ca", + "blockHash": "0x0d83dd1358a191147737091adbdc37b94105481c6c6c614514fc9fc649f5be81", + "blockNumber": "0x14c04ac", "gasUsed": "0xf01e0", - "effectiveGasPrice": "0x7cfe8ac8", - "blobGasPrice": "0x221cff9", + "effectiveGasPrice": "0x105aa07cf", + "blobGasPrice": "0x3fef4b2", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contractAddress": "0x2ca60d89144d4cdf85da87af4fe12abf9265f28c" + "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a" } ], "libraries": [], @@ -43,10 +43,10 @@ "returns": { "0": { "internal_type": "contract IntentEngine", - "value": "0x2ca60d89144D4cdf85dA87af4FE12aBF9265F28C" + "value": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" } }, - "timestamp": 1738491205, + "timestamp": 1738503199, "chain": 1, - "commit": "1912bfd" + "commit": "eb03d24" } \ No newline at end of file diff --git a/cache/DeployTradeIntent.sol/1/run-1738495606.json b/cache/DeployTradeIntent.sol/1/run-1738495606.json new file mode 100644 index 0000000..3d489ae --- /dev/null +++ b/cache/DeployTradeIntent.sol/1/run-1738495606.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "http://127.0.0.1:8545" + } + ] +} \ No newline at end of file diff --git a/cache/DeployTradeIntent.sol/1/run-1738503199.json b/cache/DeployTradeIntent.sol/1/run-1738503199.json new file mode 100644 index 0000000..3d489ae --- /dev/null +++ b/cache/DeployTradeIntent.sol/1/run-1738503199.json @@ -0,0 +1,7 @@ +{ + "transactions": [ + { + "rpc": "http://127.0.0.1:8545" + } + ] +} \ No newline at end of file diff --git a/frontend/src/components/TradingChat.jsx b/frontend/src/components/TradingChat.jsx index 815ee8e..022212b 100644 --- a/frontend/src/components/TradingChat.jsx +++ b/frontend/src/components/TradingChat.jsx @@ -38,6 +38,7 @@ const [test,setTest]=useState(""); const [addressfirstTokenToTrade, setaddressfirstTokenToTrade] = useState(null) const [startTX, setstartTX] = useState(null) const [isApproved, setIsApproved] = useState(false) + const [balances, setBalances] = useState({}) useEffect(() => { if (chatContainerRef.current) { @@ -159,10 +160,20 @@ const [test,setTest]=useState(""); // await tx.wait(); - console.log("Trade Done"); + // console.log("Trade Done"); } + const fetchAllBalances = async () => { + if (!window.ethereum) { + alert("Connect to MetaMask or another EVM wallet!"); + throw new Error("MetaMask is not installed"); + } + + + }; + + useEffect(()=>{ if(amountTotrade){ handleTokensApprove() @@ -170,6 +181,29 @@ const [test,setTest]=useState(""); },[amountTotrade]) const handleSend = async () => { + + let balances = {}; + try { + + const tokenAddresses = { + DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + // USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + }; + + for (const [token, address] of Object.entries(tokenAddresses)) { + const tokenContract = new ethers.Contract(address, ERC20ABI, provider); + const balance = await tokenContract.balanceOf(account); + balances[token] = ethers.formatUnits(balance, 18); + } + + console.log("User Token Balances:", balances); + } catch (error) { + console.error("Error fetching balances:", error); + throw error; + } + if (!input.trim()) return; // Add user input to messages @@ -181,16 +215,20 @@ const [test,setTest]=useState(""); if(input.toLowerCase()=="confirm"){ if(amountTotrade>0 && isApproved==true) commandToTradeStart(); + setMessages(prev => [...prev, { type: 'bot', content: "Please wait for transaction to be done...." }]); + return; } setInput(''); try { + + const response = await fetch("http://localhost:5000/api/generate-insights", { method: "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ prompt : input }), + body: JSON.stringify({ prompt : input , balances : balances }), }); if (!response.ok) { @@ -200,7 +238,6 @@ const [test,setTest]=useState(""); }]); return; } - const data = await response.json(); console.log("Response from backend:", data); setaiResponse(data.response) @@ -228,8 +265,7 @@ const [test,setTest]=useState(""); } const tradeIntentEngine = new ethers.Contract(TradeContractAddress, TradeABI, signer); - //const tradeTx = await tradeIntentEngine.commandToTrade(aiResponse); - const tradeTx = await tradeIntentEngine.commandToTrade("WETH DAI 0.0009 UNISWAP"); + const tradeTx = await tradeIntentEngine.commandToTrade(aiResponse); // await tradeTx.wait() console.log("Trade Transaction Hash => ",tradeTx) } diff --git a/frontend/src/constants/abi.js b/frontend/src/constants/abi.js index 4198ffe..05e6cae 100644 --- a/frontend/src/constants/abi.js +++ b/frontend/src/constants/abi.js @@ -1,5 +1,5 @@ export const TradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] -export const TradeContractAddress = "0x2ca60d89144D4cdf85dA87af4FE12aBF9265F28C" +export const TradeContractAddress = "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" export const ERC20ABI = [ "function balanceOf(address account) external view returns (uint256)", "function approve(address spender, uint256 amount) external returns (bool)" From 3d778b5549cab24cff16636a884002e918194d1a Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 19:27:52 +0530 Subject: [PATCH 03/71] proxy initialized --- .gitmodules | 6 ++++++ lib/openzeppelin-contracts | 1 + lib/openzeppelin-contracts-upgradeable | 1 + 3 files changed, 8 insertions(+) create mode 100644 .gitmodules create mode 160000 lib/openzeppelin-contracts create mode 160000 lib/openzeppelin-contracts-upgradeable diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c5e79a8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "lib/openzeppelin-contracts-upgradeable"] + path = lib/openzeppelin-contracts-upgradeable + url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable +[submodule "lib/openzeppelin-contracts"] + path = lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts new file mode 160000 index 0000000..828dbc3 --- /dev/null +++ b/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit 828dbc357cd7975c0a31d919f6d4dcf7ef2dc427 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable new file mode 160000 index 0000000..6568bed --- /dev/null +++ b/lib/openzeppelin-contracts-upgradeable @@ -0,0 +1 @@ +Subproject commit 6568bed3c6ff95168dee6778c6bd19fe8675b839 From 0d46ee958cd2dbf2881255faa1c2271040b3abe7 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 19:29:42 +0530 Subject: [PATCH 04/71] changes --- .DS_Store | Bin 0 -> 8196 bytes backend/.DS_Store | Bin 0 -> 6148 bytes foundry.toml | 7 +++- lib/.DS_Store | Bin 6148 -> 6148 bytes lib/openzeppelin-contracts | 2 +- lib/openzeppelin-contracts-upgradeable | 2 +- out/.DS_Store | Bin 0 -> 12292 bytes remappings.txt | 12 +++++++ script/DeployTradeIntent.sol | 26 +++++++++----- src/IntentEngineTrade.sol | 13 ++++--- src/UniswapRegistry.sol | 46 ++++++++----------------- 11 files changed, 58 insertions(+), 50 deletions(-) create mode 100644 .DS_Store create mode 100644 backend/.DS_Store create mode 100644 out/.DS_Store create mode 100644 remappings.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c8d507a6e3cd57c61202e6ab2626ac0dcca74254 GIT binary patch literal 8196 zcmeHLL2lGA6#Y(88U%}379mi?3My1li6up$nu637(p;cTrnFUOno;Sf8x}bN;sj+w zH(kI9U{N7iz&qd_@D6wfyaWG>19)b0i|0J|Rn(8(0q;O3 z9pL*zg3g#~EEURI2L@RJ03%GxhR;3z08BKd8cT(Upb51UsFn&{VhFVy^NG$&HI@q1 zauT}u5Sm%&3PnhETtAWNBvOTb^bU9jTnD&zk7$K5$2V7&oAJq>@or#w3rlH{GTNq`4rqrCX=t$r*`=FdYWOp$IU3g) z7c(XEvn)NqDeJioJx5eP(-5k*>2<>qdVk)YW$OCy<4LUd-f}%t+trztKKjD?7Nn}2 z_GriQiZ=KrXhcmtYhta^V`a=dYR|Cw-!gwpucSYRblmcdMT1XmIi{AEC$$#mTBb8s znKsVG?F+>xBPQRQ z%le$^b>>dpsKs~Zl=-gVB<65_pC%1f68tN%;wJaE@6W5fHgaY=o|j|kP!Hu0I*ur} zd=55$LV=E0+`ShScO5lYov6hZ$nzG-bLRXC@2PthpFzY-&hT!{S+6zSZi`#I^az{r z%{$Nu2ST;WC9eNB=D+{%gcp93-hr+7fYwZMm3!NM1l?vq&46+;t o%5og2%W;{TAeGmo8cT(kLHp+~0;;-2|9|k$fB7}|p<@pG1)@tpF8}}l literal 0 HcmV?d00001 diff --git a/backend/.DS_Store b/backend/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d310788a6eb0e07febd53de8ffb024e135162a0a GIT binary patch literal 6148 zcmeHK!A`?440XmpMR3@WV}4<0IFzY;!F~X369cIwli02(|G@`v;>IT+4ty2Qc2rtY z#0?>^CHtk0-MFt&-4KzR?N(Ew2@w@g#?c|nfbcwPCZpuxNhkNXp>@5U&X=LtWYOmM zjSTR+JD?>6x}_`1-rw=_=lLd7)uIjy_>238v*P9P^*oPReH*j6?(P%bf3#0q)Dftr zyZ$aJPW!Xn8lK+T8anw+_^4nwVqkr)!NeFa28@CKzyNwSOL3%V))+7bjDeN`{yump zW0^22%BKTHjsUl9stXPQ4t=9{RjvRW{iO!W#Ap|&`PQR literal 0 HcmV?d00001 diff --git a/foundry.toml b/foundry.toml index 81c1ba6..ca2cecc 100644 --- a/foundry.toml +++ b/foundry.toml @@ -9,6 +9,11 @@ optimizer_runs = 9999 via_ir = true - +remappings = [ + "@solady=lib/solady/", + "@forge=lib/forge-std/src/", + '@openzeppelin/contracts=lib/openzeppelin-contracts/contracts', + '@openzeppelin/contracts-upgradeable=lib/openzeppelin-contracts-upgradeable/contracts' +] [rpc_endpoints] main = "https://eth-mainnet.g.alchemy.com/v2/KywLaq2zlVzePOhip0BY3U8ztfHkYDmo" \ No newline at end of file diff --git a/lib/.DS_Store b/lib/.DS_Store index 90f345cc504682a630f22dc757b941e2cfa62da1..8564222a4dce42e3d2859088d1d1593a765a4643 100644 GIT binary patch delta 237 zcmZoMXfc=|#>B)qu~2NHo+2a1#DLw44=^$^a!lr7RAtPW9K$Fv*^7~jjXmCuEhROX}`1}Ep|7JwueqQ9`C%jf31xFqG|CjrGd ze(!Yxnt99-Q%wp%H3b&Ufa?{34bdj0_Aw#K5pQ IKx7Lu01_NKW&i*H delta 101 zcmZoMXfc=|#>B`mu~2NHo+2a5#DLw5ER%VdR2ipEj$x9R?8U^zCUAGz!K+P^qnK1+ x%oZj!#(>R^%*R+Z2QW`#+|16w&jB<9DDs_oGQWr=2Lli=GB7Z04iMSG3;^>_90mXY diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index 828dbc3..acd4ff7 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 828dbc357cd7975c0a31d919f6d4dcf7ef2dc427 +Subproject commit acd4ff74de833399287ed6b31b4debf6b2b35527 diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 6568bed..3d5fa5c 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 6568bed3c6ff95168dee6778c6bd19fe8675b839 +Subproject commit 3d5fa5c24c411112bab47bec25cfa9ad0af0e6e8 diff --git a/out/.DS_Store b/out/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8949247d057f1189d239a655759a2899c1451cef GIT binary patch literal 12292 zcmeHNU1%It6h31b*>0L2XhRSbMxUx^Nn-tZ5Zt7j`dg?;t6)L0$);&)HnZ$*6ro^1 z^hFc}5yclRXkYbBd?eoJ%-%V7=id1VD55hkb7yD1bMN<^ zd+)hFvqa?0Z#QR%4iixYC#Mq!aCwW!A3-V(e$Qv(7{U_|=LMX&pCDSKWAq5k(hMC* zppy@7!y~rehjWCUq6NdgO95@Rf_i;rGgtwlGWF3y<;tb2bGRQTzLrPnfzkt|2TBi= z9wT6&=L!2j9<93Om~oYtarCrnl7z=fyq{GO-q>cBnL0qU6_ zrL`#C2~%YX8)b?#H1(n-h8LRSxzBKR`3g>6ElkU6 z>4DM%Ne?XIk#p_cw5`1z==QmprPZL-Rz-NroK)1BzDMV<8=zM6o9hBIG<(g4kt_aN z*Yt`%kyk5-*`?tOUPFrBIC!0)ZQ7(BZO|$;aJNYhT3OOF-+^U@h2*?@U31Q~iWTIy zGW5_%_VXn4Y(dMKx-Q_l4qaRLeTq6z*TkKz2B_OAW-WDoc2nytP`<3Sz2#u)-(me# zrIz(~=q&WE;;w77HJaXX;iRTZmyh>%n5=n9_E}hyXN`FtKs}vCy=zL_HljDBX`qL%p)LaSBgG%Ttg)@Kn{6Srto@+1 zWRxS-_S&gOR4YkJG8#s)^Xb_Zf)xIK^k#-2{qS2 zyl5keSZi(Oq6;Ur{N!sb);whmWnoR8HRd@Ao;}36W0<)#)Y#Isvz>S>9W6Qke4pl= zlD}l0&%)&I5Ax?Y-9x*wdfPugz<&TO`TzK+m4Ct_ZZr8TO#U_IKN9)>Y1PBG?A)uD z-AKv%#^ai|BVXzBY_!Q&_2YiNCzP-4vt6pR1>XUr!S{HAZvq|r_(mq$!gnn4FSqhQ z%@EgJQS{DRV4aGW-0xr1+%s%q1$k{u9n+wN`Bd0X`T81W@Q#t7dNmCz`QQDb=I_i~ zww642lecOw{k%_u_Xc=7dgs)0f_DNdc|Wn7;BCRjKF@78eQn< zpa!fl=FkWEEv2T`y4IAlTv;>4tu1y%QCHM1hYwiP>xDH$xgU1*L zjlcD{7rFD-^f_oisoUrd8~n{8om)=sk8;h2{~7yRLX} z&+j&j;33 zTXmx2ddo(ed?&bmCaI1V*~Um3U=)h?yksp|$EJ6`FJ>)uy>pkYrvl~6y4qU~rhXOg z_9Jf3p^rLuT3_furv)YTjJC8MD>AO5bfm#=Nb!qzjA!U!ddMC(M$dqw11WjF($hSh z=$LCZ+Ta_0e5%5q;eXMbJ3U8uGz)9;oJR4&TkahlZ| array[dai, weth] @@ -14,41 +17,16 @@ contract UniswapRegistry { address constant WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; constructor() { + _disableInitializers(); + } + + function initialize() public initializer { + __Ownable_init(msg.sender); + __UUPSUpgradeable_init(); uniswapTokenToAddress["weth"] = WETH; uniswapTokenToAddress["usdc"] = USDC; uniswapTokenToAddress["dai"] = DAI; uniswapTokenToAddress["wbtc"] = WBTC; - - // // dai weth 01 uniswap - // //dai/weth - // // token 0 - // // token 1 - // // constant weth = .... - // // constant - // // uinswapPairsToPath["weth/dai"] = [ - // // 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, - // // 0x6B175474E89094C44Da98b954EedeAC495271d0F - // // ]; - // // uinswapPairsToPath["dai/weth"] = [ - // // 0x6B175474E89094C44Da98b954EedeAC495271d0F, - // // 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - // // ]; - // // uinswapPairsToPath["weth/usdc"] = [ - // // 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, - // // 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 - // // ]; - // // uinswapPairsToPath["usdc/weth"] = [ - // // 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, - // // 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - // // ]; - // // uinswapPairsToPath["dai/wbtc"] = [ - // // 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, - // // 0x6B175474E89094C44Da98b954EedeAC495271d0F - // // ]; - // // uinswapPairsToPath["wbtc/dai"] = [ - // // 0x6B175474E89094C44Da98b954EedeAC495271d0F, - // // 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 - // // ]; } // ---------- Getter Functions -------------- @@ -58,4 +36,8 @@ contract UniswapRegistry { ) public view returns (address) { return uniswapTokenToAddress[tokenName]; } + + function _authorizeUpgrade( + address newImplementation + ) internal virtual onlyOwner override {} } From e2aa928c9d2349353fa8eadd1fb4094eb829d787 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 2 Feb 2025 20:05:24 +0530 Subject: [PATCH 05/71] formatted and without proxy --- frontend/src/components/TradingChat.jsx | 366 ++++++++++++++---------- script/DeployTradeIntent.sol | 27 +- src/IntentEngineTrade.sol | 3 - src/UniswapRegistry.sol | 17 +- 4 files changed, 229 insertions(+), 184 deletions(-) diff --git a/frontend/src/components/TradingChat.jsx b/frontend/src/components/TradingChat.jsx index 022212b..d361fa9 100644 --- a/frontend/src/components/TradingChat.jsx +++ b/frontend/src/components/TradingChat.jsx @@ -1,25 +1,33 @@ - -import React, { useState, useRef, useEffect } from 'react'; -import { Send, Image as ImageIcon, X, Camera, Loader, Sparkles, Command, MessageSquare, Zap, Hash, Globe, Bot, LineChart } from 'lucide-react'; -import Spline from '@splinetool/react-spline'; -import { TradeABI, TradeContractAddress, ERC20ABI ,WETH_ABI} from '../constants/abi'; -import { ethers, getAddress } from 'ethers'; -import { useNavigate } from 'react-router-dom'; - +import React, { useState, useRef, useEffect } from "react"; +import { + Send, + Image as ImageIcon, + Loader, +} from "lucide-react"; +import Spline from "@splinetool/react-spline"; +import { + TradeABI, + TradeContractAddress, + ERC20ABI, + WETH_ABI, +} from "../constants/abi"; +import { ethers, getAddress } from "ethers"; +import { useNavigate } from "react-router-dom"; const IntentAI = () => { - const navigate = useNavigate(); + const navigate = useNavigate(); const chatContainerRef = useRef(null); const [isLoading, setIsLoading] = useState(false); - const [activeTab, setActiveTab] = useState('general'); - const [firstPrompt,setFirstPrompt] = useState('') + const [activeTab, setActiveTab] = useState("general"); + const [firstPrompt, setFirstPrompt] = useState(""); const [messages, setMessages] = useState([ { - type: 'bot', - content: "πŸ“ˆ Welcome to the Trading Assistant! I can help you with market analysis, trading strategies, and more." - } + type: "bot", + content: + "πŸ“ˆ Welcome to the Trading Assistant! I can help you with market analysis, trading strategies, and more.", + }, ]); -const [test,setTest]=useState(""); + const [test, setTest] = useState(""); const [account, setAccount] = useState(""); const [message, setMessage] = useState(""); // const [amount, setAmount] = useState(""); @@ -30,19 +38,21 @@ const [test,setTest]=useState(""); const [input, setInput] = useState(""); const [outputPrompt, setOutputPrompt] = useState(""); - const [contractAddress, setContractAddress] = useState(''); - const [contractABI, setContractABI] = useState(''); + const [contractAddress, setContractAddress] = useState(""); + const [contractABI, setContractABI] = useState(""); const [transactionSucceeded, settransactionSucceeded] = useState(false); - const [aiResponse, setaiResponse] = useState('') - const [amountTotrade, setAmountToTrade] = useState(null) - const [addressfirstTokenToTrade, setaddressfirstTokenToTrade] = useState(null) - const [startTX, setstartTX] = useState(null) - const [isApproved, setIsApproved] = useState(false) - const [balances, setBalances] = useState({}) + const [aiResponse, setaiResponse] = useState(""); + const [amountTotrade, setAmountToTrade] = useState(null); + const [addressfirstTokenToTrade, setaddressfirstTokenToTrade] = + useState(null); + const [startTX, setstartTX] = useState(null); + const [isApproved, setIsApproved] = useState(false); + const [balances, setBalances] = useState({}); useEffect(() => { if (chatContainerRef.current) { - chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight; + chatContainerRef.current.scrollTop = + chatContainerRef.current.scrollHeight; } }, [messages]); @@ -50,14 +60,14 @@ const [test,setTest]=useState(""); if (window.ethereum) { try { const provider = new ethers.BrowserProvider(window.ethereum); - setProvider(provider); + setProvider(provider); const accounts = await provider.send("eth_requestAccounts", []); setAccount(accounts[0]); const signer = await provider.getSigner(); - setSigner(signer); + setSigner(signer); - console.log("account connected => ", accounts[0]) + console.log("account connected => ", accounts[0]); } catch (error) { console.error("Error connecting wallet:", error); } @@ -66,211 +76,243 @@ const [test,setTest]=useState(""); } }; - const returnIntentValues = async function(){ - - const contract = new ethers.Contract(TradeContractAddress, TradeABI, signer); + const returnIntentValues = async function () { + const contract = new ethers.Contract( + TradeContractAddress, + TradeABI, + signer + ); try { if (!account) { - alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") + alert( + "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." + ); setTimeout(() => { window.location.reload(); - }, 2000); + }, 2000); throw new Error("Metamask is not installed"); } - console.log(typeof(aiResponse)) + console.log(typeof aiResponse); const response = await contract.returnIntentValues(aiResponse); - console.log("token 1:",response[0]) - console.log("token 2:",response[1]) - console.log("amount:",response[2]) - setAmountToTrade(response[2]) - setaddressfirstTokenToTrade(response[0]) - console.log("protocol",response[3]) + console.log("token 1:", response[0]); + console.log("token 2:", response[1]); + console.log("amount:", response[2]); + setAmountToTrade(response[2]); + setaddressfirstTokenToTrade(response[0]); + console.log("protocol", response[3]); } catch (error) { console.error("Error calling returnIntentValues:", error); } + }; - } - - const balanceOfDai = async()=>{ + const balanceOfDai = async () => { if (!account) { - alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") + alert( + "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." + ); throw new Error("Metamask is not installed"); } //weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 //dai 0x6B175474E89094C44Da98b954EedeAC495271d0F - const daiContract = new ethers.Contract("0x6B175474E89094C44Da98b954EedeAC495271d0F", WETH_ABI, signer); + const daiContract = new ethers.Contract( + "0x6B175474E89094C44Da98b954EedeAC495271d0F", + WETH_ABI, + signer + ); const balance = await daiContract.balanceOf(account); - console.log("dai balance : ",balance) - - } + console.log("dai balance : ", balance); + }; const giveWeth = async () => { try { if (!window.ethereum) { - alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") + alert( + "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." + ); throw new Error("Metamask is not installed"); } - - const wethContract = new ethers.Contract("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", WETH_ABI, signer); - console.log(wethContract) - console.log(signer) - - - const depositTx = await wethContract.deposit({ value: ethers.parseEther("10") }); + + const wethContract = new ethers.Contract( + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + WETH_ABI, + signer + ); + console.log(wethContract); + console.log(signer); + + const depositTx = await wethContract.deposit({ + value: ethers.parseEther("10"), + }); console.log("Depositing ETH to WETH..."); // await depositTx.wait(); - + // console.log("Transferring WETH to recipient..."); // const receipt = await transferTx.wait(); - + // console.log("WETH successfully sent!", receipt); - if(depositTx){ + if (depositTx) { const balance = await wethContract.balanceOf(account); - console.log("weth balance : ",balance) + console.log("weth balance : ", balance); } - } catch (error) { console.error("Error giving WETH to user:", error); throw error; } - } - + }; + const handleTokensApprove = async () => { if (!window.ethereum) { - alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") + alert( + "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." + ); throw new Error("Metamask is not installed"); } - - const tokenToTrade = new ethers.Contract("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", ERC20ABI, signer); + + const tokenToTrade = new ethers.Contract( + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + ERC20ABI, + signer + ); if (account) { const balance = await tokenToTrade.balanceOf(account); - if(balance < amountTotrade) { + if (balance < amountTotrade) { alert("Insufficient balance"); return; } - const approveTransaction = await tokenToTrade.approve(TradeContractAddress, amountTotrade) + const approveTransaction = await tokenToTrade.approve( + TradeContractAddress, + amountTotrade + ); await approveTransaction.wait(1); - setIsApproved(true) - }else{ - alert("connect metamask again!....") + setIsApproved(true); + } else { + alert("connect metamask again!...."); } // await tx.wait(); // console.log("Trade Done"); - - } + }; const fetchAllBalances = async () => { if (!window.ethereum) { alert("Connect to MetaMask or another EVM wallet!"); throw new Error("MetaMask is not installed"); } - - }; - - useEffect(()=>{ - if(amountTotrade){ - handleTokensApprove() + useEffect(() => { + if (amountTotrade) { + handleTokensApprove(); } - },[amountTotrade]) + }, [amountTotrade]); const handleSend = async () => { - let balances = {}; try { - const tokenAddresses = { DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", }; - + for (const [token, address] of Object.entries(tokenAddresses)) { const tokenContract = new ethers.Contract(address, ERC20ABI, provider); const balance = await tokenContract.balanceOf(account); balances[token] = ethers.formatUnits(balance, 18); } - + console.log("User Token Balances:", balances); } catch (error) { console.error("Error fetching balances:", error); throw error; } - + if (!input.trim()) return; - + // Add user input to messages - setMessages((prev) => [...prev, { type: 'user', content: input }]); - + setMessages((prev) => [...prev, { type: "user", content: input }]); + // Set the first prompt and clear the input field setFirstPrompt(input); console.log("input : ", input); - if(input.toLowerCase()=="confirm"){ - if(amountTotrade>0 && isApproved==true) - commandToTradeStart(); - setMessages(prev => [...prev, { type: 'bot', content: "Please wait for transaction to be done...." }]); + if (input.toLowerCase() == "confirm") { + if (amountTotrade > 0 && isApproved == true) commandToTradeStart(); + setMessages((prev) => [ + ...prev, + { type: "bot", content: "Please wait for transaction to be done...." }, + ]); return; } - setInput(''); - - try { + setInput(""); - - const response = await fetch("http://localhost:5000/api/generate-insights", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ prompt : input , balances : balances }), - }); + try { + const response = await fetch( + "http://localhost:5000/api/generate-insights", + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ prompt: input, balances: balances }), + } + ); if (!response.ok) { - setMessages(prev => [...prev, { - type: 'bot', - content: "Servers are busy. Please try again in 30 seconds." - }]); + setMessages((prev) => [ + ...prev, + { + type: "bot", + content: "Servers are busy. Please try again in 30 seconds.", + }, + ]); return; } const data = await response.json(); console.log("Response from backend:", data); - setaiResponse(data.response) - const [fromToken, toToken, amount, platform] = data.response.split(' '); - const responseForUser = `You should swap ${fromToken} to ${toToken} with an amount of ${amount} on the ${platform} platform. I can do it for you type "CONFIRM"`; - setMessages(prev => [...prev, { type: 'bot', content: responseForUser }]); - + setaiResponse(data.response); + const [fromToken, toToken, amount, platform] = data.response.split(" "); + const responseForUser = `You should swap ${fromToken} to ${toToken} with an amount of ${amount} on the ${platform} platform. I can do it for you type "CONFIRM"`; + setMessages((prev) => [ + ...prev, + { type: "bot", content: responseForUser }, + ]); } catch (error) { console.error("Error fetching insights:", error); return null; } }; - useEffect(()=>{ - if(aiResponse){ + useEffect(() => { + if (aiResponse) { console.log("Starting transaction ...."); returnIntentValues(); } - },[aiResponse]) + }, [aiResponse]); - const commandToTradeStart = async()=>{ + const commandToTradeStart = async () => { if (!account) { - alert("! Connect to Metamask or some kind of EVM Compatible Wallet ! ...") + alert( + "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." + ); throw new Error("Metamask is not installed"); } - - const tradeIntentEngine = new ethers.Contract(TradeContractAddress, TradeABI, signer); + + const tradeIntentEngine = new ethers.Contract( + TradeContractAddress, + TradeABI, + signer + ); const tradeTx = await tradeIntentEngine.commandToTrade(aiResponse); // await tradeTx.wait() - console.log("Trade Transaction Hash => ",tradeTx) - } + console.log("Trade Transaction Hash => ", tradeTx); + }; const handleKeyPress = (e) => { - if (e.key === 'Enter' && !e.shiftKey) { + if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSend(); } @@ -293,7 +335,9 @@ const [test,setTest]=useState("");
-

AI-Powered β€’ Real-Time β€’ Intelligent

+

+ AI-Powered β€’ Real-Time β€’ Intelligent +

@@ -301,23 +345,29 @@ const [test,setTest]=useState(""); {/* Title Section */}

- navigate('/')} className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-500 to-blue-500 animate-gradient-x"> + navigate("/")} + className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-500 to-blue-500 animate-gradient-x" + > Intent - navigate('/')} className="text-transparent bg-clip-text bg-gradient-to-r from-purple-200 to-indigo-300"> + navigate("/")} + className="text-transparent bg-clip-text bg-gradient-to-r from-purple-200 to-indigo-300" + > AI

- Experience seamless crypto solutions with Intent AI Chatbot – your ultimate cryptocurrency companion today! + Experience seamless crypto solutions with Intent AI Chatbot – your + ultimate cryptocurrency companion today!

{/* Updated Spline Container */}
-{/* \ */} - - + {/* \ */} +
@@ -339,7 +389,9 @@ const [test,setTest]=useState("");
-

AI Assistant

+

+ AI Assistant +

Online & Ready

@@ -348,7 +400,24 @@ const [test,setTest]=useState("");
- + {!account && ( +
+ + +
+ )} +

+ {/* Chat messages */} @@ -359,14 +428,16 @@ const [test,setTest]=useState(""); {messages.map((message, index) => (

{message.content}

@@ -389,13 +460,17 @@ const [test,setTest]=useState(""); value={input} onChange={(e) => setInput(e.target.value)} onKeyPress={handleKeyPress} - placeholder={activeTab === 'general' ? "Ask me anything..." : "Ask about trading..."} + placeholder={ + activeTab === "general" + ? "Ask me anything..." + : "Ask about trading..." + } rows="1" className="flex-1 p-3 bg-black/50 backdrop-blur-xl text-white placeholder-white/40 border border-white/10 rounded-2xl focus:outline-none focus:border-white/20 resize-none transition-all duration-300" style={{ - height: '48px', - minHeight: '48px', - maxHeight: '120px' + height: "48px", + minHeight: "48px", + maxHeight: "120px", }} />
-

- -

-

- - - {/* */} - + @@ -426,4 +494,4 @@ const [test,setTest]=useState(""); ); }; -export default IntentAI; \ No newline at end of file +export default IntentAI; diff --git a/script/DeployTradeIntent.sol b/script/DeployTradeIntent.sol index 79885c6..98f97a5 100644 --- a/script/DeployTradeIntent.sol +++ b/script/DeployTradeIntent.sol @@ -4,31 +4,20 @@ pragma solidity ^0.8.17; import {Script} from "forge-std/Script.sol"; //import Script from Foundry Standard Lib import {IntentEngine} from "../src/IntentEngineTrade.sol"; //import contract to deploy -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; contract DeployTradeIntent is Script { - function run() external returns(address) { + function run() external returns(IntentEngine) { - address proxy= deployIE(); - return proxy; - } - - - function deployIE() public returns(address) { vm.startBroadcast(); + + IntentEngine intentEngineTrade = new IntentEngine(); + - IntentEngine intentEngineTrade = new IntentEngine(); - - bytes memory data = abi.encodeWithSignature("initialize()"); - - ERC1967Proxy proxy = new ERC1967Proxy(address(intentEngineTrade), data); - vm.stopBroadcast(); - - return address(proxy); - } - -} + return intentEngineTrade; + + } +} diff --git a/src/IntentEngineTrade.sol b/src/IntentEngineTrade.sol index df256c4..c34a783 100644 --- a/src/IntentEngineTrade.sol +++ b/src/IntentEngineTrade.sol @@ -182,7 +182,4 @@ contract IntentEngine is UniswapRegistry { return (addToken1, addToken2, amount, protocol); } - function _authorizeUpgrade( - address newImplementation - ) internal onlyOwner virtual override {} } diff --git a/src/UniswapRegistry.sol b/src/UniswapRegistry.sol index c2839e1..269cb86 100644 --- a/src/UniswapRegistry.sol +++ b/src/UniswapRegistry.sol @@ -1,11 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; -import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -contract UniswapRegistry is Initializable, OwnableUpgradeable, UUPSUpgradeable { + +contract UniswapRegistry{ // dai/weth means dai to weth // dai/weth => array[dai, weth] @@ -17,18 +15,14 @@ contract UniswapRegistry is Initializable, OwnableUpgradeable, UUPSUpgradeable { address constant WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; constructor() { - _disableInitializers(); - } - - function initialize() public initializer { - __Ownable_init(msg.sender); - __UUPSUpgradeable_init(); uniswapTokenToAddress["weth"] = WETH; uniswapTokenToAddress["usdc"] = USDC; uniswapTokenToAddress["dai"] = DAI; uniswapTokenToAddress["wbtc"] = WBTC; } + + // ---------- Getter Functions -------------- function getAddressFromString( @@ -37,7 +31,4 @@ contract UniswapRegistry is Initializable, OwnableUpgradeable, UUPSUpgradeable { return uniswapTokenToAddress[tokenName]; } - function _authorizeUpgrade( - address newImplementation - ) internal virtual onlyOwner override {} } From b52b0fd955276409cff47840ff4e08ac50b1619f Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 20:16:32 +0530 Subject: [PATCH 06/71] workflow test --- .github/workflows/build-app.yaml | 35 ++++++++++++++++++++++++++++++++ .gitignore | 4 ++++ frontend/.gitignore | 1 + 3 files changed, 40 insertions(+) create mode 100644 .github/workflows/build-app.yaml create mode 100644 .gitignore diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml new file mode 100644 index 0000000..2c97b86 --- /dev/null +++ b/.github/workflows/build-app.yaml @@ -0,0 +1,35 @@ +name: Vercel Production Deployment + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + +on: + push: + branches: + - main + paths-ignore: + - '**' # Ignore all other changes except for main branch updates + +jobs: + Deploy-Production: + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Vercel CLI + run: npm install --global vercel + + - name: Pull Vercel Environment Information + # Retrieves Vercel environment variables + run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + # Builds the project locally + run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts + # Deploys the prebuilt output + run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a329d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +out +broadcast +cache +.env \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore index 3c3629e..81e83fe 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -1 +1,2 @@ node_modules +.vercel From e97fdbe27ab3320ec36c4c8471be6558ae05eccb Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 20:20:16 +0530 Subject: [PATCH 07/71] workflow check --- .github/workflows/build-app.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 2c97b86..5ce9f11 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -8,8 +8,6 @@ on: push: branches: - main - paths-ignore: - - '**' # Ignore all other changes except for main branch updates jobs: Deploy-Production: @@ -27,9 +25,9 @@ jobs: run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - name: Build Project Artifacts - # Builds the project locally + # Builds the project locally, creating .vercel/output run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts # Deploys the prebuilt output - run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} + run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} \ No newline at end of file From 882e896746f68487f9c9428cf933dcb084bcff23 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 20:25:15 +0530 Subject: [PATCH 08/71] workflow check --- .github/workflows/build-app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 5ce9f11..0fafdc5 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -29,5 +29,5 @@ jobs: run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts - # Deploys the prebuilt output + # Deploys the prebuilt outputt run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} \ No newline at end of file From e3e06b67b6de7762fc561db9afcbebe82d08a53f Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 20:31:12 +0530 Subject: [PATCH 09/71] workflow check --- .github/workflows/build-app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 0fafdc5..5ce9f11 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -29,5 +29,5 @@ jobs: run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - name: Deploy Project Artifacts - # Deploys the prebuilt outputt + # Deploys the prebuilt output run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} \ No newline at end of file From eb35a84b15605141822c1859ff43b004c76c1881 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 22:25:58 +0530 Subject: [PATCH 10/71] changes --- backend/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/server.js b/backend/server.js index 7c8e4d0..f55f6a2 100644 --- a/backend/server.js +++ b/backend/server.js @@ -4,7 +4,7 @@ dotenv.config(); import express from "express"; import cors from "cors"; import { SYSTEM_PROMPT } from "./config/prompt.js"; -import { createNaniTools } from "./tools/index.js"; +import { createFoundryUpTools } from "./tools/index.js"; import { generateText } from "ai"; import { createOpenAI as createGroq } from '@ai-sdk/openai'; From f75badea5c78cce8421ed69dc78157c5fd738a8b Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 22:36:43 +0530 Subject: [PATCH 11/71] changes --- backend/server.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/server.js b/backend/server.js index f55f6a2..e9032fc 100644 --- a/backend/server.js +++ b/backend/server.js @@ -15,6 +15,11 @@ const PORT = process.env.PORT || 5000; app.use(cors()); // Enable CORS for frontend communication app.use(express.json()); // Parse JSON request bodies + +app.get("/health",(req,res)=>{ + res.send("Server is running successfully...") +}) + // API endpoint to handle requests from the frontend app.post("/api/generate-insights", async (req, res) => { try { @@ -59,13 +64,15 @@ app.post("/api/generate-insights", async (req, res) => { } }); + // Start the server app.listen(PORT, () => { - console.log(`Server is running on http://localhost:${PORT}`); + console.log(`Server is running on PORT => ${PORT}`); }); + /**====================== * Fetching Data Test *========================**/ From 2c8951365a4cdc8eea80e012297fada66f20c307 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 2 Feb 2025 22:41:26 +0530 Subject: [PATCH 12/71] server added --- frontend/src/components/TradingChat.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/TradingChat.jsx b/frontend/src/components/TradingChat.jsx index d361fa9..6577946 100644 --- a/frontend/src/components/TradingChat.jsx +++ b/frontend/src/components/TradingChat.jsx @@ -252,7 +252,7 @@ const IntentAI = () => { try { const response = await fetch( - "http://localhost:5000/api/generate-insights", + "http://ai-quant-trader-servers.onrender.com/api/generate-insights", { method: "POST", headers: { From 5a765ff8450f3f742c8b4ab3cec21dc018956b65 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Fri, 21 Mar 2025 02:21:07 +0530 Subject: [PATCH 13/71] algos added --- .gitignore | 8 +- Python/Algorithms/DCA.py | 197 ++++++++++++++++++++++++++++++++++++++ Python/Algorithms/MA.py | 127 ++++++++++++++++++++++++ Python/Algorithms/MACD.py | 183 +++++++++++++++++++++++++++++++++++ Python/Algorithms/RSI.py | 145 ++++++++++++++++++++++++++++ Python/graph.py | 62 ++++++++++++ 6 files changed, 721 insertions(+), 1 deletion(-) create mode 100644 Python/Algorithms/DCA.py create mode 100644 Python/Algorithms/MA.py create mode 100644 Python/Algorithms/MACD.py create mode 100644 Python/Algorithms/RSI.py create mode 100644 Python/graph.py diff --git a/.gitignore b/.gitignore index 8a329d9..5d27fe3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,10 @@ out broadcast cache -.env \ No newline at end of file +.env +.DS_Store +__init__.py +__pycache__ +myenv +venv +Decisions diff --git a/Python/Algorithms/DCA.py b/Python/Algorithms/DCA.py new file mode 100644 index 0000000..025d198 --- /dev/null +++ b/Python/Algorithms/DCA.py @@ -0,0 +1,197 @@ +############################# LONG TERM LOW RISK TRADING STRATEGY ############################# +############################# DOLLAR COST AVERAGING ############################# +def extract_weth_prices(graph_data): + """ + Extracts a chronological list of WETH prices in USD from the subgraph swap data. + Expected JSON structure: + { + "data": { + "swaps": [ + { + "pool": { ... }, + "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, + "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } + }, + ... + ] + } + } + Since the query orders swaps in descending order by timestamp, + we reverse the list to produce a chronological (oldest-first) price series. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Process swaps from oldest to newest. + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenIn", {}) + token_out = swap.get("tokenOut", {}) + # Identify WETH by its symbol. + if token_in.get("symbol") == "WETH": + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + elif token_out.get("symbol") == "WETH": + try: + price = float(token_out.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + return prices + +def extract_latest_weth_price(graph_data): + """ + Extracts the most recent WETH price (in USDC) from the subgraph data. + """ + prices = extract_weth_prices(graph_data) + if not prices: + return None + return prices[-1] + +def compute_portfolio_value(portfolio, current_price): + """ + Computes the total portfolio value in USDC. + - WETH holdings are valued at the current price. + - USDC holdings remain as is. + Portfolio is a dictionary with keys: "WETH" and "USDC". + """ + weth_value = portfolio.get("WETH", 0) * current_price + usdc_value = portfolio.get("USDC", 0) + return weth_value + usdc_value + +def dca_investment(graph_data, invest_amount, portfolio): + """ + Executes a Dollar-Cost Averaging (DCA) investment. + + Parameters: + - invest_amount: The USDC amount allocated for this investment cycle. + - portfolio: A dictionary representing current holdings (e.g., {"WETH": 0.0, "USDC": 1000}). + + Process: + 1. Fetch the latest WETH price from the subgraph. + 2. Calculate how many WETH tokens can be purchased with 'invest_amount' (weth_bought = invest_amount / price). + 3. Update the portfolio by deducting the invested USDC and adding the acquired WETH. + + Returns: + The updated portfolio and details of the transaction. + """ + current_price = extract_latest_weth_price(graph_data) + if current_price is None: + return portfolio, "No price data available" + + # For DCA, assume that if the portfolio does not have sufficient USDC, + # additional funds are injected (or invest_amount is added externally). + if portfolio.get("USDC", 0) < invest_amount: + portfolio["USDC"] = portfolio.get("USDC", 0) + invest_amount + + weth_bought = invest_amount / current_price + portfolio["USDC"] -= invest_amount + portfolio["WETH"] = portfolio.get("WETH", 0) + weth_bought + + return portfolio, {"invested": invest_amount, "weth_bought": weth_bought, "price": current_price} + +def rebalance_portfolio(portfolio, target_allocation, graph_data, tolerance=0.02): + """ + Rebalances the portfolio to meet the target allocation using a buy-and-hold approach. + + Parameters: + - portfolio: Dictionary with keys "WETH" and "USDC". + - target_allocation: Dictionary indicating desired ratios, e.g., {"WETH": 0.6, "USDC": 0.4}. + The values should sum to 1. + - tolerance: The allowable deviation (e.g., 0.02 for 2%) before triggering a rebalance. + - graph_data: Latest subgraph data to determine current WETH price. + + Process: + 1. Compute the current total portfolio value (in USDC). + 2. Calculate the current allocation for WETH and USDC. + 3. If the deviation from the target allocation exceeds 'tolerance', determine how much to trade. + - If overallocated in WETH, sell a portion of WETH to increase USDC. + - If underallocated in WETH, use USDC to buy additional WETH. + + Returns: + The updated portfolio along with trade instructions. + """ + current_price = extract_latest_weth_price(graph_data) + if current_price is None: + return portfolio, "No price data available" + + total_value = compute_portfolio_value(portfolio, current_price) + current_weth_value = portfolio.get("WETH", 0) * current_price + current_usdc_value = portfolio.get("USDC", 0) + + current_alloc_weth = current_weth_value / total_value if total_value > 0 else 0 + current_alloc_usdc = current_usdc_value / total_value if total_value > 0 else 0 + + target_weth = target_allocation.get("WETH", 0) + target_usdc = target_allocation.get("USDC", 0) + + trade_instructions = {} + # Calculate deviation for WETH allocation. + deviation_weth = current_alloc_weth - target_weth + if abs(deviation_weth) < tolerance: + # Allocation is within tolerance; no rebalancing needed. + return portfolio, {"message": "Portfolio within tolerance. No rebalancing required."} + + if deviation_weth > 0: + # Overallocated in WETH: Sell some WETH to increase USDC holdings. + value_to_sell = (current_alloc_weth - target_weth) * total_value + weth_to_sell = value_to_sell / current_price + portfolio["WETH"] -= weth_to_sell + portfolio["USDC"] += value_to_sell + trade_instructions["action"] = "SELL_WETH" + trade_instructions["weth_to_sell"] = weth_to_sell + trade_instructions["usdc_received"] = value_to_sell + elif deviation_weth < 0: + # Underallocated in WETH: Buy WETH using available USDC. + value_to_buy = (target_weth - current_alloc_weth) * total_value + weth_to_buy = value_to_buy / current_price + # Ensure there is enough USDC available. + if portfolio.get("USDC", 0) < value_to_buy: + value_to_buy = portfolio.get("USDC", 0) + weth_to_buy = value_to_buy / current_price + portfolio["USDC"] -= value_to_buy + portfolio["WETH"] += weth_to_buy + trade_instructions["action"] = "BUY_WETH" + trade_instructions["weth_to_buy"] = weth_to_buy + trade_instructions["usdc_spent"] = value_to_buy + + return portfolio, trade_instructions + +# Example of using the above functions: +if __name__ == "__main__": + # Simulated subgraph JSON data (in practice, use the live JSON response from your Graph query) + sample_graph_data = { + "data": { + "swaps": [ + { + "pool": { + "activeLiquidity": "143806042277547279", + "inputTokenBalances": ["884103982508430051565", "443229485261"], + "inputTokenBalancesUSD": ["1731249.4302765468484810087103", "443229.485261"], + "totalLiquidity": "368810659123235493410897053" + }, + "tokenIn": {"_totalSupply": "2140436484428", "lastPriceUSD": "1", "symbol": "USDC"}, + "tokenOut": {"_totalSupply": "54616712146342958192185", "lastPriceUSD": "1958.50689", "symbol": "WETH"} + }, + # ... add more swap entries as needed for simulation + ] + } + } + + # Initial portfolio: starting with some USDC and no WETH. + portfolio = {"USDC": 1000, "WETH": 0.0} + + # Example 1: Execute a DCA investment of 200 USDC. + portfolio, dca_details = dca_investment(sample_graph_data, invest_amount=200, portfolio=portfolio) + print("After DCA Investment:") + print("Portfolio:", portfolio) + print("DCA Details:", dca_details) + + # Example 2: Rebalance portfolio to target allocation: 60% WETH and 40% USDC. + target_allocation = {"WETH": 0.6, "USDC": 0.4} + portfolio, rebalance_details = rebalance_portfolio(portfolio, target_allocation, sample_graph_data, tolerance=0.02) + print("\nAfter Rebalancing:") + print("Portfolio:", portfolio) + print("Rebalance Details:", rebalance_details) diff --git a/Python/Algorithms/MA.py b/Python/Algorithms/MA.py new file mode 100644 index 0000000..dded4e9 --- /dev/null +++ b/Python/Algorithms/MA.py @@ -0,0 +1,127 @@ +#############################SHORT TERM LOW RISK TRADING STRATEGY############################# +############################# Moving Average Crossover Decision ############################# + + +def extract_weth_prices(graph_data): + """ + Extract a chronological list of WETH prices in USD from the subgraph swap data. + The JSON structure is assumed to be: + { + "data": { + "swaps": [ + { + "pool": { ... }, + "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, + "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } + }, + ... + ] + } + } + + Since swaps are ordered by timestamp in descending order in the query, + we reverse the list to obtain chronological order (oldest first). + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Reverse the swap list to have prices from oldest to newest. + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenIn", {}) + token_out = swap.get("tokenOut", {}) + # Identify which token is WETH. + if token_in.get("symbol") == "WETH": + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + elif token_out.get("symbol") == "WETH": + try: + price = float(token_out.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + # Only include valid, positive prices. + if price and price > 0: + prices.append(price) + return prices + +def compute_moving_average(prices, window): + """ + Compute the simple moving average (SMA) for the last 'window' prices. + + Parameters: + prices - List of float prices in chronological order. + window - Number of periods over which to compute the average. + + Returns: + The computed moving average as a float, or None if insufficient data. + """ + if len(prices) < window: + return None + return sum(prices[-window:]) / window + +def moving_average_crossover_decision(graph_data, short_window=3, long_window=5, threshold=0.005): + """ + Implements a moving average crossover strategy designed for short-term, low-risk trading. + + Process: + 1. Extract a price series for WETH from the subgraph data. + 2. Compute the short-term moving average (SMA) using 'short_window' periods. + 3. Compute the long-term moving average (SMA) using 'long_window' periods. + 4. Calculate the relative difference between the short-term and long-term averages. + 5. Generate a trading signal based on conservative thresholds: + - If the short-term SMA exceeds the long-term SMA by more than the 'threshold' percentage, signal BUY. + - If the short-term SMA falls below the long-term SMA by more than the 'threshold' percentage, signal SELL. + - Otherwise, signal HOLD. + + Parameters: + graph_data - JSON response from the subgraph. + short_window - Number of periods for the short-term moving average. + long_window - Number of periods for the long-term moving average. + threshold - Minimum relative percentage difference required to trigger a trade. + For example, 0.005 corresponds to 0.5%. + + Returns: + A dictionary with: + - 'decision': Trading decision ("BUY", "SELL", or "HOLD"). + - 'short_ma': The short-term moving average. + - 'long_ma': The long-term moving average. + - 'latest_price': The most recent WETH price. + - 'price_series': The extracted price series. + - 'relative_difference': The percentage difference between the averages. + """ + prices = extract_weth_prices(graph_data) + if not prices: + return {"decision": "NO_DATA", "reason": "No valid price data found."} + + # Ensure sufficient data points for the long-term average. + if len(prices) < long_window: + return {"decision": "INSUFFICIENT_DATA", "reason": "Not enough price data for long-term average."} + + short_ma = compute_moving_average(prices, short_window) + long_ma = compute_moving_average(prices, long_window) + + # Calculate relative difference between the moving averages. + relative_difference = (short_ma - long_ma) / long_ma # expressed as a fraction + + # Determine decision based on conservative thresholds. + if relative_difference > threshold: + decision = "BUY" + elif relative_difference < -threshold: + decision = "SELL" + else: + decision = "HOLD" + + return { + "decision": decision, + "short_ma": short_ma, + "long_ma": long_ma, + "latest_price": prices[-1], + "price_series": prices, + "relative_difference": relative_difference + } + +# Example usage: +# Assuming 'graph_json' is the JSON response obtained from your subgraph: +# result = moving_average_crossover_decision(graph_json, short_window=3, long_window=5, threshold=0.005) +# print("Moving Average Crossover Decision:", result) diff --git a/Python/Algorithms/MACD.py b/Python/Algorithms/MACD.py new file mode 100644 index 0000000..6c54d01 --- /dev/null +++ b/Python/Algorithms/MACD.py @@ -0,0 +1,183 @@ +#############################LONG TERM HIGH RISK TRADING STRATEGY############################# +#############################MOVING AVERAGE CONVERGENCE DIVERGENCE############################# + + +def extract_weth_prices(graph_data): + """ + Extract a chronological list of WETH prices in USD from subgraph swap data. + Assumes the JSON structure: + { + "data": { + "swaps": [ + { + "pool": {...}, + "tokenIn": {"lastPriceUSD": "xxx", "symbol": "..."}, + "tokenOut": {"lastPriceUSD": "xxx", "symbol": "..."} + }, + ... + ] + } + } + Since the query returns swaps in descending order by timestamp, + this function reverses the list so that prices are in chronological order. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Process swaps in reverse (oldest first) + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenIn", {}) + token_out = swap.get("tokenOut", {}) + # Identify WETH by symbol. + if token_in.get("symbol") == "WETH": + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + elif token_out.get("symbol") == "WETH": + try: + price = float(token_out.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + return prices + +def compute_ema(prices, period): + """ + Compute the Exponential Moving Average (EMA) for a given list of prices and period. + + Parameters: + prices - List of float prices (assumed in chronological order). + period - Number of periods for EMA calculation. + + Returns: + List of EMA values where the first EMA is the simple average of the first 'period' prices. + Subsequent values use the standard EMA formula. + """ + if len(prices) < period: + return [] + ema_values = [] + # Start with a simple average for the first EMA value. + initial_ema = sum(prices[:period]) / period + ema_values.append(initial_ema) + multiplier = 2 / (period + 1) + # Compute EMA for each subsequent price. + for price in prices[period:]: + prev_ema = ema_values[-1] + ema = (price - prev_ema) * multiplier + prev_ema + ema_values.append(ema) + # Prepend the initial period with None to align the indices if needed. + return [None]*(period-1) + ema_values + +def compute_macd(prices, short_period=12, long_period=26, signal_period=9): + """ + Compute the MACD line and Signal line from the price series. + + MACD is defined as the difference between the short-term EMA and the long-term EMA. + The Signal line is the EMA of the MACD line. + + Parameters: + prices - List of float prices in chronological order. + short_period - Period for the short-term EMA (default: 12). + long_period - Period for the long-term EMA (default: 26). + signal_period - Period for the Signal line EMA (default: 9). + + Returns: + A tuple (macd_line, signal_line), each being a list aligned with the price series. + Note: Leading None values may appear where data is insufficient. + """ + if len(prices) < long_period: + return [], [] # Insufficient data + + # Compute short-term and long-term EMAs. + short_ema = compute_ema(prices, short_period) + long_ema = compute_ema(prices, long_period) + + # MACD line: difference between short-term EMA and long-term EMA. + macd_line = [] + # We align the MACD line to the longer EMA since data before that is None. + for s, l in zip(short_ema, long_ema): + if s is None or l is None: + macd_line.append(None) + else: + macd_line.append(s - l) + + # Filter out None values for computing the Signal line. + valid_macd = [m for m in macd_line if m is not None] + if len(valid_macd) < signal_period: + # Not enough MACD values to compute the signal line. + signal_line = [None] * len(macd_line) + else: + # Compute EMA on the MACD line for the signal line. + signal_values = compute_ema(valid_macd, signal_period) + # Reconstruct the signal_line to align with the full macd_line. + signal_line = [None]*(len(macd_line) - len(signal_values)) + signal_values + return macd_line, signal_line + +def macd_strategy_decision(graph_data, short_period=12, long_period=26, signal_period=9): + """ + Implements a MACD-based trading strategy for a long-term, high-risk scenario. + + Process: + 1. Extract the WETH price series from the subgraph data. + 2. Compute the MACD line and its Signal line. + 3. Generate a trading signal: + - If the latest MACD value is above its Signal line (and a bullish crossover is detected), + signal BUY. + - If the latest MACD value is below its Signal line (and a bearish crossover is detected), + signal SELL. + - Otherwise, signal HOLD. + + Parameters: + graph_data - JSON response from the subgraph. + short_period - Short-term EMA period for MACD calculation. + long_period - Long-term EMA period for MACD calculation. + signal_period - EMA period for computing the Signal line. + + Returns: + A dictionary containing: + - 'decision': "BUY", "SELL", or "HOLD". + - 'macd': Latest MACD value. + - 'signal': Latest Signal line value. + - 'latest_price': Most recent WETH price. + - 'price_series': The extracted WETH price series. + - 'macd_line': The complete MACD line. + - 'signal_line': The complete Signal line. + """ + prices = extract_weth_prices(graph_data) + if not prices: + return {"decision": "NO_DATA", "reason": "No valid price data found."} + + macd_line, signal_line = compute_macd(prices, short_period, long_period, signal_period) + # Ensure we have computed valid MACD and Signal values. + if not macd_line or macd_line[-1] is None or signal_line[-1] is None: + return {"decision": "INSUFFICIENT_DATA", "reason": "Not enough data to compute MACD."} + + latest_macd = macd_line[-1] + latest_signal = signal_line[-1] + + # A simple decision rule based on the latest MACD crossover: + if latest_macd > latest_signal: + decision = "BUY" + elif latest_macd < latest_signal: + decision = "SELL" + else: + decision = "HOLD" + + return { + "decision": decision, + "macd": latest_macd, + "signal": latest_signal, + "latest_price": prices[-1], + "price_series": prices, + "macd_line": macd_line, + "signal_line": signal_line + } + +# Example usage: +# Suppose 'graph_json' is the JSON response directly obtained from the subgraph. +# The AI agent would call: +# +# result = macd_strategy_decision(graph_json, short_period=12, long_period=26, signal_period=9) +# print("MACD Strategy Decision:", result) diff --git a/Python/Algorithms/RSI.py b/Python/Algorithms/RSI.py new file mode 100644 index 0000000..55ace9a --- /dev/null +++ b/Python/Algorithms/RSI.py @@ -0,0 +1,145 @@ + +#############################SHORT TERM HIGH RISK TRADING STRATEGY############################# +############################# RSI ############################# + +def extract_weth_prices(graph_data): + """ + Extracts a chronological list of WETH prices in USD from the subgraph swap data. + Assumes that the JSON structure is: + { + "data": { + "swaps": [ + { + "pool": { ... }, + "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, + "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } + }, + ... + ] + } + } + + Since the query orders swaps by timestamp in descending order, this function reverses the list + to create a chronological (oldest-first) price series. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Reverse the list so that the earliest swap is first. + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenIn", {}) + token_out = swap.get("tokenOut", {}) + # We assume WETH is the asset of interest. + if token_in.get("symbol") == "WETH": + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + elif token_out.get("symbol") == "WETH": + try: + price = float(token_out.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + return prices + +def compute_rsi(prices, period=5): + """ + Computes the Relative Strength Index (RSI) from a list of prices. + Uses a simple moving average approach for both gains and losses over the specified period. + + Parameters: + prices - List of float prices in chronological order. + period - Number of periods to use for the RSI calculation. + + Returns: + RSI value (float) calculated over the price series, or None if insufficient data. + """ + if len(prices) < period + 1: + return None # Not enough data points to compute RSI + + gains = [] + losses = [] + # Calculate price differences (delta) + for i in range(1, len(prices)): + delta = prices[i] - prices[i - 1] + if delta > 0: + gains.append(delta) + losses.append(0) + else: + gains.append(0) + losses.append(abs(delta)) + + # Calculate initial average gain and loss + avg_gain = sum(gains[:period]) / period + avg_loss = sum(losses[:period]) / period + + # Use a rolling average for the remainder of the data + for i in range(period, len(gains)): + current_gain = gains[i] + current_loss = losses[i] + avg_gain = ((avg_gain * (period - 1)) + current_gain) / period + avg_loss = ((avg_loss * (period - 1)) + current_loss) / period + + # Avoid division by zero: if avg_loss is zero, RSI is 100. + if avg_loss == 0: + return 100.0 + + rs = avg_gain / avg_loss + rsi = 100 - (100 / (1 + rs)) + return rsi + +def rsi_strategy_decision(graph_data, rsi_period=5, overbought_threshold=70, oversold_threshold=30): + """ + Implements an RSI-based trading decision strategy for short-term, high-risk trading. + + Process: + 1. Extract the price series for WETH from the subgraph data. + 2. Compute the RSI over a short period (default is 5 periods). + 3. Generate a trading signal: + - If RSI is above the overbought threshold, signal SELL. + - If RSI is below the oversold threshold, signal BUY. + - Otherwise, signal HOLD. + + Parameters: + graph_data - JSON response from the subgraph. + rsi_period - The lookback period for the RSI calculation. + overbought_threshold - RSI value above which the asset is considered overbought (default: 70). + oversold_threshold - RSI value below which the asset is considered oversold (default: 30). + + Returns: + A dictionary containing: + - 'decision': Trading decision ("BUY", "SELL", or "HOLD"). + - 'rsi': The computed RSI value. + - 'latest_price': The most recent WETH price. + - 'price_series': The full extracted price series. + """ + prices = extract_weth_prices(graph_data) + if not prices: + return {"decision": "NO_DATA", "reason": "No valid price data found."} + + rsi = compute_rsi(prices, period=rsi_period) + if rsi is None: + return {"decision": "INSUFFICIENT_DATA", "reason": "Not enough data to compute RSI."} + + if rsi > overbought_threshold: + decision = "SELL" + elif rsi < oversold_threshold: + decision = "BUY" + else: + decision = "HOLD" + + return { + "decision": decision, + "rsi": rsi, + "latest_price": prices[-1], + "price_series": prices + } + +# Example of how to use the above functions: +# Suppose 'graph_json' is the JSON response directly obtained from the subgraph. +# The AI agent would call: +# +# result = rsi_strategy_decision(graph_json, rsi_period=5, overbought_threshold=70, oversold_threshold=30) +# print("RSI Strategy Decision:", result) diff --git a/Python/graph.py b/Python/graph.py new file mode 100644 index 0000000..1fd727b --- /dev/null +++ b/Python/graph.py @@ -0,0 +1,62 @@ +import requests + +# Graph endpoint (no API key shown, adapt to your needs) +ENDPOINT = "https://gateway.thegraph.com/api/subgraphs/id/FQ6JYszEKApsBpAmiHesRsd9Ygc6mzmpNRANeVQFYoVX" + +# GraphQL query to fetch swaps data from a Uniswap V3 pool +QUERY = """ +{ + swaps( + orderBy: timestamp + orderDirection: desc + where: {pool: "0xc31e54c7a869b9fcbecc14363cf510d1c41fa443"} + first: 10 + ) { + pool { + activeLiquidity + inputTokenBalances + totalLiquidity + inputTokenBalancesUSD + } + tokenIn { + lastPriceUSD + symbol + _totalSupply + } + tokenOut { + lastPriceUSD + symbol + _totalSupply + } + } +} +""" + +# Optional: If your endpoint requires an API key, include headers here +HEADERS = { + "Authorization": "Bearer 1106e759dd7fe48331ba9d0f8a178875" # Uncomment if needed +} + +def fetch_graph_data(): + """ + Fetch data from The Graph and return the JSON response. + """ + try: + response = requests.post(ENDPOINT, json={"query": QUERY}, headers=HEADERS) + response.raise_for_status() + data = response.json() + return data + except requests.exceptions.RequestException as e: + print("Error fetching data from The Graph:", e) + return None + +def main(): + data = fetch_graph_data() + if data: + print("Data fetched from subgraph:") + print(data) + else: + print("Failed to fetch data.") + +if __name__ == "__main__": + main() From bb542990ce4f60eca2a5b12fef4753dac138b3e3 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Fri, 21 Mar 2025 02:22:52 +0530 Subject: [PATCH 14/71] decisions added --- .gitignore | 1 - Python/Decisions/DCA_dis.py | 79 ++++++++++++++++++++++++++++++++++++ Python/Decisions/MACD_dis.py | 78 +++++++++++++++++++++++++++++++++++ Python/Decisions/MA_dis.py | 79 ++++++++++++++++++++++++++++++++++++ Python/Decisions/RSI_dis.py | 75 ++++++++++++++++++++++++++++++++++ 5 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 Python/Decisions/DCA_dis.py create mode 100644 Python/Decisions/MACD_dis.py create mode 100644 Python/Decisions/MA_dis.py create mode 100644 Python/Decisions/RSI_dis.py diff --git a/.gitignore b/.gitignore index 5d27fe3..05206a7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ __init__.py __pycache__ myenv venv -Decisions diff --git a/Python/Decisions/DCA_dis.py b/Python/Decisions/DCA_dis.py new file mode 100644 index 0000000..5be8567 --- /dev/null +++ b/Python/Decisions/DCA_dis.py @@ -0,0 +1,79 @@ +import time +import openai +from graph import fetch_graph_data +from Algorithms.DCA import dca_investment, rebalance_portfolio + +# Optional: If you want the LLM to confirm or refine decisions: +openai.api_key = "YOUR_OPENAI_API_KEY" + +def get_llm_decision(portfolio_before, portfolio_after, rebalance_details): + """ + Example prompt that sends the before/after portfolio states + to the LLM, asking for a final confirmation or next steps. + """ + prompt = f""" + We executed a DCA investment and possibly rebalanced the portfolio. + + Before: + {portfolio_before} + + After: + {portfolio_after} + + Rebalance Details: + {rebalance_details} + + Should we continue this approach or adjust our strategy? + Respond with a brief explanation or recommendation. + """ + + # This example uses ChatCompletion; adapt as needed. + response = openai.ChatCompletion.create( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": prompt}], + temperature=0.5 + ) + return response.choices[0].message.content.strip() + +def dca_decision_loop(interval=3600): + """ + Periodically executes DCA and optional rebalancing. + Default interval: 3600 seconds (1 hour). + """ + # Example portfolio with 1000 USDC, 0 WETH initially + portfolio = {"USDC": 1000.0, "WETH": 0.0} + target_allocation = {"WETH": 0.6, "USDC": 0.4} # 60% WETH, 40% USDC + invest_amount = 100.0 # invest 100 USDC each cycle + tolerance = 0.02 # 2% tolerance for rebalancing + + while True: + print("\n--- DCA Decision Loop Cycle ---") + portfolio_before = portfolio.copy() + + # 1. Fetch data from subgraph + graph_data = fetch_graph_data() + if not graph_data: + print("No data fetched. Retrying next interval...") + time.sleep(interval) + continue + + # 2. Execute DCA investment + portfolio, dca_details = dca_investment(graph_data, invest_amount, portfolio) + print(f"DCA executed. Details: {dca_details}") + + # 3. Rebalance portfolio if needed + portfolio, rebalance_details = rebalance_portfolio( + portfolio, target_allocation, graph_data, tolerance + ) + print(f"Rebalance attempt. Details: {rebalance_details}") + + # 4. (Optional) Confirm with LLM or get next step + llm_response = get_llm_decision(portfolio_before, portfolio, rebalance_details) + print("LLM says:", llm_response) + + # 5. Wait until the next cycle + print(f"Waiting {interval} seconds until next DCA cycle...\n") + time.sleep(interval) + +if __name__ == "__main__": + dca_decision_loop(interval=3600) # Run once per hour by default diff --git a/Python/Decisions/MACD_dis.py b/Python/Decisions/MACD_dis.py new file mode 100644 index 0000000..ba0cc81 --- /dev/null +++ b/Python/Decisions/MACD_dis.py @@ -0,0 +1,78 @@ +import time +import openai +from graph import fetch_graph_data +from Algorithms.MACD import macd_strategy_decision + +openai.api_key = "YOUR_OPENAI_API_KEY" + +def get_llm_decision(algo_result): + """ + The algo_result might look like: + { + "decision": "BUY" or "SELL" or "HOLD", + "macd": ..., + "signal": ..., + "latest_price": ..., + "macd_line": [...], + "signal_line": [...] + } + """ + prompt = f""" + The MACD-based strategy suggests: {algo_result['decision']}. + Latest MACD: {algo_result['macd']} + Latest Signal: {algo_result['signal']} + Latest Price: {algo_result['latest_price']} + + Do we BUY, SELL, or HOLD? + Respond with only one word: BUY, SELL, or HOLD. + """ + response = openai.ChatCompletion.create( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": prompt}], + temperature=0.3 + ) + return response.choices[0].message.content.strip() + +def macd_decision_loop(interval=600): + """ + Periodically applies a MACD strategy for long-term, high-risk trades. + Default interval: 600 seconds (10 minutes). + """ + while True: + print("\n--- MACD Decision Loop Cycle ---") + graph_data = fetch_graph_data() + if not graph_data: + print("No data returned. Retrying...") + time.sleep(interval) + continue + + algo_result = macd_strategy_decision( + graph_data, + short_period=12, + long_period=26, + signal_period=9 + ) + print("MACD Algorithm Output:", algo_result) + + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print("Insufficient data to compute MACD. Skipping...") + time.sleep(interval) + continue + + # Final decision from LLM + llm_decision = get_llm_decision(algo_result) + print("LLM Decision:", llm_decision) + + # Pseudo-code for trade: + if llm_decision == "BUY": + print(">>> Executing BUY trade <<<") + elif llm_decision == "SELL": + print(">>> Executing SELL trade <<<") + else: + print(">>> HOLD - No trade executed <<<") + + print(f"Waiting {interval} seconds before next cycle...\n") + time.sleep(interval) + +if __name__ == "__main__": + macd_decision_loop(interval=600) diff --git a/Python/Decisions/MA_dis.py b/Python/Decisions/MA_dis.py new file mode 100644 index 0000000..7ee3d98 --- /dev/null +++ b/Python/Decisions/MA_dis.py @@ -0,0 +1,79 @@ +import time +import openai +from graph import fetch_graph_data +from Algorithms.MA import moving_average_crossover_decision + +openai.api_key = "YOUR_OPENAI_API_KEY" + +def get_llm_decision(algo_result): + """ + Ask the LLM to confirm or refine the final action. + The algo_result might look like: + { + "decision": "BUY" or "SELL" or "HOLD", + "short_ma": ..., + "long_ma": ..., + "latest_price": ..., + "relative_difference": ... + } + """ + prompt = f""" + The Moving Average Crossover algorithm suggests: {algo_result['decision']}. + Short-term MA: {algo_result['short_ma']} + Long-term MA: {algo_result['long_ma']} + Latest Price: {algo_result['latest_price']} + Relative Diff: {algo_result.get('relative_difference')} + + Please confirm the final decision: BUY, SELL, or HOLD. + Respond with only one word: BUY, SELL, or HOLD. + """ + response = openai.ChatCompletion.create( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": prompt}], + temperature=0.3 + ) + return response.choices[0].message.content.strip() + +def ma_decision_loop(interval=300): + """ + Periodically fetches market data and applies a short-term, low-risk + moving average crossover strategy. Default interval: 300 seconds (5 minutes). + """ + while True: + print("\n--- MA Decision Loop Cycle ---") + graph_data = fetch_graph_data() + if not graph_data: + print("No data available. Will retry...") + time.sleep(interval) + continue + + algo_result = moving_average_crossover_decision( + graph_data, + short_window=3, + long_window=5, + threshold=0.005 + ) + print("Algorithm Output:", algo_result) + + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print("Insufficient data to make a decision. Skipping...") + time.sleep(interval) + continue + + # LLM final confirmation + llm_decision = get_llm_decision(algo_result) + print("LLM Decision:", llm_decision) + + # Pseudo-code for trade execution: + if llm_decision == "BUY": + print(">>> Executing BUY on-chain <<<") + elif llm_decision == "SELL": + print(">>> Executing SELL on-chain <<<") + else: + print(">>> HOLD - No trade executed <<<") + + print(f"Waiting {interval} seconds until next cycle...\n") + time.sleep(interval) + +if __name__ == "__main__": + ma_decision_loop(interval=300) diff --git a/Python/Decisions/RSI_dis.py b/Python/Decisions/RSI_dis.py new file mode 100644 index 0000000..086d47b --- /dev/null +++ b/Python/Decisions/RSI_dis.py @@ -0,0 +1,75 @@ +import time +import openai +from graph import fetch_graph_data +from Algorithms.RSI import rsi_strategy_decision + +openai.api_key = "YOUR_OPENAI_API_KEY" + +def get_llm_decision(algo_result): + """ + The algo_result might look like: + { + "decision": "BUY"/"SELL"/"HOLD", + "rsi": ..., + "latest_price": ..., + "price_series": [...] + } + """ + prompt = f""" + The RSI-based strategy suggests: {algo_result['decision']}. + RSI Value: {algo_result['rsi']} + Latest Price: {algo_result['latest_price']} + + Should we BUY, SELL, or HOLD for a short-term, high-risk approach? + Respond with only one word: BUY, SELL, or HOLD. + """ + response = openai.ChatCompletion.create( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": prompt}], + temperature=0.3 + ) + return response.choices[0].message.content.strip() + +def rsi_decision_loop(interval=300): + """ + Periodically applies an RSI-based strategy for short-term, high-risk trading. + Default interval: 300 seconds (5 minutes). + """ + while True: + print("\n--- RSI Decision Loop Cycle ---") + graph_data = fetch_graph_data() + if not graph_data: + print("No data available. Retrying...") + time.sleep(interval) + continue + + algo_result = rsi_strategy_decision( + graph_data, + rsi_period=5, + overbought_threshold=70, + oversold_threshold=30 + ) + print("RSI Algorithm Output:", algo_result) + + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print("Not enough data to compute RSI. Skipping...") + time.sleep(interval) + continue + + # LLM final step + llm_decision = get_llm_decision(algo_result) + print("LLM Decision:", llm_decision) + + # Pseudo-trade execution + if llm_decision == "BUY": + print(">>> Executing BUY trade <<<") + elif llm_decision == "SELL": + print(">>> Executing SELL trade <<<") + else: + print(">>> HOLD - No trade executed <<<") + + print(f"Waiting {interval} seconds until next cycle...\n") + time.sleep(interval) + +if __name__ == "__main__": + rsi_decision_loop(interval=300) From fab80c5ac42c1b2073eb74bee67d770480da69e3 Mon Sep 17 00:00:00 2001 From: Arunabha Date: Fri, 21 Mar 2025 03:36:48 +0530 Subject: [PATCH 15/71] updates --- Python/Decisions/DCA_dis.py | 11 +++++++---- Python/Decisions/MACD_dis.py | 9 ++++++--- Python/Decisions/MA_dis.py | 9 ++++++--- Python/Decisions/RSI_dis.py | 10 +++++++--- Python/graph.py | 2 +- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/Python/Decisions/DCA_dis.py b/Python/Decisions/DCA_dis.py index 5be8567..2fa07d6 100644 --- a/Python/Decisions/DCA_dis.py +++ b/Python/Decisions/DCA_dis.py @@ -1,10 +1,13 @@ import time import openai -from graph import fetch_graph_data -from Algorithms.DCA import dca_investment, rebalance_portfolio +from ..graph import fetch_graph_data +from ..Algorithms.DCA import dca_investment, rebalance_portfolio -# Optional: If you want the LLM to confirm or refine decisions: -openai.api_key = "YOUR_OPENAI_API_KEY" +from dotenv import load_dotenv +import os +load_dotenv() + +openai.api_key = os.getenv('OPENAI_API_KEY') def get_llm_decision(portfolio_before, portfolio_after, rebalance_details): """ diff --git a/Python/Decisions/MACD_dis.py b/Python/Decisions/MACD_dis.py index ba0cc81..5a8b5d2 100644 --- a/Python/Decisions/MACD_dis.py +++ b/Python/Decisions/MACD_dis.py @@ -1,9 +1,12 @@ import time import openai -from graph import fetch_graph_data -from Algorithms.MACD import macd_strategy_decision +from ..graph import fetch_graph_data +from ..Algorithms.MACD import macd_strategy_decision +from dotenv import load_dotenv +import os +load_dotenv() -openai.api_key = "YOUR_OPENAI_API_KEY" +openai.api_key = os.getenv('OPENAI_API_KEY') def get_llm_decision(algo_result): """ diff --git a/Python/Decisions/MA_dis.py b/Python/Decisions/MA_dis.py index 7ee3d98..4937d47 100644 --- a/Python/Decisions/MA_dis.py +++ b/Python/Decisions/MA_dis.py @@ -1,9 +1,12 @@ import time import openai -from graph import fetch_graph_data -from Algorithms.MA import moving_average_crossover_decision +from ..graph import fetch_graph_data +from ..Algorithms.MA import moving_average_crossover_decision +from dotenv import load_dotenv +import os +load_dotenv() -openai.api_key = "YOUR_OPENAI_API_KEY" +openai.api_key = os.getenv('OPENAI_API_KEY') def get_llm_decision(algo_result): """ diff --git a/Python/Decisions/RSI_dis.py b/Python/Decisions/RSI_dis.py index 086d47b..fb52eed 100644 --- a/Python/Decisions/RSI_dis.py +++ b/Python/Decisions/RSI_dis.py @@ -1,9 +1,13 @@ import time import openai -from graph import fetch_graph_data -from Algorithms.RSI import rsi_strategy_decision +from ..graph import fetch_graph_data +from ..Algorithms.RSI import rsi_strategy_decision -openai.api_key = "YOUR_OPENAI_API_KEY" +from dotenv import load_dotenv +import os +load_dotenv() + +openai.api_key = os.getenv('OPENAI_API_KEY') def get_llm_decision(algo_result): """ diff --git a/Python/graph.py b/Python/graph.py index 1fd727b..72107b0 100644 --- a/Python/graph.py +++ b/Python/graph.py @@ -10,7 +10,7 @@ orderBy: timestamp orderDirection: desc where: {pool: "0xc31e54c7a869b9fcbecc14363cf510d1c41fa443"} - first: 10 + first: 100 ) { pool { activeLiquidity From e3f418f55396cefe53ec6c5cb55b5aa211e4382b Mon Sep 17 00:00:00 2001 From: Arunabha Date: Sun, 23 Mar 2025 15:33:39 +0530 Subject: [PATCH 16/71] subgraphs added --- Python/SubGraph/dai_usdc.py | 62 ++++++++++++++++++++++ Python/SubGraph/wbtc_usdc.py | 62 ++++++++++++++++++++++ Python/{graph.py => SubGraph/weth_usdc.py} | 4 +- 3 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 Python/SubGraph/dai_usdc.py create mode 100644 Python/SubGraph/wbtc_usdc.py rename Python/{graph.py => SubGraph/weth_usdc.py} (94%) diff --git a/Python/SubGraph/dai_usdc.py b/Python/SubGraph/dai_usdc.py new file mode 100644 index 0000000..f63ff13 --- /dev/null +++ b/Python/SubGraph/dai_usdc.py @@ -0,0 +1,62 @@ +import requests + +# Graph endpoint (no API key shown, adapt to your needs) +ENDPOINT = "https://gateway.thegraph.com/api/subgraphs/id/FQ6JYszEKApsBpAmiHesRsd9Ygc6mzmpNRANeVQFYoVX" + +# GraphQL query to fetch swaps data from a Uniswap V3 pool +QUERY = """ +{ + swaps( + orderBy: timestamp + orderDirection: desc + where: {pool: "0xf0428617433652c9dc6d1093a42adfbf30d29f74"} + first: 100 + ) { + pool { + activeLiquidity + inputTokenBalances + totalLiquidity + inputTokenBalancesUSD + } + tokenIn { + lastPriceUSD + symbol + _totalSupply + } + tokenOut { + lastPriceUSD + symbol + _totalSupply + } + } +} +""" + +# Optional: If your endpoint requires an API key, include headers here +HEADERS = { + "Authorization": "Bearer 1106e759dd7fe48331ba9d0f8a178875" # Uncomment if needed +} + +def fetch_graph_data_dai_usdc(): + """ + Fetch data from The Graph and return the JSON response. + """ + try: + response = requests.post(ENDPOINT, json={"query": QUERY}, headers=HEADERS) + response.raise_for_status() + data = response.json() + return data + except requests.exceptions.RequestException as e: + print("Error fetching data from The Graph:", e) + return None + +def main(): + data = fetch_graph_data_dai_usdc() + if data: + print("Data fetched from subgraph:") + print(data) + else: + print("Failed to fetch data.") + +if __name__ == "__main__": + main() diff --git a/Python/SubGraph/wbtc_usdc.py b/Python/SubGraph/wbtc_usdc.py new file mode 100644 index 0000000..6d618b9 --- /dev/null +++ b/Python/SubGraph/wbtc_usdc.py @@ -0,0 +1,62 @@ +import requests + +# Graph endpoint (no API key shown, adapt to your needs) +ENDPOINT = "https://gateway.thegraph.com/api/subgraphs/id/FQ6JYszEKApsBpAmiHesRsd9Ygc6mzmpNRANeVQFYoVX" + +# GraphQL query to fetch swaps data from a Uniswap V3 pool +QUERY = """ +{ + swaps( + orderBy: timestamp + orderDirection: desc + where: {pool: "0x0e4831319a50228b9e450861297ab92dee15b44f"} + first: 100 + ) { + pool { + activeLiquidity + inputTokenBalances + totalLiquidity + inputTokenBalancesUSD + } + tokenIn { + lastPriceUSD + symbol + _totalSupply + } + tokenOut { + lastPriceUSD + symbol + _totalSupply + } + } +} +""" + +# Optional: If your endpoint requires an API key, include headers here +HEADERS = { + "Authorization": "Bearer 1106e759dd7fe48331ba9d0f8a178875" # Uncomment if needed +} + +def fetch_graph_data_wbtc_usdc(): + """ + Fetch data from The Graph and return the JSON response. + """ + try: + response = requests.post(ENDPOINT, json={"query": QUERY}, headers=HEADERS) + response.raise_for_status() + data = response.json() + return data + except requests.exceptions.RequestException as e: + print("Error fetching data from The Graph:", e) + return None + +def main(): + data = fetch_graph_data_wbtc_usdc() + if data: + print("Data fetched from subgraph:") + print(data) + else: + print("Failed to fetch data.") + +if __name__ == "__main__": + main() diff --git a/Python/graph.py b/Python/SubGraph/weth_usdc.py similarity index 94% rename from Python/graph.py rename to Python/SubGraph/weth_usdc.py index 72107b0..b835945 100644 --- a/Python/graph.py +++ b/Python/SubGraph/weth_usdc.py @@ -37,7 +37,7 @@ "Authorization": "Bearer 1106e759dd7fe48331ba9d0f8a178875" # Uncomment if needed } -def fetch_graph_data(): +def fetch_graph_data_weth_usdc(): """ Fetch data from The Graph and return the JSON response. """ @@ -51,7 +51,7 @@ def fetch_graph_data(): return None def main(): - data = fetch_graph_data() + data = fetch_graph_data_weth_usdc() if data: print("Data fetched from subgraph:") print(data) From 1e55dc20254a6aef144c91072a78b5f9e292fab7 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sat, 29 Mar 2025 14:51:01 +0530 Subject: [PATCH 17/71] Buy/Sell IntentEngineCore --- Python/main.py | 0 README.md | 15 +- cache/solidity-files-cache.json | 2 +- .../DeployTradeIntent.json | 2 +- out/IntentEngineTrade.sol/IntentEngine.json | 2 +- out/UniswapRegistry.sol/UniswapRegistry.json | 2 +- src/IntentEngineCore.sol | 207 ++++++++++++++++++ src/IntentEngineTrade.sol | 4 +- 8 files changed, 227 insertions(+), 7 deletions(-) create mode 100644 Python/main.py create mode 100644 src/IntentEngineCore.sol diff --git a/Python/main.py b/Python/main.py new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index beb2bb8..d033532 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,17 @@ forge script script/DeployTradeIntent.sol:DeployTradeIntent --rpc-url http://127 ``` ```bash anvil --fork-url https://eth-mainnet.g.alchemy.com/v2/KywLaq2zlVzePOhip0BY3U8ztfHkYDmo -``` \ No newline at end of file +``` + + +New Flow + +Return a json +{ + "BTC HOLD 10", + "DAI SELL 20", + "WETH BUY 10" +} + +user will select +buy/sell diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index a420d63..58c22a8 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1738474223445,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1738474223445,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1738474223446,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1738474223446,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1738474223473,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1738474223474,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1738474223474,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1738474223475,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1738474223475,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1738474223476,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1738474223477,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1738474223477,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1738474223478,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1738474223478,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1738474223479,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1738474223479,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1738474223479,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1738474223480,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1738474223480,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1738474223517,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1738474223519,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1738475666810,"contentHash":"1154d548615e2361cb7e58103ed62f97","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1738490601934,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1738473588069,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1738473588069,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1738490599982,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1738473588069,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1738473588069,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1738473588069,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1738473588069,"contentHash":"0dc143f4ac69ab14c4d99bb595cbc679","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1738473588070,"contentHash":"ffc08685b5f86d231bcfa0b633f0baf7","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true}},"builds":["35fec37d57b4d29e712fc83affe3c315","58c984fa81f30e09c0163b31124a40e6"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1738474223445,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1738474223445,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1743236377442,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.28":{"default":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1738474223446,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1738474223446,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1743236377442,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.28":{"default":{"path":"StdError.sol/stdError.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1743236377442,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.28":{"default":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1738474223473,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1738474223474,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1738474223474,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1738474223475,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1743236377442,"contentHash":"4bce85a4c60f2c073e651ee8140bcb4d","sourceName":"lib/forge-std/src/StdToml.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.28":{"default":{"path":"StdToml.sol/stdToml.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1738474223475,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1743236377442,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.28":{"default":{"path":"Test.sol/Test.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1738474223476,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1738474223477,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1738474223477,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1738474223478,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1738474223478,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1738474223479,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1738474223479,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1738474223479,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1738474223480,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1738474223480,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1738474223517,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1738474223519,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1743236377470,"contentHash":"1c592c4752cc4258471d34651045ee1a","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1738490601934,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1738473588069,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1738473588069,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1738490599982,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1738473588069,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1738473588069,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1738473588069,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IntentEngineCore.sol":{"lastModificationDate":1743240019468,"contentHash":"026c2747fdc824c3a808cca31c558802","sourceName":"src/IntentEngineCore.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IntentEngine.json","build_id":"86986f98fb1bd17e1dd4c85cf4ee615b"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1743238781850,"contentHash":"bdc93fadebb5267a85fc5ee67e953066","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1743236377471,"contentHash":"86aef6f501fae0c1eb15739ed8934c10","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/test2.t.sol":{"lastModificationDate":1743236377471,"contentHash":"ff6510ee72b891b5705da7f39b37b6da","sourceName":"test/test2.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManagerTest":{"0.8.28":{"default":{"path":"test2.t.sol/CompoundETHManagerTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/testIntents.t.sol":{"lastModificationDate":1743236377471,"contentHash":"9732660fab607efecae644efa8063fee","sourceName":"test/testIntents.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/CompoundETHManager2.sol","src/CompoundIntents.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntentsTest":{"0.8.28":{"default":{"path":"testIntents.t.sol/CompoundIntentsTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/tradeTest.sol":{"lastModificationDate":1743236377471,"contentHash":"2d97850383bc88d4b9923634c8b1fab4","sourceName":"test/tradeTest.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.19","artifacts":{"TradeTest":{"0.8.28":{"default":{"path":"tradeTest.sol/TradeTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true}},"builds":["35fec37d57b4d29e712fc83affe3c315","3e9e802e3e08b76b48bdc5919a6fb908","58c984fa81f30e09c0163b31124a40e6","86986f98fb1bd17e1dd4c85cf4ee615b"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file diff --git a/out/DeployTradeIntent.sol/DeployTradeIntent.json b/out/DeployTradeIntent.sol/DeployTradeIntent.json index a2706d1..4d92c41 100644 --- a/out/DeployTradeIntent.sol/DeployTradeIntent.json +++ b/out/DeployTradeIntent.sol/DeployTradeIntent.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IntentEngine"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608080604052346026576201000162ff00ff19600c541617600c55611333908161002b8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163c04062261461007a575063f8ccbf4714610034575f80fd5b3461007757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007757602060ff600c5460101c166040519015158152f35b80fd5b905034610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610246577f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561023b57610228575b506040516110458082019082821067ffffffffffffffff8311176101fb579082916102b98339039082f080156101ee57737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101df576040517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101e3576101ca575b60208273ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6101d583809261024a565b6101df57816101a9565b5080fd5b6040513d85823e3d90fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b61023491505f9061024a565b5f5f610110565b6040513d5f823e3d90fd5b5f80fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761028b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfe6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033a26469706673582212209247f321f7950ffe18ea180473c1daacc1cc6119fe9393e071e5132530f6e31164736f6c634300081c0033","sourceMap":"236:259:21:-:0;;;;;;;;;;3166:4:2;236:259:21;;;3166:4:2;236:259:21;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163c04062261461007a575063f8ccbf4714610034575f80fd5b3461007757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007757602060ff600c5460101c166040519015158152f35b80fd5b905034610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610246577f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561023b57610228575b506040516110458082019082821067ffffffffffffffff8311176101fb579082916102b98339039082f080156101ee57737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101df576040517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101e3576101ca575b60208273ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6101d583809261024a565b6101df57816101a9565b5080fd5b6040513d85823e3d90fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b61023491505f9061024a565b5f5f610110565b6040513d5f823e3d90fd5b5f80fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761028b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfe6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033a26469706673582212209247f321f7950ffe18ea180473c1daacc1cc6119fe9393e071e5132530f6e31164736f6c634300081c0033","sourceMap":"236:259:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:28:1;236:259:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;334:19;;;;1590:14:0;334:19:21;;236:259;334:19;236:259;334:19;;236:259;334:19;;;;;;;;236:259;;;;395:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;236:259;434:18;;;;236:259;;1590:14:0;434:18:21;;;;236:259;434:18;;236:259;434:18;;;;;;;;236:259;;;;;;;;;;;434:18;;;;;;:::i;:::-;236:259;;434:18;;;236:259;;;;434:18;236:259;;1590:14:0;236:259:21;;1590:14:0;;;;395:18:21;236:259;;;1590:14:0;;;;;;;;395:18:21;1590:14:0;;;;;;236:259:21;1590:14:0;;334:19:21;;;;236:259;334:19;;:::i;:::-;236:259;334:19;;;;236:259;;1590:14:0;236:259:21;1590:14:0;;;;;334:19:21;236:259;;;1590:14:0;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;1590:14:0;;;;;-1:-1:-1;1590:14:0","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[{\"internalType\":\"contract IntentEngine\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployTradeIntent.sol\":\"DeployTradeIntent\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"script/DeployTradeIntent.sol\":{\"keccak256\":\"0xfbefefda00eb8ba6a7575b24037fd6f341d12809b1c81d587e85aaa7adf10798\",\"urls\":[\"bzz-raw://24b4f53ac974cb9ec626489965555913797b7885efc449045b814693eef11aaa\",\"dweb:/ipfs/QmRg4AsxmmkZtYrjWK1AsKaS6Kv711gSvPxvQ3pUvw7PqE\"]},\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0x79515cb434f1398fc0232dc12bee3eaf3569ad2c3cd59b7b3bc6291dd7c3e2ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7aa844c11ffd88c89a567b7a16980b9a74c7d0b1fd8d14d84e3c811cf03c6d18\",\"dweb:/ipfs/QmYFqRox1ZR5QdwwEpZvAPtEBqsa1AUdLcEZDmQJZBv9wP\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000\",\"dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run","outputs":[{"internalType":"contract IntentEngine","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/DeployTradeIntent.sol":"DeployTradeIntent"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"script/DeployTradeIntent.sol":{"keccak256":"0xfbefefda00eb8ba6a7575b24037fd6f341d12809b1c81d587e85aaa7adf10798","urls":["bzz-raw://24b4f53ac974cb9ec626489965555913797b7885efc449045b814693eef11aaa","dweb:/ipfs/QmRg4AsxmmkZtYrjWK1AsKaS6Kv711gSvPxvQ3pUvw7PqE"],"license":null},"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0x79515cb434f1398fc0232dc12bee3eaf3569ad2c3cd59b7b3bc6291dd7c3e2ec","urls":["bzz-raw://7aa844c11ffd88c89a567b7a16980b9a74c7d0b1fd8d14d84e3c811cf03c6d18","dweb:/ipfs/QmYFqRox1ZR5QdwwEpZvAPtEBqsa1AUdLcEZDmQJZBv9wP"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de","urls":["bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000","dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ"],"license":"MIT"}},"version":1},"id":21} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IntentEngine"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x608080604052346026576201000162ff00ff19600c541617600c55611195908161002b8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163c04062261461007a575063f8ccbf4714610034575f80fd5b3461007757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007757602060ff600c5460101c166040519015158152f35b80fd5b905034610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610246577f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561023b57610228575b50604051610ea78082019082821067ffffffffffffffff8311176101fb579082916102b98339039082f080156101ee57737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101df576040517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101e3576101ca575b60208273ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6101d583809261024a565b6101df57816101a9565b5080fd5b6040513d85823e3d90fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b61023491505f9061024a565b5f5f610110565b6040513d5f823e3d90fd5b5f80fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761028b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfe6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033a2646970667358221220238fd098eb568f05bafe1e1fc6281b1d5521b47017f9aa609f5f266bc4d8a8d564736f6c634300081c0033","sourceMap":"236:259:24:-:0;;;;;;;;;;3166:4:3;236:259:24;;;3166:4:3;236:259:24;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163c04062261461007a575063f8ccbf4714610034575f80fd5b3461007757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007757602060ff600c5460101c166040519015158152f35b80fd5b905034610246575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024657737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610246577f7fb5297f0000000000000000000000000000000000000000000000000000000081525f8160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561023b57610228575b50604051610ea78082019082821067ffffffffffffffff8311176101fb579082916102b98339039082f080156101ee57737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101df576040517f76eadd36000000000000000000000000000000000000000000000000000000008152828160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156101e3576101ca575b60208273ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6101d583809261024a565b6101df57816101a9565b5080fd5b6040513d85823e3d90fd5b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b61023491505f9061024a565b5f5f610110565b6040513d5f823e3d90fd5b5f80fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761028b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfe6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033a2646970667358221220238fd098eb568f05bafe1e1fc6281b1d5521b47017f9aa609f5f266bc4d8a8d564736f6c634300081c0033","sourceMap":"236:259:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:28:1;236:259:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;334:19;;;;1590:14:0;334:19:24;;236:259;334:19;236:259;334:19;;236:259;334:19;;;;;;;;236:259;;;;395:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;236:259;434:18;;;;236:259;;1590:14:0;434:18:24;;;;236:259;434:18;;236:259;434:18;;;;;;;;236:259;;;;;;;;;;;434:18;;;;;;:::i;:::-;236:259;;434:18;;;236:259;;;;434:18;236:259;;1590:14:0;236:259:24;;1590:14:0;;;;395:18:24;236:259;;;1590:14:0;;;;;;;;395:18:24;1590:14:0;;;;;;236:259:24;1590:14:0;;334:19:24;;;;236:259;334:19;;:::i;:::-;236:259;334:19;;;;236:259;;1590:14:0;236:259:24;1590:14:0;;;;;334:19:24;236:259;;;1590:14:0;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;1590:14:0;;;;;-1:-1:-1;1590:14:0","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47","run()":"c0406226"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[{\"internalType\":\"contract IntentEngine\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"script/DeployTradeIntent.sol\":\"DeployTradeIntent\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"script/DeployTradeIntent.sol\":{\"keccak256\":\"0x119c5cfab229c7c964025f3a4cd175f4c9e4c7f03ce906682cd7449347795342\",\"urls\":[\"bzz-raw://c4f7beace02ba8b9e89049755e4a30063e63a7a248afa8a18dba531c95cd381b\",\"dweb:/ipfs/Qme34vWAEdJqUCqpPUq2djvidMwagvPa1eZ9Xv8X9pf8nK\"]},\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9\",\"dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192\",\"dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run","outputs":[{"internalType":"contract IntentEngine","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"script/DeployTradeIntent.sol":"DeployTradeIntent"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"script/DeployTradeIntent.sol":{"keccak256":"0x119c5cfab229c7c964025f3a4cd175f4c9e4c7f03ce906682cd7449347795342","urls":["bzz-raw://c4f7beace02ba8b9e89049755e4a30063e63a7a248afa8a18dba531c95cd381b","dweb:/ipfs/Qme34vWAEdJqUCqpPUq2djvidMwagvPa1eZ9Xv8X9pf8nK"],"license":null},"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b","urls":["bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9","dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869","urls":["bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192","dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file diff --git a/out/IntentEngineTrade.sol/IntentEngine.json b/out/IntentEngineTrade.sol/IntentEngine.json index f3194c6..69d5989 100644 --- a/out/IntentEngineTrade.sol/IntentEngine.json +++ b/out/IntentEngineTrade.sol/IntentEngine.json @@ -1 +1 @@ -{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033","sourceMap":"192:5710:27:-:0;;;;;;;-1:-1:-1;;;248:42:28;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:28;;;;;;;;192:5710:27;;;-1:-1:-1;;;320:42:28;;;;;248;;;320;;;248;;;;320;248;;;192:5710:27;;-1:-1:-1;;;391:42:28;;;;;248;;;391;;;248;;;;391;248;;;192:5710:27;;-1:-1:-1;;;463:42:28;;;;;248;;;;463;;;248;;;;;463;248;;;;192:5710:27;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033","sourceMap":"192:5710:27:-:0;;;;;;;;;-1:-1:-1;192:5710:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5217:25;192:5710;;;:::i;:::-;5217:25;:::i;:::-;5280:23;192:5710;;:::i;:::-;5280:23;;:::i;:::-;192:5710;;;;5318:17;5314:45;;5400:30;5421:8;;;:::i;:::-;;5400:30;;:::i;:::-;5498:8;5628:30;5477;5498:8;;;:::i;:::-;;5477:30;;:::i;:::-;192:5710;5649:8;2303:36;2330:8;2257:29;192:5710;;:::i;:::-;2257:29;;:::i;:::-;2330:8;:::i;:::-;;2303:36;;:::i;:::-;5649:8;;:::i;:::-;;5628:30;;:::i;:::-;5688;192:5710;;;;4052:15;192:5710;4081:21;192:5710;4122:9;192:5710;4133:7;;;;;;4117:561;4725:11;;;;;4721:156;4725:11;;;192:5710;;;;;;;;;;4721:156;192:5710;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4721:156;5709:2;4789:24;;;;;4785:92;;4721:156;;;192:5710;;4721:156;192:5710;;4721:156;192:5710;:::i;4785:92::-;5709:2;192:5710;4845:2;192:5710;;;;;;4785:92;;4142:3;4176:4;;;;:::i;:::-;192:5710;;;;;4202:9;;;:22;;;4142:3;4198:466;;;192:5710;;;4300:2;192:5710;;;;;;;;;;;4351:102;;;4198:466;5504:1;4198:466;;192:5710;4122:9;;;;;4351:102;192:5710;5504:1;192:5710;4397:26;5709:2;4397:26;;4393:37;4351:102;4393:37;4425:5;;;;;4198:466;192:5710;4481:9;;;;;;;:24;;;;4198:466;-1:-1:-1;4477:187:27;;;5504:1;4556:17;4477:187;4198:466;;4477:187;4627:18;192:5710;4627:18;192:5710;;4627:18;4481:24;4494:11;;;4481:24;;;4202:22;4215:9;192:5710;4215:9;;;4202:22;;5314:45;5344:15;192:5710;5344:15;192:5710;;5344:15;192:5710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;619:25;192:5710;;;;;;;;:::i;619:25::-;682:23;192:5710;;:::i;682:23::-;192:5710;;;;720:17;716:45;;802:30;823:8;;;:::i;802:30::-;900:8;1030:30;879;900:8;;;:::i;879:30::-;192:5710;1051:8;2303:36;2330:8;2257:29;192:5710;;:::i;2303:36::-;1051:8;;:::i;1030:30::-;1091;192:5710;;;;4052:15;192:5710;4081:21;192:5710;4122:9;192:5710;4133:7;;;;;;4117:561;4725:11;;;;;4721:156;4725:11;;;192:5710;;;4721:156;;192:5710;;;1159:26;;192:5710;1159:26;192:5710;;;;;;;;;;;;;;;;;1159:26;;-1:-1:-1;;1159:26:27;;;;;;:::i;:::-;192:5710;1149:37;;192:5710;;;1212:27;;192:5710;;;;1212:27;;;;;;;:::i;:::-;192:5710;1202:38;;1149:91;1132:926;;4721:156;192:5710;;;;;;;;;;;;;;;;;;;;:::i;1132:926::-;192:5710;;;;;;;;:::i;:::-;2336:1;192:5710;;;;;;;;;;-1:-1:-1;;192:5710:27;;;;;;:::i;:::-;;;;;:::i;:::-;;;1448:24;;;;:::i;:::-;192:5710;1486:24;;;:::i;:::-;192:5710;;;1531:12;;;:::i;:::-;192:5710;;1524:64;192:5710;;1524:64;;;;192:5710;1524:64;;573:10;192:5710;1524:64;;192:5710;1574:4;192:5710;;;;;;;;;1524:64;;;;;;;192:5710;1524:64;192:5710;1524:64;;;1132:926;192:5710;;;;1603:123;;;;192:5710;1603:123;;1646:42;192:5710;1603:123;;192:5710;;;;;;1603:123;;;;;;;;1132:926;2007:15;2025:4;2007:15;192:5710;2007:15;;192:5710;;;;;;;1781:266;;;192:5710;1781:266;;192:5710;;;1781:266;;192:5710;1781:266;;192:5710;;;;;;;;;;;;;;;;;;;;;;;;;;;573:10;;;;;192:5710;573:10;;1524:64;192:5710;;;;;;;1781:266;;;1646:42;1781:266;;;;;;;;192:5710;1132:926;;;1781:266;;;192:5710;1781:266;;;;;;:::i;:::-;;;192:5710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1781:266;;;;192:5710;;;;;;;;;;;;;1781:266;192:5710;;;;;;;;;;;;;;;;;;-1:-1:-1;192:5710:27;;;;;;;;;906:1;192:5710;;;;;;;;;;;;;1603:123;;;192:5710;1603:123;192:5710;1603:123;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1524:64;;;;;;;;;;;;;:::i;:::-;;;4721:156;1112:2;4789:24;;;;;4785:92;;4721:156;;;;4785:92;1112:2;192:5710;4845:2;192:5710;;;;;4785:92;;;4142:3;4176:4;;;;:::i;:::-;192:5710;;;;;4202:9;;;:22;;;4142:3;4198:466;;;192:5710;;;4300:2;192:5710;;;;;;;;;;;4351:102;;;4198:466;906:1;4198:466;;192:5710;4122:9;;;;;4351:102;192:5710;906:1;192:5710;4397:26;1112:2;4397:26;;4393:37;4351:102;4393:37;4425:5;;;;;4198:466;192:5710;4481:9;;;;;;;:24;;;;4198:466;-1:-1:-1;4477:187:27;;;906:1;4556:17;4477:187;4198:466;;4481:24;4494:11;;;4481:24;;;4202:22;4215:9;192:5710;4215:9;;;4202:22;;192:5710;;-1:-1:-1;;192:5710:27;;;;;;;;;;;;;;;;;-1:-1:-1;192:5710:27;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;192:5710:27;;;;;-1:-1:-1;192:5710:27;;;;-1:-1:-1;;192:5710:27;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;192:5710:27;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;192:5710:27;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;906:1;192:5710;;;;;;;:::o;:::-;;;2336:1;192:5710;;;;;;;:::o;:::-;;;1057:1;192:5710;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;192:5710:27;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;3515:329::-;;3634:25;192:5710;;3634:25;:::i;:::-;3674:13;3686:1;3709:3;192:5710;;3689:18;;;;;3739:10;;;;:::i;:::-;192:5710;;;;;3776:9;;;:22;;;3709:3;3775:52;;;-1:-1:-1;192:5710:27;;3820:2;192:5710;;;;;;;;;;;;;3775:52;3686:1;3763:64;;;;;:::i;:::-;;192:5710;3674:13;;3775:52;192:5710;3775:52;;;;;3776:22;3789:9;192:5710;3789:9;;;3776:22;;3689:18;;;3515:329::o;2381:827::-;;;2571:1;192:5710;;2544:28;192:5710;;;;;;;;;;;;;;;2669:1;;2784:7;;;;;;192:5710;2571:1;192:5710;;-1:-1:-1;;192:5710:27;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;2669:1;192:5710;;;;;;2872:35;;;2669:1;2952:13;2669:1;2985:9;2669:1;2996:8;;;;;;;2381:827;;;;;;;:::o;3006:3::-;3033:8;;;:26;;;;3006:3;3029:149;;3006:3;2571:1;192:5710;2985:9;;3029:149;192:5710;;3083:41;192:5710;;;;;;;:::i;:::-;;;3104:20;192:5710;3104:20;;192:5710;2571:1;3089:11;192:5710;3083:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;2571:1:27;192:5710;;;3029:149;;3033:26;3045:7;;192:5710;3045:7;;;;:::i;:::-;192:5710;;3045:14;3033:26;;192:5710;;;;;;;;:::i;:::-;2669:1;192:5710;;2669:1;192:5710;;;;;;;;;;;;;2793:3;2820:7;192:5710;2820:7;;;;:::i;:::-;192:5710;;2820:14;2816:27;;2793:3;2571:1;192:5710;2769:13;;2816:27;2571:1;192:5710;;;;2816:27;;192:5710;;;;;;;;;;;;;;;;;;;;;;;3214:295;;;3370:8;;;192:5710;;;;;;;;;;3360:32;;;:::i;:::-;3407:13;-1:-1:-1;3441:3:27;192:5710;;3422:17;;;;;192:5710;;3477:14;192:5710;;;;;;;;;3472:20;192:5710;3472:20;;;:::i;:::-;192:5710;;-1:-1:-1;3460:32:27;;;;;:::i;:::-;;192:5710;3407:13;;3422:17;;;;;3214:295::o","linkReferences":{}},"methodIdentifiers":{"commandToTrade(string)":"08e90235","getAddressFromString(string)":"a3c7ed7f","returnIntentValues(string)":"1aeac183"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"commandToTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"returnIntentValues\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IntentEngineTrade.sol\":\"IntentEngine\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0x79515cb434f1398fc0232dc12bee3eaf3569ad2c3cd59b7b3bc6291dd7c3e2ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7aa844c11ffd88c89a567b7a16980b9a74c7d0b1fd8d14d84e3c811cf03c6d18\",\"dweb:/ipfs/QmYFqRox1ZR5QdwwEpZvAPtEBqsa1AUdLcEZDmQJZBv9wP\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000\",\"dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"commandToTrade","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"returnIntentValues","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IntentEngineTrade.sol":"IntentEngine"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0x79515cb434f1398fc0232dc12bee3eaf3569ad2c3cd59b7b3bc6291dd7c3e2ec","urls":["bzz-raw://7aa844c11ffd88c89a567b7a16980b9a74c7d0b1fd8d14d84e3c811cf03c6d18","dweb:/ipfs/QmYFqRox1ZR5QdwwEpZvAPtEBqsa1AUdLcEZDmQJZBv9wP"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de","urls":["bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000","dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ"],"license":"MIT"}},"version":1},"id":27} \ No newline at end of file +{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;-1:-1:-1;;;248:42:31;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:31;;;;;;;;193:5629:30;;;-1:-1:-1;;;320:42:31;;;;;248;;;320;;;248;;;;320;248;;;193:5629:30;;-1:-1:-1;;;391:42:31;;;;;248;;;391;;;248;;;;391;248;;;193:5629:30;;-1:-1:-1;;;463:42:31;;;;;248;;;;463;;;248;;;;;463;248;;;;193:5629:30;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:25;193:5629;;;:::i;:::-;5150:25;:::i;:::-;5213:23;193:5629;;:::i;:::-;5213:23;;:::i;:::-;193:5629;;;;5251:17;5247:45;;193:5629;5333:30;5354:8;;;:::i;:::-;;5333:30;;:::i;:::-;5431:8;193:5629;;5431:8;193:5629;5607:30;5547;5410;5431:8;;;:::i;:::-;;5410:30;;:::i;:::-;193:5629;5568:8;2236:36;2263:8;2190:29;193:5629;;:::i;:::-;2190:29;;:::i;:::-;2263:8;:::i;2236:36::-;5568:8;;:::i;:::-;;5547:30;;:::i;:::-;5607;;:::i;:::-;193:5629;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5247:45;5277:15;193:5629;5277:15;193:5629;;5277:15;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:25;193:5629;;;;;;;;:::i;566:25::-;629:23;193:5629;;:::i;629:23::-;193:5629;;;;667:17;663:45;;749:30;770:8;;;:::i;:::-;;749:30;;:::i;:::-;847:8;1024:30;963;826;847:8;;;:::i;:::-;;826:30;;:::i;:::-;193:5629;984:8;2236:36;2263:8;2190:29;193:5629;;:::i;2236:36::-;984:8;;:::i;963:30::-;1024;;:::i;:::-;193:5629;;;;1092:26;;193:5629;1092:26;193:5629;;;;;;;;;;;;;;;;;1092:26;;-1:-1:-1;;1092:26:30;;;;;;:::i;:::-;193:5629;1082:37;;193:5629;;;1145:27;;193:5629;;;;1145:27;;;;;;;:::i;:::-;193:5629;1135:38;;1082:91;1065:926;;193:5629;;;;;;;;;;;;;;;;;;;;;:::i;1065:926::-;193:5629;;;;;;;;:::i;:::-;2269:1;193:5629;;;;;;;;;;-1:-1:-1;;193:5629:30;;;;;;:::i;:::-;;;;;:::i;:::-;;;1381:24;;;;:::i;:::-;193:5629;1419:24;;;:::i;:::-;193:5629;;;1464:12;;;:::i;:::-;193:5629;;1457:64;193:5629;;1457:64;;;;193:5629;1457:64;;520:10;193:5629;1457:64;;193:5629;1507:4;193:5629;;;;;;;;;1457:64;;;;;;;193:5629;1457:64;193:5629;1457:64;;;1065:926;193:5629;;;;1536:123;;;;193:5629;1536:123;;1579:42;193:5629;1536:123;;193:5629;;;;;;1536:123;;;;;;;;1065:926;1940:15;1958:4;1940:15;193:5629;1940:15;;193:5629;;;;;;;1714:266;;;193:5629;1714:266;;193:5629;;;1714:266;;193:5629;1714:266;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;520:10;;;;;193:5629;520:10;;1457:64;193:5629;;;;;;;1714:266;;;1579:42;1714:266;;;;;;;;193:5629;1065:926;;;1714:266;;;193:5629;1714:266;;;;;;:::i;:::-;;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1714:266;;;;193:5629;;;;;;;;;;;;;1714:266;193:5629;;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;853:1;193:5629;;;;;;;;;;;;;1536:123;;;193:5629;1536:123;193:5629;1536:123;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1457:64;;;;;;;;;;;;;:::i;:::-;;;193:5629;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;193:5629:30;;;;;-1:-1:-1;193:5629:30;;;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;193:5629:30;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;853:1;193:5629;;;;;;;:::o;:::-;;;2269:1;193:5629;;;;;;;:::o;:::-;;;990:1;193:5629;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;3448:329::-;;3567:25;193:5629;;3567:25;:::i;:::-;3607:13;3619:1;3642:3;193:5629;;3622:18;;;;;3672:10;;;;:::i;:::-;193:5629;;;;;3709:9;;;:22;;;3642:3;3708:52;;;-1:-1:-1;193:5629:30;;3753:2;193:5629;;;;;;;;;;;;;3708:52;3619:1;3696:64;;;;;:::i;:::-;;193:5629;3607:13;;3708:52;193:5629;3708:52;;;;;3709:22;3722:9;193:5629;3722:9;;;3709:22;;3622:18;;;3448:329::o;2314:827::-;;;2504:1;193:5629;;2477:28;193:5629;;;;;;;;;;;;;;;2602:1;;2717:7;;;;;;193:5629;2504:1;193:5629;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;2602:1;193:5629;;;;;;2805:35;;;2602:1;2885:13;2602:1;2918:9;2602:1;2929:8;;;;;;;2314:827;;;;;;;:::o;2939:3::-;2966:8;;;:26;;;;2939:3;2962:149;;2939:3;2504:1;193:5629;2918:9;;2962:149;193:5629;;3016:41;193:5629;;;;;;;:::i;:::-;;;3037:20;193:5629;3037:20;;193:5629;2504:1;3022:11;193:5629;3016:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;2504:1:30;193:5629;;;2962:149;;2966:26;2978:7;;193:5629;2978:7;;;;:::i;:::-;193:5629;;2978:14;2966:26;;193:5629;;;;;;;;:::i;:::-;2602:1;193:5629;;2602:1;193:5629;;;;;;;;;;;;;2726:3;2753:7;193:5629;2753:7;;;;:::i;:::-;193:5629;;2753:14;2749:27;;2726:3;2504:1;193:5629;2702:13;;2749:27;2504:1;193:5629;;;;2749:27;;193:5629;;;;;;;;;;;;;;;;;;;;;;;3147:295;;;3303:8;;;193:5629;;;;;;;;;;3293:32;;;:::i;:::-;3340:13;-1:-1:-1;3374:3:30;193:5629;;3355:17;;;;;193:5629;;3410:14;193:5629;;;;;;;;;3405:20;193:5629;3405:20;;;:::i;:::-;193:5629;;-1:-1:-1;3393:32:30;;;;;:::i;:::-;;193:5629;3340:13;;3355:17;;;;;3147:295::o;3783:1058::-;193:5629;;;;;;;;;4066:7;;;;;;4050:561;4658:11;;;;;4654:156;4658:11;;;193:5629;;;4654:156;3783:1058::o;4654:156::-;1045:2;4722:24;;4718:92;;4654:156;;3783:1058::o;4718:92::-;1045:2;193:5629;4778:2;193:5629;;4654:156;3783:1058::o;4075:3::-;4109:4;;;;:::i;:::-;193:5629;;;;;4135:9;;;:22;;;4075:3;4131:466;;;193:5629;;;4233:2;193:5629;;;;;;;;;;;4284:102;;;4131:466;853:1;4131:466;;193:5629;4055:9;;;;;4284:102;193:5629;853:1;193:5629;4330:26;1045:2;4330:26;;4326:37;4284:102;4326:37;4358:5;;;;;4131:466;193:5629;4414:9;;;;;;;:24;;;;4131:466;-1:-1:-1;4410:187:30;;;853:1;4489:17;4410:187;4131:466;;4410:187;4560:18;193:5629;4560:18;;193:5629;4560:18;4414:24;4427:11;;;4414:24;;;4135:22;4148:9;193:5629;4148:9;;;4135:22;","linkReferences":{}},"methodIdentifiers":{"commandToTrade(string)":"08e90235","getAddressFromString(string)":"a3c7ed7f","returnIntentValues(string)":"1aeac183"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"commandToTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"returnIntentValues\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IntentEngineTrade.sol\":\"IntentEngine\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9\",\"dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192\",\"dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"commandToTrade","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"returnIntentValues","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IntentEngineTrade.sol":"IntentEngine"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b","urls":["bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9","dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869","urls":["bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192","dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/out/UniswapRegistry.sol/UniswapRegistry.json b/out/UniswapRegistry.sol/UniswapRegistry.json index b38d444..c4e964d 100644 --- a/out/UniswapRegistry.sol/UniswapRegistry.json +++ b/out/UniswapRegistry.sol/UniswapRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c599179091555161018590816100f48239f35b5f80fdfe6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220daf01bb24cf1c8cc3a99d12e183586630299f18c104b8454716e7181887fa29e64736f6c634300081c0033","sourceMap":"59:2285:28:-:0;;;;;;;-1:-1:-1;;;248:42:28;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:28;;;;;;;;59:2285;;;-1:-1:-1;;;320:42:28;;;;;248;;;320;;;248;;;;320;248;;;59:2285;;-1:-1:-1;;;391:42:28;;;;;248;;;391;;;248;;;;391;248;;;59:2285;;-1:-1:-1;;;463:42:28;;;;;248;;;;463;;;248;;;;;463;248;;;;59:2285;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220daf01bb24cf1c8cc3a99d12e183586630299f18c104b8454716e7181887fa29e64736f6c634300081c0033","sourceMap":"59:2285:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"getAddressFromString(string)":"a3c7ed7f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapRegistry.sol\":\"UniswapRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/UniswapRegistry.sol\":{\"keccak256\":\"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000\",\"dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/UniswapRegistry.sol":"UniswapRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/UniswapRegistry.sol":{"keccak256":"0xb15d991c7f2faee7ce76504081a2fd03ce87890dca554abbc30d4e081fe7e1de","urls":["bzz-raw://985aea7eb547a143de0bf8dfccb357d2857ee3cc5a50c9f74b0d097eddfef000","dweb:/ipfs/QmQ8U8bpcSws7Q2TX7BbUv5wtchaM7jHSKTWB5fCREEQRZ"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c599179091555161018590816100f48239f35b5f80fdfe6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220e0d47a0dc06bfd7b8b389a1b7eb0454acd38fb213db084a4994aae60e1773e5664736f6c634300081c0033","sourceMap":"60:876:31:-:0;;;;;;;-1:-1:-1;;;248:42:31;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:31;;;;;;;;60:876;;;-1:-1:-1;;;320:42:31;;;;;248;;;320;;;248;;;;320;248;;;60:876;;-1:-1:-1;;;391:42:31;;;;;248;;;391;;;248;;;;391;248;;;60:876;;-1:-1:-1;;;463:42:31;;;;;248;;;;463;;;248;;;;;463;248;;;;60:876;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220e0d47a0dc06bfd7b8b389a1b7eb0454acd38fb213db084a4994aae60e1773e5664736f6c634300081c0033","sourceMap":"60:876:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"getAddressFromString(string)":"a3c7ed7f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapRegistry.sol\":\"UniswapRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/UniswapRegistry.sol\":{\"keccak256\":\"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192\",\"dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/UniswapRegistry.sol":"UniswapRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/UniswapRegistry.sol":{"keccak256":"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869","urls":["bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192","dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/src/IntentEngineCore.sol b/src/IntentEngineCore.sol new file mode 100644 index 0000000..f2791d9 --- /dev/null +++ b/src/IntentEngineCore.sol @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +import {UniswapRegistry} from "./UniswapRegistry.sol"; +import {IUniswap} from "./IUniswap.sol"; +import {IERC20} from "./IERC20.sol"; + + +contract IntentEngine is UniswapRegistry { + //buy sell + //buy means swap by usdt + //sell means swap usdt to something + error InvalidSyntax(); + error InvalidCharacter(); + + address constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; + + struct StringPart { + uint256 start; + uint256 end; + } + + function commandToTrade( + string calldata intent + ) external returns (uint256 amount, string memory protocol) { + address client = msg.sender; + bytes memory normalized = _lowercase(bytes(intent)); + StringPart[] memory parts = _split(normalized, " "); + + if (parts.length != 4) revert InvalidSyntax(); + + string memory command = string(_getPart(normalized, parts[0])); //buy / sell + string memory token = string(_getPart(normalized, parts[1])); //token + bytes memory amountBytes = _extractAmount(normalized); //amount + protocol = string(_getPart(normalized, parts[3])); //uniswap + + amount = _toUint(amountBytes, 18, true); + + //Buy + if(keccak256(abi.encodePacked(command)) == + keccak256(abi.encodePacked("buy"))){ + if ( + keccak256(abi.encodePacked(protocol)) == + keccak256(abi.encodePacked("uniswap")) + ) { + swapThroughUniswapV2(USDT,getAddressFromString(token),client,amount); + } + } + + //Buy + if(keccak256(abi.encodePacked(command)) == + keccak256(abi.encodePacked("sell"))){ + if ( + keccak256(abi.encodePacked(protocol)) == + keccak256(abi.encodePacked("uniswap")) + ) { + swapThroughUniswapV2(getAddressFromString(token),USDT,client,amount); + } + } + return (amount, protocol); + } + + function swapThroughUniswapV2(address token1, address token2,address client, uint256 amount) private { + address[] memory pathArray = new address[](2); + pathArray[0] = token1; + pathArray[1] = token2; + IERC20(pathArray[0]).transferFrom(client, address(this), amount); + + IERC20(token1).approve( + 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, + amount + ); + + // Issue : UniswapV2Router: + IUniswap(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) + .swapExactTokensForTokens( + amount, + 0, + pathArray, + client, + block.timestamp + 3000 + ); + + } + + function _extractAmount( + bytes memory normalizedIntent + ) internal pure returns (bytes memory amount) { + StringPart[] memory parts = _split(normalizedIntent, " "); + return _getPart(normalizedIntent, parts[2]); // Extract the "amount" part + } + + function _split( + bytes memory base, + string memory delimiter + ) internal pure returns (StringPart[] memory parts) { + require( + bytes(delimiter).length == 1, + "Delimiter must be one character" + ); + bytes1 del = bytes(delimiter)[0]; + uint256 len = base.length; + uint256 count; + + unchecked { + for (uint256 i = 0; i < len; ++i) { + if (base[i] == del) count++; + } + + parts = new StringPart[](count + 1); + uint256 partIndex; + uint256 start; + + for (uint256 i; i <= len; ++i) { + if (i == len || base[i] == del) { + parts[partIndex++] = StringPart(start, i); + start = i + 1; + } + } + } + } + + function _getPart( + bytes memory base, + StringPart memory part + ) internal pure returns (bytes memory result) { + result = new bytes(part.end - part.start); + for (uint256 i = 0; i < result.length; ++i) { + result[i] = base[part.start + i]; + } + } + + function _lowercase( + bytes memory subject + ) internal pure returns (bytes memory result) { + result = new bytes(subject.length); + for (uint256 i = 0; i < subject.length; ++i) { + bytes1 b = subject[i]; + result[i] = (b >= 0x41 && b <= 0x5A) ? bytes1(uint8(b) + 32) : b; + } + } + + function _toUint( + bytes memory s, + uint256 decimals, + bool scale + ) internal pure returns (uint256 result) { + unchecked { + uint256 len = s.length; + bool hasDecimal; + uint256 decimalPlaces; + + for (uint256 i; i < len; ++i) { + bytes1 c = s[i]; + if (c >= 0x30 && c <= 0x39) { + // '0' to '9' + result = result * 10 + (uint256(uint8(c)) - 48); + if (hasDecimal) { + if (++decimalPlaces > decimals) break; + } + } else if (c == 0x2E && !hasDecimal) { + // '.' + hasDecimal = true; + } else { + revert InvalidCharacter(); + } + } + + if (scale) { + if (!hasDecimal) result *= 10 ** decimals; + else if (decimalPlaces < decimals) + result *= 10 ** (decimals - decimalPlaces); + } + } + } + + receive() external payable {} + + fallback() external payable {} + + // Getter Functions + + function returnIntentValues( + string memory intent + ) + public + view + returns (address, address, uint256 amount, string memory protocol) + { + bytes memory normalized = _lowercase(bytes(intent)); + StringPart[] memory parts = _split(normalized, " "); + + if (parts.length != 4) revert InvalidSyntax(); + + string memory token1 = string(_getPart(normalized, parts[0])); //eth + string memory token2 = string(_getPart(normalized, parts[1])); //dai + bytes memory amountBytes = _extractAmount(normalized); //amount + protocol = string(_getPart(normalized, parts[3])); //uniswap + amount = _toUint(amountBytes, 18, true); + + address addToken1 = getAddressFromString(token1); + address addToken2 = getAddressFromString(token2); + + return (addToken1, addToken2, amount, protocol); + } + +} diff --git a/src/IntentEngineTrade.sol b/src/IntentEngineTrade.sol index c34a783..3136e0e 100644 --- a/src/IntentEngineTrade.sol +++ b/src/IntentEngineTrade.sol @@ -27,7 +27,7 @@ contract IntentEngine is UniswapRegistry { string memory token1 = string(_getPart(normalized, parts[0])); //eth string memory token2 = string(_getPart(normalized, parts[1])); //dai bytes memory amountBytes = _extractAmount(normalized); //amount - string memory protocol = string(_getPart(normalized, parts[3])); //uniswap + protocol = string(_getPart(normalized, parts[3])); //uniswap amount = _toUint(amountBytes, 18, true); @@ -173,7 +173,7 @@ contract IntentEngine is UniswapRegistry { string memory token1 = string(_getPart(normalized, parts[0])); //eth string memory token2 = string(_getPart(normalized, parts[1])); //dai bytes memory amountBytes = _extractAmount(normalized); //amount - string memory protocol = string(_getPart(normalized, parts[3])); //uniswap + protocol = string(_getPart(normalized, parts[3])); //uniswap amount = _toUint(amountBytes, 18, true); address addToken1 = getAddressFromString(token1); From 3bae9e87634146d7f23e16a5b3af1da5e615839e Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sat, 29 Mar 2025 18:57:54 +0530 Subject: [PATCH 18/71] finally working changed from etherjs to web3js file structure fixed utils added in single file --- .gitignore | 3 + .../DeployTradeIntent.sol/1/run-latest.json | 32 +- frontend/src/App.jsx | 2 + frontend/src/components/TokenPortfolio.jsx | 63 ++ frontend/src/components/TradingChat.jsx | 393 ++----- frontend/src/constants/abi.js | 70 +- frontend/src/utils/web3functions.js | 159 +++ package-lock.json | 967 ++++++++++++++++++ package.json | 5 + 9 files changed, 1387 insertions(+), 307 deletions(-) create mode 100644 frontend/src/components/TokenPortfolio.jsx create mode 100644 frontend/src/utils/web3functions.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 05206a7..1d0936d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ __init__.py __pycache__ myenv venv + + +node_modules diff --git a/broadcast/DeployTradeIntent.sol/1/run-latest.json b/broadcast/DeployTradeIntent.sol/1/run-latest.json index 1f01832..8059e49 100644 --- a/broadcast/DeployTradeIntent.sol/1/run-latest.json +++ b/broadcast/DeployTradeIntent.sol/1/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", + "hash": "0x853459cb84ed50ac6f8cd8a44bdadeae51ad247f42a5b9c907a1801d830d912d", "transactionType": "CREATE", "contractName": "IntentEngine", - "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a", + "contractAddress": "0xdb731eaafa0ffa7854a24c2379585a85d768ed5c", "function": null, "arguments": null, "transaction": { "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x138270", + "gas": "0x11c3ff", "value": "0x0", - "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610f5190816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146103625780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610a1e565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610a1e565b610bc4565b6100a86100a2610a7b565b82610cbc565b90600482510361033a576100c56100be83610ab6565b5182610e9f565b916101106100dc6100d583610af0565b5184610e9f565b926101096101036100fc6100f76100f1610a7b565b85610cbc565b610b00565b5183610e9f565b93610b10565b5190610e9f565b905f908051905f915f915f5b8281106101ea575b50505090155f1461019357509073ffffffffffffffffffffffffffffffffffffffff61016981610161670de0b6b3a764000061018f960297610b64565b541694610b64565b54169360405194859485526020850152604084015260806060840152608083019061093b565b0390f35b601281959295106101c6575b509073ffffffffffffffffffffffffffffffffffffffff6101698161016161018f95610b64565b601203600a0a9093029273ffffffffffffffffffffffffffffffffffffffff61019f565b6101f48183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610310575b156102a157508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561028b575b6001905b0193929361011c565b9360010193601285111561027e57939293610124565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610307575b50156102df5760018093610282565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b905015896102d0565b507f3900000000000000000000000000000000000000000000000000000000000000811115610242565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d576103e0916100929160243692016109e8565b6103eb6100a2610a7b565b90600482510361033a576104016100be83610ab6565b9061042c6104116100fc85610af0565b916101096104266100fc6100f76100f1610a7b565b95610b10565b925f908051905f915f915f5b828110610813575b50505090155f146107f15750670de0b6b3a764000002915b6040516020810190610484602082885180838b01875e81015f838201520301601f1981018352826109a9565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526104c16027826109a9565b519020146104e8575b505061018f604051928392835260406020840152604083019061093b565b5f604051926104f86060856109a9565b6002845273ffffffffffffffffffffffffffffffffffffffff6105338161052b6020880196601f19606001368937610b64565b541692610b64565b54168161053f86610ab6565b5261054985610af0565b52602073ffffffffffffffffffffffffffffffffffffffff61056a86610ab6565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af1908115610742575f926020926107d6575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af18015610742576107a9575b50610bb8420180421161077c5790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061074d5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af18015610742576106b7575b806104ca565b3d805f833e6106c681836109a9565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061070084610b34565b61070d60405191826109a9565b848152019260051b82010192831161007d57602001905b8282106107325750506106b1565b8151815260209182019101610724565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610673565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6107ca9060203d6020116107cf575b6107c281836109a9565b810190610b4c565b610617565b503d6107b8565b6107ec90833d85116107cf576107c281836109a9565b6105bd565b60128194929410610803575b50610458565b601203600a0a90920291846107fd565b61081d8183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610911575b156108ca57508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956108b4575b6001905b01939293610438565b936001019360128511156108a757939293610440565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610908575b50156102df57600180936108ab565b905015896108f9565b507f390000000000000000000000000000000000000000000000000000000000000081111561086b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761097c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761097c57604052565b67ffffffffffffffff811161097c57601f01601f191660200190565b9291926109f4826109cc565b91610a0260405193846109a9565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610a78936004013591016109e8565b90565b60405190610a8a6040836109a9565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610ac35760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610ac35760400190565b805160021015610ac35760600190565b805160031015610ac35760800190565b8051821015610ac35760209160051b010190565b67ffffffffffffffff811161097c5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b90610b8c826109cc565b610b9960405191826109a9565b828152601f19610ba982946109cc565b0190602036910137565b908151811015610ac3570160200190565b90610bcf8251610b82565b915f5b8151811015610cb857610be58183610bb3565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610c8e575b15610c84575060f81c6020019060ff821161077c577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610c7d8287610bb3565b5301610bd2565b6001929150610c71565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610c33565b5050565b91906001815103610e4157805115610ac357602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610dfa575060010193601f19610d2b610d1587610b34565b96610d2360405198896109a9565b808852610b34565b015f5b818110610dd7575050845f915f935f5b86811115610d4f5750505050505050565b8681148015610da2575b610d66575b600101610d3e565b9493610d979060405195610d7987610960565b86528660208701526001810195610d908287610b20565b5284610b20565b506001850194610d5e565b50817fff00000000000000000000000000000000000000000000000000000000000000610dcf8386610bb3565b511614610d59565b602090604051610de681610960565b5f81525f8382015282828a01015201610d2e565b827fff00000000000000000000000000000000000000000000000000000000000000610e268389610bb3565b511614610e36575b600101610cfa565b600190910190610e2e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161077c57610eba90610b82565b905f5b8251811015610f155781519080820180921161077c577fff00000000000000000000000000000000000000000000000000000000000000610f0060019388610bb3565b51165f1a610f0e8286610bb3565b5301610ebd565b5050915056fea26469706673582212204978914b7c617b418b61ce2659c8ed3e36df35b90742285e1533499a05a8b99a64736f6c634300081c0033", - "nonce": "0x34e", + "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033", + "nonce": "0x39e", "chainId": "0x1" }, "additionalContracts": [], @@ -22,20 +22,20 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0xf01e0", + "cumulativeGasUsed": "0xdaa76", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x8d81bb57704c5b644882dd633909f279c202505478c97ee5458c3511a6161e29", + "transactionHash": "0x853459cb84ed50ac6f8cd8a44bdadeae51ad247f42a5b9c907a1801d830d912d", "transactionIndex": "0x0", - "blockHash": "0x0d83dd1358a191147737091adbdc37b94105481c6c6c614514fc9fc649f5be81", - "blockNumber": "0x14c04ac", - "gasUsed": "0xf01e0", - "effectiveGasPrice": "0x105aa07cf", - "blobGasPrice": "0x3fef4b2", + "blockHash": "0xdec4b0f6ae83f271c6af44fa7b784a3c6561239415f290a25451ef3c518164fc", + "blockNumber": "0x15205a2", + "gasUsed": "0xdaa76", + "effectiveGasPrice": "0x249920d5", + "blobGasPrice": "0x9cd9", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contractAddress": "0xf4fa0d1c10c47cde9f65d56c3ec977cbeb13449a" + "contractAddress": "0xdb731eaafa0ffa7854a24c2379585a85d768ed5c" } ], "libraries": [], @@ -43,10 +43,10 @@ "returns": { "0": { "internal_type": "contract IntentEngine", - "value": "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" + "value": "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C" } }, - "timestamp": 1738503199, + "timestamp": 1743251905, "chain": 1, - "commit": "eb03d24" + "commit": "1e55dc2" } \ No newline at end of file diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index e7bbffa..f2513f8 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -4,6 +4,7 @@ import { MessageSquare, TrendingUp, Menu } from 'lucide-react'; import GeneralChat from './components/GeneralChat'; import TradingChat from './components/TradingChat'; import Homepage from './components/Homepage'; +import TokenPortfolio from './components/TokenPortfolio'; function App() { const [isMenuOpen, setIsMenuOpen] = useState(false); @@ -16,6 +17,7 @@ function App() { } /> } /> } /> + } /> diff --git a/frontend/src/components/TokenPortfolio.jsx b/frontend/src/components/TokenPortfolio.jsx new file mode 100644 index 0000000..0d6780e --- /dev/null +++ b/frontend/src/components/TokenPortfolio.jsx @@ -0,0 +1,63 @@ +import React, { useState } from 'react'; +import { connectWallet as connectToWallet, fetchTokenBalances } from '../utils/web3functions'; + +const TokenPortfolio = () => { + const [walletConnected, setWalletConnected] = useState(false); + const [walletAddress, setWalletAddress] = useState(''); + const [balances, setBalances] = useState({ + WETH: '0.0', + DAI: '0.0', + WBTC: '0.0' + }); + + const connectWallet = async () => { + try { + const { account } = await connectToWallet(); + setWalletAddress(account); + setWalletConnected(true); + + const tokenBalances = await fetchTokenBalances(account); + setBalances(tokenBalances); + } catch (error) { + console.error('Error connecting wallet:', error); + } + }; + + return ( +
+

Token Portfolio

+ + {!walletConnected ? ( + + ) : ( +
+
+

Wallet:

+

{walletAddress}

+
+ +
+

Balances

+ + {Object.entries(balances).map(([token, balance]) => ( +
+ {token} + {balance} +
+ ))} +
+
+ )} +
+ ); +}; + +export default TokenPortfolio; diff --git a/frontend/src/components/TradingChat.jsx b/frontend/src/components/TradingChat.jsx index 6577946..3909e08 100644 --- a/frontend/src/components/TradingChat.jsx +++ b/frontend/src/components/TradingChat.jsx @@ -1,25 +1,23 @@ import React, { useState, useRef, useEffect } from "react"; -import { - Send, - Image as ImageIcon, - Loader, -} from "lucide-react"; -import Spline from "@splinetool/react-spline"; -import { - TradeABI, - TradeContractAddress, - ERC20ABI, - WETH_ABI, -} from "../constants/abi"; -import { ethers, getAddress } from "ethers"; +import { Send, Image as ImageIcon, Loader } from "lucide-react"; +// import Spline from "@splinetool/react-spline"; import { useNavigate } from "react-router-dom"; +// Import our web3 helper functions +import { + connectWallet, + fetchTokenBalances, + returnIntentValues, + giveWeth, + handleTokensApprove, + commandToTradeStart, +} from "../utils/web3functions"; const IntentAI = () => { const navigate = useNavigate(); const chatContainerRef = useRef(null); + const [isLoading, setIsLoading] = useState(false); const [activeTab, setActiveTab] = useState("general"); - const [firstPrompt, setFirstPrompt] = useState(""); const [messages, setMessages] = useState([ { type: "bot", @@ -27,221 +25,60 @@ const IntentAI = () => { "πŸ“ˆ Welcome to the Trading Assistant! I can help you with market analysis, trading strategies, and more.", }, ]); - const [test, setTest] = useState(""); const [account, setAccount] = useState(""); - const [message, setMessage] = useState(""); - // const [amount, setAmount] = useState(""); - const [targetChain, setTargetChain] = useState(""); - const [provider, setProvider] = useState(null); // Store the provider - const [signer, setSigner] = useState(null); // Store the signer - const [inputPrompt, setInputPrompt] = useState(""); const [input, setInput] = useState(""); - - const [outputPrompt, setOutputPrompt] = useState(""); - const [contractAddress, setContractAddress] = useState(""); - const [contractABI, setContractABI] = useState(""); - const [transactionSucceeded, settransactionSucceeded] = useState(false); - const [aiResponse, setaiResponse] = useState(""); + const [aiResponse, setAiResponse] = useState(""); const [amountTotrade, setAmountToTrade] = useState(null); - const [addressfirstTokenToTrade, setaddressfirstTokenToTrade] = - useState(null); - const [startTX, setstartTX] = useState(null); + const [addressfirstTokenToTrade, setAddressFirstTokenToTrade] = useState(null); const [isApproved, setIsApproved] = useState(false); const [balances, setBalances] = useState({}); + // Scroll chat to bottom when messages update useEffect(() => { if (chatContainerRef.current) { - chatContainerRef.current.scrollTop = - chatContainerRef.current.scrollHeight; + chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight; } }, [messages]); - const connectWallet = async () => { - if (window.ethereum) { - try { - const provider = new ethers.BrowserProvider(window.ethereum); - setProvider(provider); - const accounts = await provider.send("eth_requestAccounts", []); - setAccount(accounts[0]); - - const signer = await provider.getSigner(); - setSigner(signer); - - console.log("account connected => ", accounts[0]); - } catch (error) { - console.error("Error connecting wallet:", error); - } - } else { - alert("MetaMask is not installed!"); - } - }; - - const returnIntentValues = async function () { - const contract = new ethers.Contract( - TradeContractAddress, - TradeABI, - signer - ); - + // ======================================================== + // Wallet Connection + // ======================================================== + const handleConnectWallet = async () => { try { - if (!account) { - alert( - "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." - ); - setTimeout(() => { - window.location.reload(); - }, 2000); - throw new Error("Metamask is not installed"); - } - console.log(typeof aiResponse); - const response = await contract.returnIntentValues(aiResponse); - - console.log("token 1:", response[0]); - console.log("token 2:", response[1]); - console.log("amount:", response[2]); - setAmountToTrade(response[2]); - setaddressfirstTokenToTrade(response[0]); - console.log("protocol", response[3]); + const { account } = await connectWallet(); + setAccount(account); } catch (error) { - console.error("Error calling returnIntentValues:", error); - } - }; - - const balanceOfDai = async () => { - if (!account) { - alert( - "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." - ); - throw new Error("Metamask is not installed"); + console.error("Wallet connection failed:", error); } - //weth 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - //dai 0x6B175474E89094C44Da98b954EedeAC495271d0F - const daiContract = new ethers.Contract( - "0x6B175474E89094C44Da98b954EedeAC495271d0F", - WETH_ABI, - signer - ); - const balance = await daiContract.balanceOf(account); - console.log("dai balance : ", balance); }; - const giveWeth = async () => { - try { - if (!window.ethereum) { - alert( - "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." - ); - throw new Error("Metamask is not installed"); - } - - const wethContract = new ethers.Contract( - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - WETH_ABI, - signer - ); - console.log(wethContract); - console.log(signer); - - const depositTx = await wethContract.deposit({ - value: ethers.parseEther("10"), - }); - console.log("Depositing ETH to WETH..."); - // await depositTx.wait(); - - // console.log("Transferring WETH to recipient..."); - // const receipt = await transferTx.wait(); - - // console.log("WETH successfully sent!", receipt); - if (depositTx) { - const balance = await wethContract.balanceOf(account); - console.log("weth balance : ", balance); - } - } catch (error) { - console.error("Error giving WETH to user:", error); - throw error; - } - }; - - const handleTokensApprove = async () => { - if (!window.ethereum) { - alert( - "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." - ); - throw new Error("Metamask is not installed"); - } - - const tokenToTrade = new ethers.Contract( - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - ERC20ABI, - signer - ); - - if (account) { - const balance = await tokenToTrade.balanceOf(account); - if (balance < amountTotrade) { - alert("Insufficient balance"); - return; - } - const approveTransaction = await tokenToTrade.approve( - TradeContractAddress, - amountTotrade - ); - await approveTransaction.wait(1); - setIsApproved(true); - } else { - alert("connect metamask again!...."); - } - - // await tx.wait(); - - // console.log("Trade Done"); - }; - - const fetchAllBalances = async () => { - if (!window.ethereum) { - alert("Connect to MetaMask or another EVM wallet!"); - throw new Error("MetaMask is not installed"); - } - }; - - useEffect(() => { - if (amountTotrade) { - handleTokensApprove(); - } - }, [amountTotrade]); - + // ======================================================== + // Message & API Handling Functions + // ======================================================== const handleSend = async () => { - let balances = {}; + console.log("handleSend triggered with input:", input); + let balancesObj = {}; try { - const tokenAddresses = { - DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - // USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - }; - - for (const [token, address] of Object.entries(tokenAddresses)) { - const tokenContract = new ethers.Contract(address, ERC20ABI, provider); - const balance = await tokenContract.balanceOf(account); - balances[token] = ethers.formatUnits(balance, 18); - } - - console.log("User Token Balances:", balances); + balancesObj = await fetchTokenBalances(account); } catch (error) { console.error("Error fetching balances:", error); - throw error; } - - if (!input.trim()) return; - - // Add user input to messages + console.log("User Token Balances:", balancesObj); + if (!input.trim()) { + console.warn("Input is empty"); + return; + } + // Add user input to chat messages setMessages((prev) => [...prev, { type: "user", content: input }]); - - // Set the first prompt and clear the input field - setFirstPrompt(input); - console.log("input : ", input); - if (input.toLowerCase() == "confirm") { - if (amountTotrade > 0 && isApproved == true) commandToTradeStart(); + if (input.toLowerCase() === "confirm") { + // If already approved and amountTotrade exists, execute trade + if (amountTotrade && isApproved) { + try { + await commandToTradeStart(aiResponse); + } catch (error) { + console.error("Trade command failed:", error); + } + } setMessages((prev) => [ ...prev, { type: "bot", content: "Please wait for transaction to be done...." }, @@ -249,19 +86,13 @@ const IntentAI = () => { return; } setInput(""); - + setIsLoading(true); try { - const response = await fetch( - "http://ai-quant-trader-servers.onrender.com/api/generate-insights", - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ prompt: input, balances: balances }), - } - ); - + const response = await fetch("http://localhost:5000/api/generate-insights", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ prompt: input, balances: balancesObj }), + }); if (!response.ok) { setMessages((prev) => [ ...prev, @@ -270,67 +101,79 @@ const IntentAI = () => { content: "Servers are busy. Please try again in 30 seconds.", }, ]); + setIsLoading(false); return; } const data = await response.json(); console.log("Response from backend:", data); - setaiResponse(data.response); + setAiResponse(data.response); const [fromToken, toToken, amount, platform] = data.response.split(" "); - const responseForUser = `You should swap ${fromToken} to ${toToken} with an amount of ${amount} on the ${platform} platform. I can do it for you type "CONFIRM"`; - setMessages((prev) => [ - ...prev, - { type: "bot", content: responseForUser }, - ]); + const responseForUser = `You should swap ${fromToken} to ${toToken} with an amount of ${amount} on the ${platform} platform. Type "confirm" to proceed.`; + setMessages((prev) => [...prev, { type: "bot", content: responseForUser }]); } catch (error) { console.error("Error fetching insights:", error); - return null; } + setIsLoading(false); }; + // ======================================================== + // useEffect: Approve tokens when amountTotrade is set + // ======================================================== useEffect(() => { - if (aiResponse) { - console.log("Starting transaction ...."); - returnIntentValues(); + if (amountTotrade) { + handleTokensApprove(amountTotrade) + .then((approved) => { + if (approved) setIsApproved(true); + }) + .catch((error) => { + console.error("Error approving tokens:", error); + }); } - }, [aiResponse]); + }, [amountTotrade]); - const commandToTradeStart = async () => { - if (!account) { - alert( - "! Connect to Metamask or some kind of EVM Compatible Wallet ! ..." - ); - throw new Error("Metamask is not installed"); + // ======================================================== + // useEffect: Trigger contract call when aiResponse is updated + // ======================================================== + useEffect(() => { + if (aiResponse) { + console.log("aiResponse updated, calling returnIntentValues"); + returnIntentValues(aiResponse) + .then((response) => { + setAmountToTrade(response[2]); + setAddressFirstTokenToTrade(response[0]); + }) + .catch((error) => { + console.error("Error in returnIntentValues:", error); + }); } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [aiResponse]); - const tradeIntentEngine = new ethers.Contract( - TradeContractAddress, - TradeABI, - signer - ); - const tradeTx = await tradeIntentEngine.commandToTrade(aiResponse); - // await tradeTx.wait() - console.log("Trade Transaction Hash => ", tradeTx); - }; + // ======================================================== + // Handle key press for "Enter" submission in the textarea + // ======================================================== const handleKeyPress = (e) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSend(); } }; + + // ======================================================== + // JSX (HTML Part) - DO NOT CHANGE + // ======================================================== return (
{/* Background gradients */}
- {/* Glowing orbs */}
- {/* Left Side - Updated Spline Section */} + {/* Left Side - Spline Section */}
- {/* Header Badge */}
@@ -341,20 +184,13 @@ const IntentAI = () => {
- - {/* Title Section */}
-

- navigate("/")} - className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-500 to-blue-500 animate-gradient-x" - > - Intent - - navigate("/")} - className="text-transparent bg-clip-text bg-gradient-to-r from-purple-200 to-indigo-300" - > +

navigate("/")} + className="text-7xl font-bold tracking-tight cursor-pointer text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-indigo-500 to-blue-500 animate-gradient-x" + > + Intent + AI

@@ -363,22 +199,17 @@ const IntentAI = () => { ultimate cryptocurrency companion today!

- - {/* Updated Spline Container */}
- {/* \ */} - + {/* */}
- {/* Right Side - Chat Interface - Same as before */} + {/* Right Side - Chat Interface */}
-
- {/* Chat header and tabs */}
@@ -394,33 +225,31 @@ const IntentAI = () => {
-

Online & Ready

+

+ Online & Ready +

- {!account && (
-
)} -

- +
+
- - {/* Chat messages */}
{
)}
- - {/* Input area */}
diff --git a/frontend/src/constants/abi.js b/frontend/src/constants/abi.js index 05e6cae..1b35efd 100644 --- a/frontend/src/constants/abi.js +++ b/frontend/src/constants/abi.js @@ -1,11 +1,65 @@ export const TradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] -export const TradeContractAddress = "0xf4fa0d1C10c47cDe9F65D56c3eC977CbEb13449A" +export const TradeContractAddress = "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C" export const ERC20ABI = [ - "function balanceOf(address account) external view returns (uint256)", - "function approve(address spender, uint256 amount) external returns (bool)" - ]; + { + "constant": true, + "inputs": [{ "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "spender", "type": "address" }, + { "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +]; + export const WETH_ABI = [ - "function deposit() public payable", - "function transfer(address to, uint256 amount) public returns (bool)", - "function balanceOf(address account) external view returns (uint256)" -]; \ No newline at end of file + { + "constant": false, + "inputs": [], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "to", "type": "address" }, + { "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [ + { "name": "", "type": "bool" } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { "name": "account", "type": "address" } + ], + "name": "balanceOf", + "outputs": [ + { "name": "", "type": "uint256" } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +]; + \ No newline at end of file diff --git a/frontend/src/utils/web3functions.js b/frontend/src/utils/web3functions.js new file mode 100644 index 0000000..4b37cd6 --- /dev/null +++ b/frontend/src/utils/web3functions.js @@ -0,0 +1,159 @@ +import Web3 from "web3"; +import { + TradeABI, + TradeContractAddress, + ERC20ABI, + WETH_ABI, +} from "../constants/abi"; + +let web3; +let currentAccount = ""; + +/** + * Connects to MetaMask (or any window.ethereum wallet) and returns { web3, account } + */ +export async function connectWallet() { + if (window.ethereum) { + try { + await window.ethereum.request({ method: "eth_requestAccounts" }); + web3 = new Web3(window.ethereum); + const accounts = await web3.eth.getAccounts(); + currentAccount = accounts[0]; + console.log("Wallet connected, account:", currentAccount); + return { web3, account: currentAccount }; + } catch (error) { + console.error("Error connecting wallet:", error); + throw error; + } + } else { + alert("MetaMask is not installed!"); + throw new Error("MetaMask is not installed"); + } +} + +/** + * Fetch token balances for a given account. + */ +export async function fetchTokenBalances(account) { + if (!web3) throw new Error("Web3 is not initialized"); + const tokenAddresses = { + DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + }; + const balancesObj = {}; + try { + for (const [token, address] of Object.entries(tokenAddresses)) { + const tokenContract = new web3.eth.Contract(ERC20ABI, address); + console.log(`Fetching ${token} balance from ${address}...`); + const balance = await tokenContract.methods.balanceOf(account).call(); + console.log(`${token} raw balance:`, balance); + // Assuming 18 decimals; adjust if needed + balancesObj[token] = web3.utils.fromWei(balance, "ether"); + } + console.log("User Token Balances:", balancesObj); + return balancesObj; + } catch (error) { + console.error("Error fetching balances:", error); + throw error; + } +} + +/** + * Calls the trade contract's returnIntentValues method. + */ +export async function returnIntentValues(aiResponse) { + if (!web3 || !currentAccount) { + throw new Error("Wallet not connected"); + } + const tradeContract = new web3.eth.Contract(TradeABI, TradeContractAddress); + try { + console.log("Calling returnIntentValues with aiResponse:", aiResponse); + // Assuming the contract method is callable with .call() + const response = await tradeContract.methods + .returnIntentValues(aiResponse) + .call({ from: currentAccount }); + console.log("Contract response:", response); + return response; // Response array expected + } catch (error) { + console.error("Error calling returnIntentValues:", error); + throw error; + } +} + +/** + * Deposits ETH to get WETH. + */ +export async function giveWeth() { + if (!web3 || !currentAccount) { + throw new Error("Wallet not connected"); + } + const wethContract = new web3.eth.Contract(WETH_ABI, "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"); + try { + console.log("WETH contract:", wethContract); + const depositTx = await wethContract.methods.deposit().send({ + from: currentAccount, + value: web3.utils.toWei("10", "ether"), + }); + console.log("Depositing ETH to WETH, transaction:", depositTx); + const balance = await wethContract.methods.balanceOf(currentAccount).call(); + console.log("Updated WETH balance:", web3.utils.fromWei(balance, "ether")); + return balance; + } catch (error) { + console.error("Error giving WETH:", error); + throw error; + } +} + +/** + * Approves token transfer for trading. + * @param {string|number} amountToTrade - Amount (in wei or as a string) to approve. + */ +export async function handleTokensApprove(amountToTrade) { + if (!web3 || !currentAccount) { + throw new Error("Wallet not connected"); + } + + const tokenContract = new web3.eth.Contract(ERC20ABI, "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"); + + try { + const balance = await tokenContract.methods.balanceOf(currentAccount).call(); + console.log("Token balance:", balance); + + // Make sure amountToTrade is a number, not already in wei + const amountInWei = web3.utils.toWei(amountToTrade.toString(), "ether"); + console.log("Amount to trade in wei:", amountInWei); + console.log("Approving tokens..."); + + // Use the correct amount for approval + const approveTx = await tokenContract.methods + .approve(TradeContractAddress, amountInWei) + .send({ from: currentAccount }); + + console.log("Tokens approved. Tx:", approveTx); + return true; + } catch (error) { + console.error("Error approving tokens:", error); + throw error; + } +} + +/** + * Sends command to the trade contract. + */ +export async function commandToTradeStart(aiResponse) { + if (!web3 || !currentAccount) { + throw new Error("Wallet not connected"); + } + const tradeContract = new web3.eth.Contract(TradeABI, TradeContractAddress); + try { + const tradeTx = await tradeContract.methods + .commandToTrade(aiResponse) + .send({ from: currentAccount }); + console.log("Trade Transaction Hash:", tradeTx.transactionHash); + return tradeTx; + } catch (error) { + console.error("Error executing trade command:", error); + throw error; + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7b459ca --- /dev/null +++ b/package-lock.json @@ -0,0 +1,967 @@ +{ + "name": "AI-Quant-Trader", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "web3": "^4.16.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==" + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@types/node": { + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abitype": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", + "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", + "peerDependencies": { + "typescript": ">=4.9.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/web3": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-4.16.0.tgz", + "integrity": "sha512-SgoMSBo6EsJ5GFCGar2E/pR2lcR/xmUSuQ61iK6yDqzxmm42aPPxSqZfJz2z/UCR6pk03u77pU8TGV6lgMDdIQ==", + "dependencies": { + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth": "^4.11.1", + "web3-eth-abi": "^4.4.1", + "web3-eth-accounts": "^4.3.1", + "web3-eth-contract": "^4.7.2", + "web3-eth-ens": "^4.4.0", + "web3-eth-iban": "^4.0.7", + "web3-eth-personal": "^4.1.0", + "web3-net": "^4.1.0", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-rpc-providers": "^1.0.0-rc.4", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-4.7.1.tgz", + "integrity": "sha512-9KSeASCb/y6BG7rwhgtYC4CvYY66JfkmGNEYb7q1xgjt9BWfkf09MJPaRyoyT5trdOxYDHkT9tDlypvQWaU8UQ==", + "dependencies": { + "web3-errors": "^1.3.1", + "web3-eth-accounts": "^4.3.1", + "web3-eth-iban": "^4.0.7", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + }, + "optionalDependencies": { + "web3-providers-ipc": "^4.0.7" + } + }, + "node_modules/web3-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/web3-errors/-/web3-errors-1.3.1.tgz", + "integrity": "sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ==", + "dependencies": { + "web3-types": "^1.10.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-4.11.1.tgz", + "integrity": "sha512-q9zOkzHnbLv44mwgLjLXuyqszHuUgZWsQayD2i/rus2uk0G7hMn11bE2Q3hOVnJS4ws4VCtUznlMxwKQ+38V2w==", + "dependencies": { + "setimmediate": "^1.0.5", + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth-abi": "^4.4.1", + "web3-eth-accounts": "^4.3.1", + "web3-net": "^4.1.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-4.4.1.tgz", + "integrity": "sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg==", + "dependencies": { + "abitype": "0.7.1", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-accounts": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-4.3.1.tgz", + "integrity": "sha512-rTXf+H9OKze6lxi7WMMOF1/2cZvJb2AOnbNQxPhBDssKOllAMzLhg1FbZ4Mf3lWecWfN6luWgRhaeSqO1l+IBQ==", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "crc-32": "^1.2.2", + "ethereum-cryptography": "^2.0.0", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-contract": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-4.7.2.tgz", + "integrity": "sha512-3ETqs2pMNPEAc7BVY/C3voOhTUeJdkf2aM3X1v+edbngJLHAxbvxKpOqrcO0cjXzC4uc2Q8Zpf8n8zT5r0eLnA==", + "dependencies": { + "@ethereumjs/rlp": "^5.0.2", + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth": "^4.11.1", + "web3-eth-abi": "^4.4.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-contract/node_modules/@ethereumjs/rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/web3-eth-ens": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-4.4.0.tgz", + "integrity": "sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==", + "dependencies": { + "@adraffy/ens-normalize": "^1.8.8", + "web3-core": "^4.5.0", + "web3-errors": "^1.2.0", + "web3-eth": "^4.8.0", + "web3-eth-contract": "^4.5.0", + "web3-net": "^4.1.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-4.0.7.tgz", + "integrity": "sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==", + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7", + "web3-validator": "^2.0.3" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-personal": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-4.1.0.tgz", + "integrity": "sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==", + "dependencies": { + "web3-core": "^4.6.0", + "web3-eth": "^4.9.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-net": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-4.1.0.tgz", + "integrity": "sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==", + "dependencies": { + "web3-core": "^4.4.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.6.0", + "web3-utils": "^4.3.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-http": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-4.2.0.tgz", + "integrity": "sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==", + "dependencies": { + "cross-fetch": "^4.0.0", + "web3-errors": "^1.3.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-4.0.7.tgz", + "integrity": "sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==", + "optional": true, + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-4.0.8.tgz", + "integrity": "sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==", + "dependencies": { + "@types/ws": "8.5.3", + "isomorphic-ws": "^5.0.0", + "web3-errors": "^1.2.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "ws": "^8.17.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-methods": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.3.0.tgz", + "integrity": "sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==", + "dependencies": { + "web3-core": "^4.4.0", + "web3-types": "^1.6.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-providers": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/web3-rpc-providers/-/web3-rpc-providers-1.0.0-rc.4.tgz", + "integrity": "sha512-PXosCqHW0EADrYzgmueNHP3Y5jcSmSwH+Dkqvn7EYD0T2jcsdDAIHqk6szBiwIdhumM7gv9Raprsu/s/f7h1fw==", + "dependencies": { + "web3-errors": "^1.3.1", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-types": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-types/-/web3-types-1.10.0.tgz", + "integrity": "sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw==", + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-4.3.3.tgz", + "integrity": "sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw==", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "eventemitter3": "^5.0.1", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/web3-validator/-/web3-validator-2.0.6.tgz", + "integrity": "sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "util": "^0.12.5", + "web3-errors": "^1.2.0", + "web3-types": "^1.6.0", + "zod": "^3.21.4" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.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==" + }, + "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==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..672762a --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "web3": "^4.16.0" + } +} From e68cd73de090f7d46303e6d5bea1815ba7e7e945 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sat, 29 Mar 2025 18:58:48 +0530 Subject: [PATCH 19/71] Stratos --- frontend/src/components/Homepage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/Homepage.jsx b/frontend/src/components/Homepage.jsx index 1c3be0b..54dc369 100644 --- a/frontend/src/components/Homepage.jsx +++ b/frontend/src/components/Homepage.jsx @@ -37,7 +37,7 @@ function Homepage() {

- IntentAI + Stratos

Unleash the power of intelligent conversations with our next-generation AI assistant From 21abf1738d7929bbc9959fbeb7ac2f39e5ab6dee Mon Sep 17 00:00:00 2001 From: shorya27 Date: Sat, 29 Mar 2025 13:32:12 +0000 Subject: [PATCH 20/71] see RSI --- Python/Algorithms/RSI.py | 22 ++- Python/Decisions/RSI_dis.py | 140 +++++++++++-------- Python/main.py | 262 ++++++++++++++++++++++++++++++++++++ 3 files changed, 357 insertions(+), 67 deletions(-) diff --git a/Python/Algorithms/RSI.py b/Python/Algorithms/RSI.py index 55ace9a..c81bf3f 100644 --- a/Python/Algorithms/RSI.py +++ b/Python/Algorithms/RSI.py @@ -25,23 +25,20 @@ def extract_weth_prices(graph_data): swaps = graph_data.get("data", {}).get("swaps", []) prices = [] # Reverse the list so that the earliest swap is first. + # print("swapsL",swaps) for swap in reversed(swaps): price = None - token_in = swap.get("tokenIn", {}) - token_out = swap.get("tokenOut", {}) + token_in = swap.get("tokenOut", {}) # We assume WETH is the asset of interest. - if token_in.get("symbol") == "WETH": - try: - price = float(token_in.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - elif token_out.get("symbol") == "WETH": - try: - price = float(token_out.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 + # print(token_in) + try: + price = float(token_in.get("lastPriceUSD", "0")) + print(price) + except ValueError: + price = 0.0 if price and price > 0: prices.append(price) + # print(prices) return prices def compute_rsi(prices, period=5): @@ -115,6 +112,7 @@ def rsi_strategy_decision(graph_data, rsi_period=5, overbought_threshold=70, ove - 'latest_price': The most recent WETH price. - 'price_series': The full extracted price series. """ + print(graph_data) prices = extract_weth_prices(graph_data) if not prices: return {"decision": "NO_DATA", "reason": "No valid price data found."} diff --git a/Python/Decisions/RSI_dis.py b/Python/Decisions/RSI_dis.py index fb52eed..9c713c3 100644 --- a/Python/Decisions/RSI_dis.py +++ b/Python/Decisions/RSI_dis.py @@ -1,78 +1,108 @@ import time -import openai -from ..graph import fetch_graph_data +from groq import Groq # Replace OpenAI with Groq SDK from ..Algorithms.RSI import rsi_strategy_decision - +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc +import json from dotenv import load_dotenv import os + load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client -openai.api_key = os.getenv('OPENAI_API_KEY') +SYSTEM_PROMPT = """You are an expert trading AI specializing in low-risk cryptocurrency +strategies. Analyze the RSI data and provide only BUY/SELL/HOLD decisions considering: +- Current market conditions +- Low risk tolerance +- Historical price patterns +- Volatility indicators""" def get_llm_decision(algo_result): """ - The algo_result might look like: - { - "decision": "BUY"/"SELL"/"HOLD", - "rsi": ..., - "latest_price": ..., - "price_series": [...] - } + Modified for Groq API with risk-averse strategy """ - prompt = f""" - The RSI-based strategy suggests: {algo_result['decision']}. - RSI Value: {algo_result['rsi']} - Latest Price: {algo_result['latest_price']} + user_prompt = f""" + Trading Context: + - RSI Strategy Suggestion: {algo_result['decision']} + - Current RSI: {algo_result['rsi']} + - Latest Price: {algo_result['latest_price']} + - Recent Prices: {algo_result['price_series'][-5:]} - Should we BUY, SELL, or HOLD for a short-term, high-risk approach? - Respond with only one word: BUY, SELL, or HOLD. + Required Action: For a LOW-RISK strategy, should we BUY, SELL, or HOLD? + Respond with ONLY the action word in uppercase. """ - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[{"role": "user", "content": prompt}], - temperature=0.3 - ) - return response.choices[0].message.content.strip() + try: + chat_completion = client.chat.completions.create( + messages=[ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": user_prompt} + ], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=1 + ) + return chat_completion.choices[0].message.content.strip() + + except Exception as e: + print(f"Groq API Error: {str(e)}") + return "HOLD" # Fail-safe default + def rsi_decision_loop(interval=300): """ - Periodically applies an RSI-based strategy for short-term, high-risk trading. - Default interval: 300 seconds (5 minutes). + Modified version returning JSON formatted decisions """ while True: print("\n--- RSI Decision Loop Cycle ---") - graph_data = fetch_graph_data() - if not graph_data: - print("No data available. Retrying...") - time.sleep(interval) - continue - - algo_result = rsi_strategy_decision( - graph_data, - rsi_period=5, - overbought_threshold=70, - oversold_threshold=30 - ) - print("RSI Algorithm Output:", algo_result) + decisions = {} + + # Process all trading pairs + for pair, fetch_fn in [ + ("BTC", fetch_graph_data_wbtc_usdc), + ("DAI", fetch_graph_data_dai_usdc), + ("WETH", fetch_graph_data_weth_usdc) + ]: + graph_data = fetch_fn() + if not graph_data: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "No data"} + continue + + algo_result = rsi_strategy_decision( + graph_data, + rsi_period=5, + overbought_threshold=70, + oversold_threshold=30 + ) + print(algo_result) + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print(algo_result.get("decision")) + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "Insufficient data"} + continue + + try: + llm_decision = get_llm_decision(algo_result) + + # Calculate position size based on RSI + position_size = 69 + + decisions[pair] = { + "action": llm_decision, + "position_size": position_size, + "rsi": algo_result['rsi'], + "price": algo_result['latest_price'] + } + + except Exception as e: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": str(e)} - if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): - print("Not enough data to compute RSI. Skipping...") - time.sleep(interval) - continue - - # LLM final step - llm_decision = get_llm_decision(algo_result) - print("LLM Decision:", llm_decision) + # Create final JSON output + output_json = { + "timestamp": int(time.time()), + "decisions": decisions + } - # Pseudo-trade execution - if llm_decision == "BUY": - print(">>> Executing BUY trade <<<") - elif llm_decision == "SELL": - print(">>> Executing SELL trade <<<") - else: - print(">>> HOLD - No trade executed <<<") - - print(f"Waiting {interval} seconds until next cycle...\n") + print("Final Output:", json.dumps(output_json, indent=2)) time.sleep(interval) if __name__ == "__main__": diff --git a/Python/main.py b/Python/main.py index e69de29..09dc1b4 100644 --- a/Python/main.py +++ b/Python/main.py @@ -0,0 +1,262 @@ +import time +import requests +import json +import os +from groq import Groq +from dotenv import load_dotenv + +# Load environment variables +load_dotenv() + +# Configuration +POOL_CONFIG = { + "WETH": { + "pool_id": "0xc31e54c7a869b9fcbecc14363cf510d1c41fa443", + "token_symbol": "WETH", + "rsi_period": 5, + "overbought": 70, + "oversold": 30 + }, + "WBTC": { + "pool_id": "0x0e4831319a50228b9e450861297ab92dee15b44f", + "token_symbol": "WBTC", + "rsi_period": 5, + "overbought": 75, + "oversold": 25 + }, + "DAI": { + "pool_id": "0xf0428617433652c9dc6d1093a42adfbf30d29f74", + "token_symbol": "DAI", + "rsi_period": 7, + "overbought": 65, + "oversold": 35 + } +} + +GROQ_MODEL = "llama3-70b-8192" +SUBGRAPH_ENDPOINT = "https://gateway.thegraph.com/api/subgraphs/id/FQ6JYszEKApsBpAmiHesRsd9Ygc6mzmpNRANeVQFYoVX" +HEADERS = {"Authorization": f"Bearer {os.getenv('GRAPH_API_KEY')}"} + +# Initialize Groq client +groq_client = Groq(api_key=os.getenv("GROQ_API_KEY")) + +def fetch_pool_data(pool_id): + """Generic pool data fetcher with retry logic""" + query = f""" + {{ + swaps( + orderBy: timestamp + orderDirection: desc + where: {{pool: "{pool_id}"}} + first: 10 + ) {{ + pool {{ + activeLiquidity + inputTokenBalances + inputTokenBalancesUSD + }} + tokenIn {{ + lastPriceUSD + symbol + }} + tokenOut {{ + lastPriceUSD + symbol + }} + }} + }} + """ + for _ in range(3): + try: + response = requests.post( + SUBGRAPH_ENDPOINT, + json={"query": query}, + headers=HEADERS, + timeout=10 + ) + response.raise_for_status() + return response.json() + except Exception as e: + print(f"Retrying {pool_id}... Error: {str(e)}") + time.sleep(2) + return None + +def extract_token_prices(data, token_symbol): + """Robust price extraction with data validation""" + prices = [] + for swap in reversed(data.get("data", {}).get("swaps", [])): + try: + in_token = swap.get("tokenIn", {}) + out_token = swap.get("tokenOut", {}) + + if in_token.get("symbol") == token_symbol: + price = float(in_token.get("lastPriceUSD", 0)) + elif out_token.get("symbol") == token_symbol: + price = float(out_token.get("lastPriceUSD", 0)) + else: + continue + + if price > 0: + prices.append(price) + except (ValueError, TypeError): + continue + return prices + +def compute_rsi(prices, period=14): + """Professional-grade RSI calculation""" + if len(prices) < period + 1: + return None + + deltas = [prices[i] - prices[i-1] for i in range(1, len(prices))] + gains = [d if d > 0 else 0 for d in deltas] + losses = [-d if d < 0 else 0 for d in deltas] + + avg_gain = sum(gains[:period]) / period + avg_loss = sum(losses[:period]) / period + + for i in range(period, len(gains)): + avg_gain = (avg_gain * (period - 1) + gains[i]) / period + avg_loss = (avg_loss * (period - 1) + losses[i]) / period + + if avg_loss == 0: + return 100.0 + + rs = avg_gain / avg_loss + return 100 - (100 / (1 + rs)) + +def ai_safety_check(asset_data): + """AI-powered decision validation""" + system_prompt = f"""Analyze {asset_data['symbol']} trading opportunity: +- Current RSI: {asset_data['rsi']} +- Price: ${asset_data['price']} +- Recent volatility: {asset_data['volatility']} +- Market conditions: {asset_data['market_condition']} + +Recommend BUY/SELL/HOLD with 1-word response.""" + + try: + response = groq_client.chat.completions.create( + messages=[ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": "Make low-risk trading decision"} + ], + model=GROQ_MODEL, + temperature=0.2, + max_tokens=1 + ) + return response.choices[0].message.content.strip() + except Exception as e: + print(f"AI Safety Check Failed: {str(e)}") + return "HOLD" + +def calculate_position(rsi, decision, base_size=10): + """Dynamic position sizing algorithm""" + if decision == "BUY": + return base_size * max(0, (30 - rsi) / 30) + elif decision == "SELL": + return base_size * min(2, (rsi - 70) / 30) + return 0 + +def analyze_market_conditions(prices): + """Market condition classifier""" + if len(prices) < 3: + return "neutral" + + short_term = sum(prices[-3:])/3 + mid_term = sum(prices[-10:])/10 if len(prices) >=10 else short_term + return "bullish" if short_term > mid_term else "bearish" + +def trading_engine(): + """Main trading decision engine""" + decisions = {} + + for asset, config in POOL_CONFIG.items(): + asset_data = {"symbol": config["token_symbol"]} + + # Fetch and process data + raw_data = fetch_pool_data(config["pool_id"]) + if not raw_data: + decisions[asset] = {"action": "HOLD", "reason": "data_failure"} + continue + + prices = extract_token_prices(raw_data, config["token_symbol"]) + if len(prices) < config["rsi_period"] + 1: + decisions[asset] = {"action": "HOLD", "reason": "insufficient_data"} + continue + + # Calculate metrics + rsi = compute_rsi(prices[-20:], config["rsi_period"]) # Use last 20 prices + asset_data.update({ + "rsi": rsi, + "price": prices[-1], + "volatility": (max(prices[-10:]) - min(prices[-10:])) / min(prices[-10:]), + "market_condition": analyze_market_conditions(prices) + }) + + # Generate initial decision + if rsi > config["overbought"]: + decision = "SELL" + elif rsi < config["oversold"]: + decision = "BUY" + else: + decision = "HOLD" + + # AI validation + final_decision = ai_safety_check(asset_data) + position_size = calculate_position(rsi, final_decision) + + decisions[asset] = { + "action": final_decision, + "size": round(position_size, 2), + "confidence": min(100, max(0, abs(rsi - 50))), + "metrics": asset_data + } + + return decisions + +def main_loop(interval=300): + """Core trading loop""" + while True: + start_time = time.time() + print(f"\n=== Trading Cycle {time.ctime()} ===") + + decisions = trading_engine() + + output = { + "timestamp": int(start_time), + "decisions": decisions, + "performance": { + "processing_time": round(time.time() - start_time, 2), + "success_rate": round( + sum(1 for d in decisions.values() if d["action"] != "HOLD") + / len(decisions), + 2 + ) + } + } + + print(json.dumps(output, indent=2)) + + if interval > 0: + time.sleep(interval) + +if __name__ == "__main__": + # Initial test with mock data + test_data = { + "data": { + "swaps": [ + { + "tokenIn": {"symbol": "WETH", "lastPriceUSD": "1800"}, + "tokenOut": {"symbol": "USDC", "lastPriceUSD": "1.0"} + }, + { + "tokenIn": {"symbol": "USDC", "lastPriceUSD": "1.0"}, + "tokenOut": {"symbol": "WETH", "lastPriceUSD": "1850"} + } + ] + } + } + print("RSI Test:", compute_rsi([1800, 1850, 1820, 1780, 1900])) + + # Start main loop + main_loop(interval=300) From 08f6c0b3b5702acac4e47caa6fa73941882f1229 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 12:49:31 +0530 Subject: [PATCH 21/71] changes shorya --- Python/Algorithms/RSI.py | 25 +++---- Python/Decisions/RSI_dis.py | 142 ++++++++++++++++++++++-------------- 2 files changed, 97 insertions(+), 70 deletions(-) diff --git a/Python/Algorithms/RSI.py b/Python/Algorithms/RSI.py index 55ace9a..4fe9522 100644 --- a/Python/Algorithms/RSI.py +++ b/Python/Algorithms/RSI.py @@ -1,4 +1,3 @@ - #############################SHORT TERM HIGH RISK TRADING STRATEGY############################# ############################# RSI ############################# @@ -25,23 +24,20 @@ def extract_weth_prices(graph_data): swaps = graph_data.get("data", {}).get("swaps", []) prices = [] # Reverse the list so that the earliest swap is first. + # print("swapsL",swaps) for swap in reversed(swaps): price = None - token_in = swap.get("tokenIn", {}) - token_out = swap.get("tokenOut", {}) + token_in = swap.get("tokenOut", {}) # We assume WETH is the asset of interest. - if token_in.get("symbol") == "WETH": - try: - price = float(token_in.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - elif token_out.get("symbol") == "WETH": - try: - price = float(token_out.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 + # print(token_in) + try: + price = float(token_in.get("lastPriceUSD", "0")) + print(price) + except ValueError: + price = 0.0 if price and price > 0: prices.append(price) + # print(prices) return prices def compute_rsi(prices, period=5): @@ -115,6 +111,7 @@ def rsi_strategy_decision(graph_data, rsi_period=5, overbought_threshold=70, ove - 'latest_price': The most recent WETH price. - 'price_series': The full extracted price series. """ + print(graph_data) prices = extract_weth_prices(graph_data) if not prices: return {"decision": "NO_DATA", "reason": "No valid price data found."} @@ -142,4 +139,4 @@ def rsi_strategy_decision(graph_data, rsi_period=5, overbought_threshold=70, ove # The AI agent would call: # # result = rsi_strategy_decision(graph_json, rsi_period=5, overbought_threshold=70, oversold_threshold=30) -# print("RSI Strategy Decision:", result) +# print("RSI Strategy Decision:", result) \ No newline at end of file diff --git a/Python/Decisions/RSI_dis.py b/Python/Decisions/RSI_dis.py index fb52eed..e62fada 100644 --- a/Python/Decisions/RSI_dis.py +++ b/Python/Decisions/RSI_dis.py @@ -1,79 +1,109 @@ import time -import openai -from ..graph import fetch_graph_data +from groq import Groq # Replace OpenAI with Groq SDK from ..Algorithms.RSI import rsi_strategy_decision - +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc +import json from dotenv import load_dotenv import os + load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client -openai.api_key = os.getenv('OPENAI_API_KEY') +SYSTEM_PROMPT = """You are an expert trading AI specializing in low-risk cryptocurrency +strategies. Analyze the RSI data and provide only BUY/SELL/HOLD decisions considering: +- Current market conditions +- Low risk tolerance +- Historical price patterns +- Volatility indicators""" def get_llm_decision(algo_result): """ - The algo_result might look like: - { - "decision": "BUY"/"SELL"/"HOLD", - "rsi": ..., - "latest_price": ..., - "price_series": [...] - } + Modified for Groq API with risk-averse strategy """ - prompt = f""" - The RSI-based strategy suggests: {algo_result['decision']}. - RSI Value: {algo_result['rsi']} - Latest Price: {algo_result['latest_price']} + user_prompt = f""" + Trading Context: + - RSI Strategy Suggestion: {algo_result['decision']} + - Current RSI: {algo_result['rsi']} + - Latest Price: {algo_result['latest_price']} + - Recent Prices: {algo_result['price_series'][-5:]} - Should we BUY, SELL, or HOLD for a short-term, high-risk approach? - Respond with only one word: BUY, SELL, or HOLD. + Required Action: For a LOW-RISK strategy, should we BUY, SELL, or HOLD? + Respond with ONLY the action word in uppercase. """ - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[{"role": "user", "content": prompt}], - temperature=0.3 - ) - return response.choices[0].message.content.strip() + try: + chat_completion = client.chat.completions.create( + messages=[ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": user_prompt} + ], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=1 + ) + return chat_completion.choices[0].message.content.strip() + + except Exception as e: + print(f"Groq API Error: {str(e)}") + return "HOLD" # Fail-safe default + def rsi_decision_loop(interval=300): """ - Periodically applies an RSI-based strategy for short-term, high-risk trading. - Default interval: 300 seconds (5 minutes). + Modified version returning JSON formatted decisions """ while True: print("\n--- RSI Decision Loop Cycle ---") - graph_data = fetch_graph_data() - if not graph_data: - print("No data available. Retrying...") - time.sleep(interval) - continue - - algo_result = rsi_strategy_decision( - graph_data, - rsi_period=5, - overbought_threshold=70, - oversold_threshold=30 - ) - print("RSI Algorithm Output:", algo_result) + decisions = {} + + # Process all trading pairs + for pair, fetch_fn in [ + ("BTC", fetch_graph_data_wbtc_usdc), + ("DAI", fetch_graph_data_dai_usdc), + ("WETH", fetch_graph_data_weth_usdc) + ]: + graph_data = fetch_fn() + if not graph_data: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "No data"} + continue + + algo_result = rsi_strategy_decision( + graph_data, + rsi_period=5, + overbought_threshold=70, + oversold_threshold=30 + ) + print(algo_result) + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print(algo_result.get("decision")) + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "Insufficient data"} + continue + + try: + llm_decision = get_llm_decision(algo_result) + + # Calculate position size based on RSI + position_size = 69 + + decisions[pair] = { + "action": llm_decision, + "position_size": position_size, + "rsi": algo_result['rsi'], + "price": algo_result['latest_price'] + } + + except Exception as e: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": str(e)} - if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): - print("Not enough data to compute RSI. Skipping...") - time.sleep(interval) - continue - - # LLM final step - llm_decision = get_llm_decision(algo_result) - print("LLM Decision:", llm_decision) + # Create final JSON output + output_json = { + "timestamp": int(time.time()), + "decisions": decisions + } - # Pseudo-trade execution - if llm_decision == "BUY": - print(">>> Executing BUY trade <<<") - elif llm_decision == "SELL": - print(">>> Executing SELL trade <<<") - else: - print(">>> HOLD - No trade executed <<<") - - print(f"Waiting {interval} seconds until next cycle...\n") + print("Final Output:", json.dumps(output_json, indent=2)) time.sleep(interval) if __name__ == "__main__": - rsi_decision_loop(interval=300) + rsi_decision_loop(interval=300) \ No newline at end of file From 6e3cb658d0c975c72f58f4e8e7f55ba4c46dd6ca Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 15:22:59 +0530 Subject: [PATCH 22/71] changes --- README.md | 2 + frontend/package-lock.json | 322 +++++++++++++++++- frontend/package.json | 1 + frontend/src/App.jsx | 2 + .../src/components/TradingChatRSIAlgos.jsx | 162 +++++++++ 5 files changed, 486 insertions(+), 3 deletions(-) create mode 100644 frontend/src/components/TradingChatRSIAlgos.jsx diff --git a/README.md b/README.md index d033532..86727d4 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,5 @@ Return a json user will select buy/sell + +python3 -m Python.Decisions.RSI_dis \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c24c8fa..cae4751 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -22,6 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^7.1.3", + "recharts": "^2.15.1", "tailwindcss": "^3.4.17", "tsconfig-paths": "^4.2.0", "viem": "^2.22.14" @@ -464,6 +465,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", @@ -1769,6 +1781,60 @@ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", "license": "MIT" }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, "node_modules/@types/diff-match-patch": { "version": "1.0.36", "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", @@ -2486,6 +2552,14 @@ "node": ">= 6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2577,9 +2651,118 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -2652,6 +2835,11 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2741,6 +2929,15 @@ "node": ">=0.10.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -3300,6 +3497,14 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-equals": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -3861,6 +4066,14 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -4489,6 +4702,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -5279,7 +5497,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -5346,7 +5563,6 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, "node_modules/react-merge-refs": { @@ -5409,6 +5625,35 @@ "react-dom": ">=18" } }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -5430,6 +5675,46 @@ "node": ">=8.10.0" } }, + "node_modules/recharts": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.1.tgz", + "integrity": "sha512-v8PUTUlyiDe56qUj82w/EDVuzEFXwEHp9/xOowGAZwfLjB9uAy3GllQVIYMWF6nU+qibx85WF75zD7AjqoT54Q==", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/recharts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", @@ -5453,6 +5738,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", @@ -6168,6 +6458,11 @@ "integrity": "sha512-kH5pKeIIBPQXAOni2AiY/Cu/NKdkFREdpH+TLdM0g6WA7RriCv0kPLgP731ady67MhTAqrVG/4mnEeibVuCJcg==", "license": "MIT" }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6386,6 +6681,27 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/viem": { "version": "2.22.14", "resolved": "https://registry.npmjs.org/viem/-/viem-2.22.14.tgz", diff --git a/frontend/package.json b/frontend/package.json index 578f515..f767841 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -24,6 +24,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^7.1.3", + "recharts": "^2.15.1", "tailwindcss": "^3.4.17", "tsconfig-paths": "^4.2.0", "viem": "^2.22.14" diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index f2513f8..ef30a27 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -5,6 +5,7 @@ import GeneralChat from './components/GeneralChat'; import TradingChat from './components/TradingChat'; import Homepage from './components/Homepage'; import TokenPortfolio from './components/TokenPortfolio'; +import IntentAI2 from "./components/TradingChatRSIAlgos.jsx" function App() { const [isMenuOpen, setIsMenuOpen] = useState(false); @@ -18,6 +19,7 @@ function App() { } /> } /> } /> + } />

diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx new file mode 100644 index 0000000..65f1b54 --- /dev/null +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -0,0 +1,162 @@ +import React, { useState } from 'react'; +import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; +import { Wallet, TrendingUp, ChevronUp, ChevronDown } from 'lucide-react'; + +const data = [ + { name: 'Jan', BTC: 42000, ETH: 3200 }, + { name: 'Feb', BTC: 44500, ETH: 3100 }, + { name: 'Mar', BTC: 47000, ETH: 3300 }, + { name: 'Apr', BTC: 41000, ETH: 2900 }, + { name: 'May', BTC: 39000, ETH: 2700 }, + { name: 'Jun', BTC: 43000, ETH: 3000 }, +]; + +const tradingSignals = { + timestamp: 1743319056, + decisions: { + BTC: { + action: "SELL", + price: 83137.6158732534 + }, + DAI: { + action: "BUY", + price: 1.0 + }, + WETH: { + action: "BUY", + price: 1.0 + } + } +}; + +function IntentAI2() { + const [isConnected, setIsConnected] = useState(false); + + return ( +
+ {/* Header Section */} +
+
+
+

+ Stratos +

+ +
+

+ Advanced Quantitative Trading Platform +

+
+
+ +
+ {/* Trading Signals */} +
+ {Object.entries(tradingSignals.decisions).map(([token, decision]) => ( +
+
+

{token}

+ + {decision.action} + +
+
+ + ${decision.price.toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })} + + {decision.action === 'BUY' ? ( + + ) : ( + + )} +
+
+ ))} +
+ + {/* Price Chart */} +
+
+ +

Market Analysis

+
+
+ + + + + + + + + + +
+
+ + {/* Portfolio Section */} +
+
+ +

Portfolio Overview

+
+
+ {Object.entries(tradingSignals.decisions).map(([token, decision]) => ( +
+
+ {token} + + {token === 'BTC' ? '2.5' : token === 'WETH' ? '15.8' : '1000'} {token} + +
+ + ${decision.price.toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })} + +
+ ))} +
+
+
+
+ ); +} + +export default IntentAI2; \ No newline at end of file From cc5178b23b601955ac6f54a55a1a4c3d7913d59b Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 16:05:31 +0530 Subject: [PATCH 23/71] changes --- .../DeployTradeIntent.sol/1/run-latest.json | 24 +- frontend/src/components/PriceChartWidget.jsx | 60 ++++ .../src/components/TradingChatRSIAlgos.jsx | 260 +++++++++--------- frontend/src/constants/abi.js | 2 +- 4 files changed, 207 insertions(+), 139 deletions(-) create mode 100644 frontend/src/components/PriceChartWidget.jsx diff --git a/broadcast/DeployTradeIntent.sol/1/run-latest.json b/broadcast/DeployTradeIntent.sol/1/run-latest.json index 8059e49..ddad3ea 100644 --- a/broadcast/DeployTradeIntent.sol/1/run-latest.json +++ b/broadcast/DeployTradeIntent.sol/1/run-latest.json @@ -1,10 +1,10 @@ { "transactions": [ { - "hash": "0x853459cb84ed50ac6f8cd8a44bdadeae51ad247f42a5b9c907a1801d830d912d", + "hash": "0xa11d4ad6341964ab86ef6a6b17fe863e474d90c40711e1571b732580c71edbc2", "transactionType": "CREATE", "contractName": "IntentEngine", - "contractAddress": "0xdb731eaafa0ffa7854a24c2379585a85d768ed5c", + "contractAddress": "0xa86582ad5e80abc19f95f8a9fb3905cda0dabd59", "function": null, "arguments": null, "transaction": { @@ -12,7 +12,7 @@ "gas": "0x11c3ff", "value": "0x0", "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033", - "nonce": "0x39e", + "nonce": "0x3a0", "chainId": "0x1" }, "additionalContracts": [], @@ -26,16 +26,16 @@ "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x853459cb84ed50ac6f8cd8a44bdadeae51ad247f42a5b9c907a1801d830d912d", + "transactionHash": "0xa11d4ad6341964ab86ef6a6b17fe863e474d90c40711e1571b732580c71edbc2", "transactionIndex": "0x0", - "blockHash": "0xdec4b0f6ae83f271c6af44fa7b784a3c6561239415f290a25451ef3c518164fc", - "blockNumber": "0x15205a2", + "blockHash": "0x3dab494a73329b4032fc5d22b8bf7a8f674a2b57743092cfdc923819502ee2b5", + "blockNumber": "0x1521f00", "gasUsed": "0xdaa76", - "effectiveGasPrice": "0x249920d5", - "blobGasPrice": "0x9cd9", + "effectiveGasPrice": "0x18f1103f", + "blobGasPrice": "0x1", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contractAddress": "0xdb731eaafa0ffa7854a24c2379585a85d768ed5c" + "contractAddress": "0xa86582ad5e80abc19f95f8a9fb3905cda0dabd59" } ], "libraries": [], @@ -43,10 +43,10 @@ "returns": { "0": { "internal_type": "contract IntentEngine", - "value": "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C" + "value": "0xa86582Ad5E80abc19F95f8A9Fb3905Cda0dAbd59" } }, - "timestamp": 1743251905, + "timestamp": 1743330251, "chain": 1, - "commit": "1e55dc2" + "commit": "e2bc730" } \ No newline at end of file diff --git a/frontend/src/components/PriceChartWidget.jsx b/frontend/src/components/PriceChartWidget.jsx new file mode 100644 index 0000000..ee7eb2d --- /dev/null +++ b/frontend/src/components/PriceChartWidget.jsx @@ -0,0 +1,60 @@ +import React, { useEffect, useRef } from 'react'; + +const PRICE_CHART_ID = 'price-chart-widget-container'; + +export const PriceChartWidget = () => { + const containerRef = useRef(null); + + useEffect(() => { + if (typeof window === 'undefined') return; + + const loadWidget = () => { + if (typeof window.createMyWidget === 'function') { + window.createMyWidget(PRICE_CHART_ID, { + autoSize: true, + chainId: '0x1', + pairAddress: '0x56534741cd8b152df6d48adf7ac51f75169a83b2', + defaultInterval: '1D', + timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone ?? 'Etc/UTC', + theme: 'moralis', + locale: 'en', + backgroundColor: '#071321', + gridColor: '#0d2035', + textColor: '#68738D', + candleUpColor: '#4CE666', + candleDownColor: '#E64C4C', + hideLeftToolbar: false, + hideTopToolbar: false, + hideBottomToolbar: false + }); + } else { + console.error('createMyWidget function is not defined.'); + } + }; + + if (!document.getElementById('moralis-chart-widget')) { + const script = document.createElement('script'); + script.id = 'moralis-chart-widget'; + script.src = 'https://moralis.com/static/embed/chart.js'; + script.type = 'text/javascript'; + script.async = true; + script.onload = loadWidget; + script.onerror = () => { + console.error('Failed to load the chart widget script.'); + }; + document.body.appendChild(script); + } else { + loadWidget(); + } + }, []); + + return ( +
+
+
+ ); +}; \ No newline at end of file diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx index 65f1b54..10fcdd3 100644 --- a/frontend/src/components/TradingChatRSIAlgos.jsx +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -1,131 +1,132 @@ -import React, { useState } from 'react'; -import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; +import React, { useEffect, useState } from 'react'; import { Wallet, TrendingUp, ChevronUp, ChevronDown } from 'lucide-react'; +import { PriceChartWidget } from './PriceChartWidget'; // Adjust this path if necessary +import { connectWallet as connectToWallet, fetchTokenBalances } from '../utils/web3functions'; -const data = [ - { name: 'Jan', BTC: 42000, ETH: 3200 }, - { name: 'Feb', BTC: 44500, ETH: 3100 }, - { name: 'Mar', BTC: 47000, ETH: 3300 }, - { name: 'Apr', BTC: 41000, ETH: 2900 }, - { name: 'May', BTC: 39000, ETH: 2700 }, - { name: 'Jun', BTC: 43000, ETH: 3000 }, -]; +function IntentTradingAlgo() { + const [walletConnected, setWalletConnected] = useState(false); + const [walletAddress, setWalletAddress] = useState(''); + const [balances, setBalances] = useState({ + WETH: '0.0', + DAI: '0.0', + WBTC: '0.0' + }); + const [tradingSignals, setTradingSignals] = useState(null); + const [loadingSignals, setLoadingSignals] = useState(false); -const tradingSignals = { - timestamp: 1743319056, - decisions: { - BTC: { - action: "SELL", - price: 83137.6158732534 - }, - DAI: { - action: "BUY", - price: 1.0 - }, - WETH: { - action: "BUY", - price: 1.0 + const connectWallet = async () => { + try { + const { account } = await connectToWallet(); + setWalletAddress(account); + setWalletConnected(true); + + const tokenBalances = await fetchTokenBalances(account); + setBalances(tokenBalances); + } catch (error) { + console.error('Error connecting wallet:', error); } - } -}; + }; -function IntentAI2() { - const [isConnected, setIsConnected] = useState(false); + // This function simulates calling a backend algorithm. + const generateSignals = async () => { + setLoadingSignals(true); + try { + // Send the current balances to your backend + const response = await fetch('/api/generateSignals', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ balances }) + }); + const data = await response.json(); + // The returned data structure should be similar to: + // { + // "timestamp": 1743319056, + // "decisions": { + // "BTC": { "action": "SELL", "position_size": 69, "rsi": 100.0, "price": 83137.6158732534 }, + // "DAI": { "action": "BUY", "position_size": 69, "rsi": 14.505420941079123, "price": 1.0 }, + // "WETH": { "action": "BUY", "position_size": 69, "rsi": 8.585120132570779, "price": 1.0 } + // } + // } + // Since you need only the BUY/SELL decision, we can ignore the extra fields. + setTradingSignals(data); + } catch (error) { + console.error('Error generating signals:', error); + } finally { + setLoadingSignals(false); + } + }; return (
{/* Header Section */}
-
-
-

- Stratos -

- -
-

- Advanced Quantitative Trading Platform -

+
+

+ Stratos +

+
+

+ Advanced Quantitative Trading Platform +

-
- {/* Trading Signals */} -
- {Object.entries(tradingSignals.decisions).map(([token, decision]) => ( -
-
-

{token}

- - {decision.action} - -
-
- - ${decision.price.toLocaleString(undefined, { - minimumFractionDigits: 2, - maximumFractionDigits: 2 - })} - - {decision.action === 'BUY' ? ( - - ) : ( - - )} -
-
- ))} +
+ {/* Generate Signals Section */} +
+
- {/* Price Chart */} -
+ {/* Trading Signals Section */} + {tradingSignals && ( +
+

Trading Signals

+
+ {Object.entries(tradingSignals.decisions).map(([token, decision]) => ( +
+
+

{token}

+ + {decision.action} + +
+ {/* If you decide later to add more info like position_size or rsi, you can include them here */} +
+ ))} +
+
+ )} + + {/* Price Chart Section */} +

Market Analysis

- - - - - - - - - - +
@@ -135,28 +136,35 @@ function IntentAI2() {

Portfolio Overview

-
- {Object.entries(tradingSignals.decisions).map(([token, decision]) => ( -
-
- {token} - - {token === 'BTC' ? '2.5' : token === 'WETH' ? '15.8' : '1000'} {token} - -
- - ${decision.price.toLocaleString(undefined, { - minimumFractionDigits: 2, - maximumFractionDigits: 2 - })} - + {walletConnected ? ( +
+
+

Wallet:

+

{walletAddress}

- ))} -
+
+ {Object.entries(balances).map(([token, balance]) => ( +
+
+ {token} + + {balance} {token} + +
+
+ ))} +
+
+ ) : ( +

Please connect your wallet to view your portfolio.

+ )}
); } -export default IntentAI2; \ No newline at end of file +export default IntentTradingAlgo; diff --git a/frontend/src/constants/abi.js b/frontend/src/constants/abi.js index 1b35efd..b60c6f8 100644 --- a/frontend/src/constants/abi.js +++ b/frontend/src/constants/abi.js @@ -1,5 +1,5 @@ export const TradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] -export const TradeContractAddress = "0xDb731EaaFA0FFA7854A24C2379585a85D768Ed5C" +export const TradeContractAddress = "0xa86582Ad5E80abc19F95f8A9Fb3905Cda0dAbd59" export const ERC20ABI = [ { "constant": true, From b729b89d93c1cc5eee2a8850b4fb3827c0003eb0 Mon Sep 17 00:00:00 2001 From: shorya27 Date: Sun, 30 Mar 2025 11:03:06 +0000 Subject: [PATCH 24/71] lol --- backend/config/prompt.js | 44 +- backend/package-lock.json | 309 ++++ backend/package.json | 1 + backend/server.js | 99 +- frontend/package-lock.json | 2170 ++++++++++++----------- frontend/package.json | 3 +- frontend/src/components/GeneralChat.jsx | 86 +- 7 files changed, 1656 insertions(+), 1056 deletions(-) diff --git a/backend/config/prompt.js b/backend/config/prompt.js index 2d15b01..914e291 100644 --- a/backend/config/prompt.js +++ b/backend/config/prompt.js @@ -1,4 +1,4 @@ -export const SYSTEM_PROMPT = ` +export const SYSTEM_PROMPT_TRADE = ` You are an autonomous trading agent in a SIMULATED development environment on the Ethereum Mainnet. Your core directive is to interpret trading requests, extract necessary details, and analyze liquidity pool prices. PRIMARY OBJECTIVE: Extract and output only the relevant information. @@ -64,3 +64,45 @@ where `; +export const SYSTEM_PROMPT_GENERAL = ` + +You are an autonomous assistant designed to interpret user prompts, determine the user's intent (send or swap), and extract relevant details. + +## Task Flow: +1. **Identify the User's Intent**: + - Determine whether the user wants to **send** tokens to a friend or **swap** one token for another. + - If the intent is unclear, ask the user to clarify before proceeding. + +2. **Ensure All Required Details Are Provided**: + - If any required detail is missing, prompt the user to provide it before generating the final response. + +3. **Rules for Extraction**: + - **For sending tokens to a friend**, extract: + - **amount**: The numeric value representing the quantity of tokens being sent. + - **address**: The recipient's wallet address. + - **For swapping tokens**, extract: + - **amount**: The numeric value representing the quantity of tokens being swapped. + - **token1**: The token being exchanged (symbol only, e.g., ETH, USDT, BTC). + - **token2**: The token being received (symbol only, e.g., ETH, USDT, BTC). + +4. **Prompt for Missing Information**: + - If any required detail is missing (amount, address, token names), ask the user to provide it before giving the final response. + +5. **Output Format (Only When All Details Are Available)**: + - If the user intends to **send tokens**, return: + ''' + send + {amount} + {address} + ''' + - If the user intends to **swap tokens**, return: + ''' + swap + {amount} + {token1} + {token2} + ''' + +The output should be exactly in the format above, with no additional information. +If details are missing, do not proceedβ€”ask the user to provide them first. +`; diff --git a/backend/package-lock.json b/backend/package-lock.json index b8d945f..b74a5ed 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -19,6 +19,7 @@ "express": "^4.21.2", "groq-sdk": "^0.12.0", "moralis": "^2.27.2", + "nodemon": "^3.1.9", "openai": "^4.80.0", "tsconfig-paths": "^4.2.0", "viem": "2.21.53" @@ -1139,6 +1140,18 @@ "node": ">=18.0.0" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1159,6 +1172,11 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, "node_modules/base-x": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", @@ -1183,6 +1201,17 @@ } ] }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", @@ -1216,6 +1245,26 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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==", + "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", @@ -1342,6 +1391,29 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/cipher-base": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", @@ -1365,6 +1437,11 @@ "node": ">= 0.8" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1806,6 +1883,17 @@ "url": "https://opencollective.com/express" } }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", @@ -1888,6 +1976,19 @@ "node": ">= 0.6" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1931,6 +2032,17 @@ "node": ">= 0.4" } }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -1969,6 +2081,14 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -2076,6 +2196,11 @@ } ] }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2089,6 +2214,36 @@ "node": ">= 0.10" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-hex-prefixed": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", @@ -2098,6 +2253,14 @@ "npm": ">=3" } }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isows": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", @@ -2250,6 +2413,17 @@ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -2360,6 +2534,57 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/nodemon": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", + "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", @@ -2506,6 +2731,17 @@ "node": ">=0.12" } }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2523,6 +2759,11 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", @@ -2589,6 +2830,17 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -2681,6 +2933,17 @@ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -2816,6 +3079,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -2852,6 +3126,17 @@ "npm": ">=3" } }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/swr": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.0.tgz", @@ -2875,6 +3160,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2883,6 +3179,14 @@ "node": ">=0.6" } }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -2931,6 +3235,11 @@ "node": ">=14.17" } }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", diff --git a/backend/package.json b/backend/package.json index 90de0e3..f27e83e 100644 --- a/backend/package.json +++ b/backend/package.json @@ -15,6 +15,7 @@ "express": "^4.21.2", "groq-sdk": "^0.12.0", "moralis": "^2.27.2", + "nodemon": "^3.1.9", "openai": "^4.80.0", "tsconfig-paths": "^4.2.0", "viem": "2.21.53" diff --git a/backend/server.js b/backend/server.js index e9032fc..db3e459 100644 --- a/backend/server.js +++ b/backend/server.js @@ -3,10 +3,10 @@ dotenv.config(); import express from "express"; import cors from "cors"; -import { SYSTEM_PROMPT } from "./config/prompt.js"; +import { SYSTEM_PROMPT_TRADE,SYSTEM_PROMPT_GENERAL } from "./config/prompt.js"; import { createFoundryUpTools } from "./tools/index.js"; import { generateText } from "ai"; -import { createOpenAI as createGroq } from '@ai-sdk/openai'; +import { createOpenAI as createGroq } from "@ai-sdk/openai"; const app = express(); const PORT = process.env.PORT || 5000; @@ -15,24 +15,22 @@ const PORT = process.env.PORT || 5000; app.use(cors()); // Enable CORS for frontend communication app.use(express.json()); // Parse JSON request bodies +app.get("/health", (req, res) => { + res.send("Server is running successfully..."); +}); -app.get("/health",(req,res)=>{ - res.send("Server is running successfully...") -}) - -// API endpoint to handle requests from the frontend +// API endpoint to handle trading insights requests app.post("/api/generate-insights", async (req, res) => { try { - - const { prompt, balances } = req.body; // Get the prompt from the frontend - console.log("balance backedn 1 : , ", balances) - const tools = createFoundryUpTools({ - balances - }); + const { prompt, balances } = req.body; + console.log("Balance backend 1:", balances); + + const tools = createFoundryUpTools({ balances }); if (!prompt) { return res.status(400).json({ error: "Prompt is required" }); } + const groq = createGroq({ baseURL: "https://api.groq.com/openai/v1", apiKey: process.env.GROQ_API_KEY, @@ -41,11 +39,10 @@ app.post("/api/generate-insights", async (req, res) => { const { text } = await generateText({ model: groq("llama3-70b-8192"), maxSteps: 10, - system: SYSTEM_PROMPT, + system: SYSTEM_PROMPT_TRADE, tools, - prompt: - "i have some tokens give me insights on trading them i dont have a high risk apetite so kepe that in mind", - onStepFinish({ text, toolCalls, toolResults, finishReason, usage }) { + prompt, + onStepFinish({ toolCalls, toolResults }) { if (toolCalls[0]?.toolName) { console.log(`[${toolCalls[0].toolName}]`, toolResults[0]?.result); } @@ -53,53 +50,43 @@ app.post("/api/generate-insights", async (req, res) => { }); console.log("Output:", text); - let response = text + " uniswap"; // Modify the response as needed - console.log("Response:", response); - - // Send the response back to the frontend - res.json({ response }); + res.json({ response: text }); } catch (error) { console.error("Error generating insights:", error); res.status(500).json({ error: "Failed to generate insights" }); } }); +// New API endpoint for general AI chat without tools +app.post("/api/generalchat", async (req, res) => { + try { + const { prompt } = req.body; -// Start the server -app.listen(PORT, () => { - console.log(`Server is running on PORT => ${PORT}`); -}); - - - - -/**====================== - * Fetching Data Test - *========================**/ - -// const getData = async (pairAddress) => { -// const poolAddress = pairAddress; -// const url = `https://api.dexscreener.com/latest/dex/pairs/ethereum/${poolAddress}`; + if (!prompt) { + return res.status(400).json({ error: "Prompt is required" }); + } -// try { -// const response = await fetch(url); -// if (!response.ok) { -// throw new Error("Network response was not ok " + response.statusText); -// } -// const data = await response.json(); -// console.log(data.pair); // Process your data here //Change this as it gives more detailed Data** -// return data.pair; -// } catch (error) { -// console.error("Fetch error: ", error); -// } -// } + const groq = createGroq({ + baseURL: "https://api.groq.com/openai/v1", + apiKey: process.env.GROQ_API_KEY, + }); -// getData("0x231B7589426Ffe1b75405526fC32aC09D44364c4") -// console.log("======================================") -// getData("0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc") -// console.log("======================================") + const { text } = await generateText({ + model: groq("llama3-70b-8192"), + maxSteps: 10, + system: SYSTEM_PROMPT_GENERAL, + prompt, + }); -// getData("0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11") -// console.log("======================================") + console.log("General Chat Output:", text); + res.json({ response: text }); + } catch (error) { + console.error("Error generating general chat response:", error); + res.status(500).json({ error: "Failed to generate response" }); + } +}); -// getData("0xBb2b8038a1640196FbE3e38816F3e67Cba72D940") +// Start the server +app.listen(PORT, () => { + console.log(`Server is running on PORT => ${PORT}`); +}); \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c24c8fa..54d0e00 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -24,7 +24,8 @@ "react-router-dom": "^7.1.3", "tailwindcss": "^3.4.17", "tsconfig-paths": "^4.2.0", - "viem": "^2.22.14" + "viem": "^2.22.14", + "web3": "^4.16.0" }, "devDependencies": { "@eslint/js": "^9.17.0", @@ -42,16 +43,15 @@ "node_modules/@adraffy/ens-normalize": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" }, "node_modules/@ai-sdk/openai": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.1.3.tgz", - "integrity": "sha512-U+LqNAyB5/4KmOrU1U8NEQMLlLTzKhuVkpKo8xvlpz662TnOBxyGjGnf8Kbqw7VXyeHg0tpuHincolOuvnpynA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.3.4.tgz", + "integrity": "sha512-BOw7dQpiTlpaqi1u/NU4Or2+jA6buzl6GOUuYyu/uFI7dxJs1zPkY8IjAp4DQhi+kQGH6GGbEPw0LkIbeK4BVA==", "dependencies": { - "@ai-sdk/provider": "1.0.6", - "@ai-sdk/provider-utils": "2.1.3" + "@ai-sdk/provider": "1.1.0", + "@ai-sdk/provider-utils": "2.2.1" }, "engines": { "node": ">=18" @@ -61,9 +61,9 @@ } }, "node_modules/@ai-sdk/provider": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.0.6.tgz", - "integrity": "sha512-hwj/gFNxpDgEfTaYzCYoslmw01IY9kWLKl/wf8xuPvHtQIzlfXWmmUwc8PnCwxyt8cKzIuV0dfUghCf68HQ0SA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.0.tgz", + "integrity": "sha512-0M+qjp+clUD0R1E5eWQFhxEvWLNaOtGQRUaBn8CUABnSKredagq92hUS9VjOzGsTm37xLfpaxl97AVtbeOsHew==", "dependencies": { "json-schema": "^0.4.0" }, @@ -72,12 +72,11 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.1.3.tgz", - "integrity": "sha512-NamxUnRCnG7aSnYhnhX5in5KZtwIIrafURABuAmrV3mGT5YZPzqfsXdnsXY0GbzDgbl+A7R1IPxrA4at2fU/XQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.1.tgz", + "integrity": "sha512-BuExLp+NcpwsAVj1F4bgJuQkSqO/+roV9wM7RdIO+NVrcT8RBUTdXzf5arHt5T58VpK7bZyB2V9qigjaPHE+Dg==", "dependencies": { - "@ai-sdk/provider": "1.0.6", - "eventsource-parser": "^3.0.0", + "@ai-sdk/provider": "1.1.0", "nanoid": "^3.3.8", "secure-json-parse": "^2.7.0" }, @@ -85,12 +84,7 @@ "node": ">=18" }, "peerDependencies": { - "zod": "^3.0.0" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } + "zod": "^3.23.8" } }, "node_modules/@ai-sdk/react": { @@ -210,7 +204,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -223,7 +216,6 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -245,7 +237,6 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -256,32 +247,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -297,14 +286,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -314,13 +302,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.8", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -335,7 +322,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -349,7 +335,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", @@ -363,11 +348,10 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -377,7 +361,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -387,7 +370,6 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -397,33 +379,30 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -437,7 +416,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -453,7 +431,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -465,32 +442,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -503,17 +478,15 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -523,14 +496,13 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "aix" @@ -540,14 +512,13 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -557,14 +528,13 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -574,14 +544,13 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" @@ -591,14 +560,13 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -608,14 +576,13 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -625,14 +592,13 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -642,14 +608,13 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" @@ -659,14 +624,13 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -676,14 +640,13 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -693,14 +656,13 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -710,14 +672,13 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", "cpu": [ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -727,14 +688,13 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", "cpu": [ "mips64el" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -744,14 +704,13 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -761,14 +720,13 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", "cpu": [ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -778,14 +736,13 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", "cpu": [ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -795,14 +752,13 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -812,14 +768,13 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -829,14 +784,13 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "netbsd" @@ -846,14 +800,13 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -863,14 +816,13 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "openbsd" @@ -880,14 +832,13 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "sunos" @@ -897,14 +848,13 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -914,14 +864,13 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -931,14 +880,13 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -948,11 +896,10 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -971,7 +918,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -984,19 +930,17 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", - "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.5", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1004,12 +948,20 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -1018,11 +970,10 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1046,7 +997,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -1055,44 +1005,52 @@ } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", - "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, - "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -1102,7 +1060,6 @@ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -1116,7 +1073,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1130,7 +1086,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1140,11 +1095,10 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1157,7 +1111,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1174,7 +1127,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1188,7 +1140,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1197,7 +1148,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1205,14 +1155,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1222,7 +1170,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", "dependencies": { "@noble/hashes": "1.3.2" }, @@ -1234,7 +1181,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", "engines": { "node": ">= 16" }, @@ -1246,7 +1192,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1259,7 +1204,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -1268,7 +1212,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1345,273 +1288,266 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", + "integrity": "sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz", + "integrity": "sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz", + "integrity": "sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz", + "integrity": "sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz", + "integrity": "sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz", + "integrity": "sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz", + "integrity": "sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz", + "integrity": "sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz", + "integrity": "sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz", + "integrity": "sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz", + "integrity": "sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==", "cpu": [ "loong64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz", + "integrity": "sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz", + "integrity": "sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz", + "integrity": "sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==", "cpu": [ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz", + "integrity": "sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==", "cpu": [ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz", + "integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz", + "integrity": "sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz", + "integrity": "sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz", + "integrity": "sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz", + "integrity": "sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -1709,9 +1645,9 @@ } }, "node_modules/@splinetool/runtime": { - "version": "1.9.59", - "resolved": "https://registry.npmjs.org/@splinetool/runtime/-/runtime-1.9.59.tgz", - "integrity": "sha512-EX+/4xCMAr22dR7ZgR+HNVc0ZwDO8y9CxlKJMqP2BEUP3oe5RAouTyn5uUHgOEHQ1JQ0VSV8vARfdigQ/hyI7w==", + "version": "1.9.82", + "resolved": "https://registry.npmjs.org/@splinetool/runtime/-/runtime-1.9.82.tgz", + "integrity": "sha512-qfNTnezSGuh7nPUPgRVfpH+g2FYywvYmHzOLmp8dahMxuY7HshOwLEhKVapaaWxIpq4h/WweU83pBWb48bwA8A==", "peer": true, "dependencies": { "on-change": "^4.0.0", @@ -1723,7 +1659,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -1737,7 +1672,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -1747,18 +1681,16 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -1766,8 +1698,7 @@ "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, "node_modules/@types/diff-match-patch": { "version": "1.0.36", @@ -1775,24 +1706,21 @@ "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==" }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true }, "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" + "dev": true }, "node_modules/@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", "dependencies": { "undici-types": "~6.19.2" } @@ -1810,15 +1738,13 @@ "version": "15.7.14", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/react": { - "version": "18.3.18", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", - "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", "dev": true, - "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1829,17 +1755,23 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", "dev": true, - "license": "MIT", "peerDependencies": { "@types/react": "^18.0.0" } }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx-self": "^7.25.9", @@ -1886,11 +1818,10 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1903,7 +1834,6 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1911,8 +1841,7 @@ "node_modules/aes-js": { "version": "4.0.0-beta.5", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" }, "node_modules/agentkeepalive": { "version": "4.6.0", @@ -1992,7 +1921,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2008,7 +1936,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -2020,7 +1947,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2034,14 +1960,12 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2053,22 +1977,19 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" + "dev": true }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -2085,7 +2006,6 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2106,7 +2026,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2127,7 +2046,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2146,7 +2064,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2165,7 +2082,6 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2182,7 +2098,6 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", @@ -2199,15 +2114,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "funding": [ { "type": "opencollective", @@ -2222,13 +2146,12 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -2245,8 +2168,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2268,14 +2189,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", "engines": { "node": ">=8" }, @@ -2286,15 +2205,13 @@ "node_modules/blurhash": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", - "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==", - "license": "MIT" + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2304,7 +2221,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2313,9 +2229,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -2330,7 +2246,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -2348,8 +2263,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -2364,11 +2277,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -2378,14 +2289,12 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "dev": true, - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2399,7 +2308,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -2408,15 +2316,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", "funding": [ { "type": "opencollective", @@ -2430,15 +2337,13 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2454,7 +2359,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2478,7 +2382,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2490,7 +2393,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2501,8 +2403,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/combined-stream": { "version": "1.0.8", @@ -2519,7 +2420,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", "engines": { "node": ">= 6" } @@ -2528,30 +2428,45 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/cookie": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "license": "MIT", "engines": { "node": ">=18" } }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dependencies": { + "node-fetch": "^2.7.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==", - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2565,7 +2480,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -2577,15 +2491,13 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2603,7 +2515,6 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2621,7 +2532,6 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -2639,7 +2549,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2656,15 +2565,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2682,7 +2588,6 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2714,8 +2619,7 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "license": "Apache-2.0" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/diff-match-patch": { "version": "1.0.5", @@ -2725,15 +2629,13 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2756,8 +2658,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -2770,27 +2670,23 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", - "license": "ISC" + "version": "1.5.128", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", + "integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/es-abstract": { - "version": "1.23.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", - "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", @@ -2803,10 +2699,11 @@ "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -2827,9 +2724,12 @@ "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -2851,8 +2751,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2861,8 +2759,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2872,7 +2768,6 @@ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -2896,11 +2791,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "license": "MIT", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dependencies": { "es-errors": "^1.3.0" }, @@ -2909,28 +2802,29 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "license": "MIT", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, - "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -2938,7 +2832,6 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", @@ -2952,12 +2845,11 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -2965,38 +2857,37 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", "engines": { "node": ">=6" } @@ -3006,7 +2897,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3015,22 +2905,22 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -3038,7 +2928,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -3075,11 +2965,10 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -3108,11 +2997,10 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3121,21 +3009,19 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", - "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz", + "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==", "dev": true, - "license": "MIT", "peerDependencies": { "eslint": ">=8.40" } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3152,7 +3038,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3165,7 +3050,6 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", @@ -3183,7 +3067,6 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3196,7 +3079,6 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3209,7 +3091,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3219,11 +3100,76 @@ "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/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/ethers": { "version": "6.13.5", "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", @@ -3238,7 +3184,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -3286,9 +3231,9 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/eventsource-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", - "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", + "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", "engines": { "node": ">=18.0.0" } @@ -3297,20 +3242,18 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "license": "MIT", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "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.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -3320,7 +3263,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3332,21 +3274,18 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", - "license": "ISC", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dependencies": { "reusify": "^1.0.4" } @@ -3356,7 +3295,6 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -3368,7 +3306,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3381,7 +3318,6 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3398,7 +3334,6 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3408,11 +3343,10 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true, - "license": "ISC" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true }, "node_modules/follow-redirects": { "version": "1.15.9", @@ -3434,22 +3368,25 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "license": "MIT", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "license": "ISC", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -3460,12 +3397,13 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -3493,7 +3431,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "license": "MIT", "engines": { "node": "*" }, @@ -3507,7 +3444,6 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -3520,7 +3456,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3530,7 +3465,6 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -3551,7 +3485,6 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3561,28 +3494,25 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", - "dev": true, - "license": "MIT", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3591,12 +3521,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -3613,7 +3554,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -3633,7 +3573,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3645,7 +3584,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -3654,7 +3592,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3666,11 +3603,10 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -3683,7 +3619,6 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -3699,8 +3634,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3713,7 +3646,6 @@ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3726,7 +3658,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -3735,8 +3666,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -3749,7 +3678,6 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, @@ -3764,8 +3692,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3777,8 +3703,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -3793,7 +3717,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -3814,17 +3737,15 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3841,17 +3762,20 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -3861,12 +3785,26 @@ "node": ">= 0.4" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -3880,13 +3818,16 @@ } }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, - "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3900,7 +3841,6 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, - "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, @@ -3915,7 +3855,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -3924,13 +3863,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -3944,8 +3882,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3957,7 +3893,6 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -3973,7 +3908,6 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -3991,7 +3925,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -4007,7 +3940,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4017,7 +3949,6 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -4032,19 +3963,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4057,7 +3988,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4070,7 +4000,6 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4082,7 +4011,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4092,7 +4020,6 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -4108,8 +4035,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -4128,7 +4053,6 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4141,7 +4065,6 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -4157,7 +4080,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -4174,7 +4096,6 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -4191,8 +4112,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -4208,7 +4127,6 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4217,13 +4135,12 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, - "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4237,7 +4154,6 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -4253,14 +4169,20 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "peerDependencies": { + "ws": "*" + } }, "node_modules/isows": { "version": "1.0.6", @@ -4277,17 +4199,16 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", - "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", "has-symbols": "^1.1.0", - "reflect.getprototypeof": "^1.0.8", "set-function-name": "^2.0.2" }, "engines": { @@ -4298,7 +4219,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -4313,7 +4233,6 @@ "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -4321,15 +4240,13 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4342,7 +4259,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -4354,8 +4270,7 @@ "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" + "dev": true }, "node_modules/json-schema": { "version": "0.4.0", @@ -4366,21 +4281,18 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4420,7 +4332,6 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -4436,7 +4347,6 @@ "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" } @@ -4446,7 +4356,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4459,7 +4368,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", "engines": { "node": ">=14" }, @@ -4470,15 +4378,13 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4492,21 +4398,18 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -4519,7 +4422,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -4528,7 +4430,6 @@ "version": "0.469.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.469.0.tgz", "integrity": "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==", - "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -4537,8 +4438,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4547,7 +4446,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", "engines": { "node": ">= 8" } @@ -4556,7 +4454,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -4589,7 +4486,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4609,7 +4505,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -4617,14 +4512,12 @@ "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==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -4632,16 +4525,15 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4653,8 +4545,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-domexception": { "version": "1.0.0", @@ -4696,14 +4587,12 @@ "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "license": "MIT" + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4712,7 +4601,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4721,7 +4609,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4730,17 +4617,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4753,7 +4638,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -4763,7 +4647,6 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4780,15 +4663,15 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -4799,7 +4682,6 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4818,7 +4700,6 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4836,7 +4717,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/on-change/-/on-change-4.0.2.tgz", "integrity": "sha512-cMtCyuJmTx/bg2HCpHo3ZLeF7FZnBOapLqZHr2AlLeJ5Ul0Zu2mUJJz051Fdwu/Et2YW04ZD+TtU+gVy0ACNCA==", - "license": "MIT", "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -4846,9 +4726,9 @@ } }, "node_modules/openai": { - "version": "4.80.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.80.1.tgz", - "integrity": "sha512-+6+bbXFwbIE88foZsBEt36bPkgZPdyFN82clAXG61gnHb2gXdZApDyRrcAHqEtpYICywpqaNo57kOm9dtnb7Cw==", + "version": "4.90.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.90.0.tgz", + "integrity": "sha512-YCuHMMycqtCg1B8G9ezkOF0j8UnBWD3Al/zYaelpuXwU1yhCEv+Y4n9G20MnyGy6cH4GsFwOMrgstQ+bgG1PtA==", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -4875,9 +4755,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.74", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.74.tgz", - "integrity": "sha512-HMwEkkifei3L605gFdV+/UwtpxP6JSzM+xFk2Ia6DNFSwSVBRh9qp5Tgf4lNFOMfPVuU0WnkcWpXZpgn5ufO4A==", + "version": "18.19.84", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", + "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", "dependencies": { "undici-types": "~5.26.4" } @@ -4892,7 +4772,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -4905,10 +4784,27 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz", + "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==", "funding": [ { "type": "github", @@ -4963,7 +4859,6 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -4979,7 +4874,6 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -4993,15 +4887,13 @@ "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -5014,7 +4906,6 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -5023,7 +4914,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", "engines": { "node": ">=8" } @@ -5031,14 +4921,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -5053,20 +4941,17 @@ "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5078,34 +4963,30 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "license": "MIT", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "engines": { "node": ">= 6" } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "funding": [ { "type": "opencollective", @@ -5120,9 +5001,8 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5134,7 +5014,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -5151,7 +5030,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -5171,7 +5049,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -5200,7 +5077,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" @@ -5235,7 +5111,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -5250,7 +5125,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5262,15 +5136,13 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -5280,7 +5152,6 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -5292,7 +5163,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -5314,14 +5184,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -5333,7 +5201,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -5346,14 +5213,12 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/react-merge-refs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-2.1.1.tgz", "integrity": "sha512-jLQXJ/URln51zskhgppGJ2ub7b2WFKGq3cl3NYKtlHoTG+dN2q7EzWrn3hN3EgPsTMvpR9tpq5ijdp7YwFZkag==", - "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" @@ -5364,16 +5229,14 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.3.tgz", - "integrity": "sha512-EezYymLY6Guk/zLQ2vRA8WvdUhWFEj5fcE3RfWihhxXBW7+cd1LsIiA3lmx+KCmneAGQuyBv820o44L2+TtkSA==", - "license": "MIT", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.4.1.tgz", + "integrity": "sha512-Vmizn9ZNzxfh3cumddqv3kLOKvc7AskUT0dC1prTabhiEi0U4A33LmkDOJ79tXaeSqCqMBXBU/ySX88W85+EUg==", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^1.0.1", @@ -5394,12 +5257,11 @@ } }, "node_modules/react-router-dom": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.3.tgz", - "integrity": "sha512-qQGTE+77hleBzv9SIUIkGRvuFBQGagW+TQKy53UTZAO/3+YFNBYvRsNIZ1GT17yHbc63FylMOdS+m3oUriF1GA==", - "license": "MIT", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.4.1.tgz", + "integrity": "sha512-L3/4tig0Lvs6m6THK0HRV4eHUdpx0dlJasgCxXKnavwhh4tKYgpuZk75HRYNoRKDyDWi9QgzGXsQ1oQSBlWpAA==", "dependencies": { - "react-router": "7.1.3" + "react-router": "7.4.1" }, "engines": { "node": ">=20.0.0" @@ -5413,7 +5275,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -5422,7 +5283,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -5431,19 +5291,18 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", - "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { @@ -5454,15 +5313,16 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -5477,7 +5337,6 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -5495,29 +5354,26 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz", + "integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==", "dev": true, - "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -5527,25 +5383,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", + "@rollup/rollup-android-arm-eabi": "4.38.0", + "@rollup/rollup-android-arm64": "4.38.0", + "@rollup/rollup-darwin-arm64": "4.38.0", + "@rollup/rollup-darwin-x64": "4.38.0", + "@rollup/rollup-freebsd-arm64": "4.38.0", + "@rollup/rollup-freebsd-x64": "4.38.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.38.0", + "@rollup/rollup-linux-arm-musleabihf": "4.38.0", + "@rollup/rollup-linux-arm64-gnu": "4.38.0", + "@rollup/rollup-linux-arm64-musl": "4.38.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.38.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-gnu": "4.38.0", + "@rollup/rollup-linux-riscv64-musl": "4.38.0", + "@rollup/rollup-linux-s390x-gnu": "4.38.0", + "@rollup/rollup-linux-x64-gnu": "4.38.0", + "@rollup/rollup-linux-x64-musl": "4.38.0", + "@rollup/rollup-win32-arm64-msvc": "4.38.0", + "@rollup/rollup-win32-ia32-msvc": "4.38.0", + "@rollup/rollup-win32-x64-msvc": "4.38.0", "fsevents": "~2.3.2" } }, @@ -5567,7 +5424,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -5577,7 +5433,6 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -5592,12 +5447,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -5614,7 +5483,6 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } @@ -5629,7 +5497,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -5638,21 +5505,17 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "license": "MIT", "peer": true }, "node_modules/set-cookie-parser": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -5670,7 +5533,6 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -5681,11 +5543,29 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "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==", - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -5697,7 +5577,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", "engines": { "node": ">=8" } @@ -5707,7 +5586,6 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -5727,7 +5605,6 @@ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -5744,7 +5621,6 @@ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -5763,7 +5639,6 @@ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -5782,7 +5657,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", "engines": { "node": ">=14" }, @@ -5794,7 +5668,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5803,7 +5676,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -5821,7 +5693,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5835,7 +5706,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -5843,14 +5713,12 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5863,7 +5731,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -5891,7 +5758,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -5902,7 +5768,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -5924,7 +5789,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -5943,7 +5807,6 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5960,7 +5823,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -5976,7 +5838,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -5988,7 +5849,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6006,7 +5866,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -6018,7 +5877,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -6041,7 +5899,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6053,7 +5910,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6062,9 +5918,9 @@ } }, "node_modules/swr": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.0.tgz", - "integrity": "sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", "dependencies": { "dequal": "^2.0.3", "use-sync-external-store": "^1.4.0" @@ -6077,7 +5933,6 @@ "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -6114,7 +5969,6 @@ "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -6134,7 +5988,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -6143,7 +5996,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -6165,14 +6017,12 @@ "node_modules/thumbhash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/thumbhash/-/thumbhash-0.1.1.tgz", - "integrity": "sha512-kH5pKeIIBPQXAOni2AiY/Cu/NKdkFREdpH+TLdM0g6WA7RriCv0kPLgP731ady67MhTAqrVG/4mnEeibVuCJcg==", - "license": "MIT" + "integrity": "sha512-kH5pKeIIBPQXAOni2AiY/Cu/NKdkFREdpH+TLdM0g6WA7RriCv0kPLgP731ady67MhTAqrVG/4mnEeibVuCJcg==" }, "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==", - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -6188,8 +6038,7 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/tsconfig-paths": { "version": "4.2.0", @@ -6207,21 +6056,18 @@ "node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/turbo-stream": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -6234,7 +6080,6 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -6249,7 +6094,6 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", @@ -6269,7 +6113,6 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -6291,7 +6134,6 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -6307,12 +6149,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", @@ -6329,13 +6183,12 @@ "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -6350,10 +6203,9 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -6367,29 +6219,39 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/viem": { - "version": "2.22.14", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.22.14.tgz", - "integrity": "sha512-HfWnMmSPHNY+F3+I01ZKvIbwdn8qZUEhV/rzBi094F6gmqHA1KBXdF7P9po5/OYkvBjzxduUlLBgownyZkV+uA==", + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.24.2.tgz", + "integrity": "sha512-lUGoTHhMYlR4ktQiOrbTPmYvrMn3jKUdn2PSmB9QLICxnsQJxMkSCeGRoJFq7hi7K6PCMQgAyLMR/9J1key5cg==", "funding": [ { "type": "github", @@ -6403,8 +6265,8 @@ "@scure/bip39": "1.5.4", "abitype": "1.0.8", "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" + "ox": "0.6.9", + "ws": "8.18.1" }, "peerDependencies": { "typescript": ">=5.0.4" @@ -6441,15 +6303,14 @@ } }, "node_modules/vite": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz", - "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", + "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", "dev": true, - "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" @@ -6520,6 +6381,354 @@ "node": ">= 14" } }, + "node_modules/web3": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-4.16.0.tgz", + "integrity": "sha512-SgoMSBo6EsJ5GFCGar2E/pR2lcR/xmUSuQ61iK6yDqzxmm42aPPxSqZfJz2z/UCR6pk03u77pU8TGV6lgMDdIQ==", + "dependencies": { + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth": "^4.11.1", + "web3-eth-abi": "^4.4.1", + "web3-eth-accounts": "^4.3.1", + "web3-eth-contract": "^4.7.2", + "web3-eth-ens": "^4.4.0", + "web3-eth-iban": "^4.0.7", + "web3-eth-personal": "^4.1.0", + "web3-net": "^4.1.0", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-rpc-providers": "^1.0.0-rc.4", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-4.7.1.tgz", + "integrity": "sha512-9KSeASCb/y6BG7rwhgtYC4CvYY66JfkmGNEYb7q1xgjt9BWfkf09MJPaRyoyT5trdOxYDHkT9tDlypvQWaU8UQ==", + "dependencies": { + "web3-errors": "^1.3.1", + "web3-eth-accounts": "^4.3.1", + "web3-eth-iban": "^4.0.7", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + }, + "optionalDependencies": { + "web3-providers-ipc": "^4.0.7" + } + }, + "node_modules/web3-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/web3-errors/-/web3-errors-1.3.1.tgz", + "integrity": "sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ==", + "dependencies": { + "web3-types": "^1.10.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-4.11.1.tgz", + "integrity": "sha512-q9zOkzHnbLv44mwgLjLXuyqszHuUgZWsQayD2i/rus2uk0G7hMn11bE2Q3hOVnJS4ws4VCtUznlMxwKQ+38V2w==", + "dependencies": { + "setimmediate": "^1.0.5", + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth-abi": "^4.4.1", + "web3-eth-accounts": "^4.3.1", + "web3-net": "^4.1.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-4.4.1.tgz", + "integrity": "sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg==", + "dependencies": { + "abitype": "0.7.1", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-abi/node_modules/abitype": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", + "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", + "peerDependencies": { + "typescript": ">=4.9.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/web3-eth-accounts": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-4.3.1.tgz", + "integrity": "sha512-rTXf+H9OKze6lxi7WMMOF1/2cZvJb2AOnbNQxPhBDssKOllAMzLhg1FbZ4Mf3lWecWfN6luWgRhaeSqO1l+IBQ==", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "crc-32": "^1.2.2", + "ethereum-cryptography": "^2.0.0", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-contract": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-4.7.2.tgz", + "integrity": "sha512-3ETqs2pMNPEAc7BVY/C3voOhTUeJdkf2aM3X1v+edbngJLHAxbvxKpOqrcO0cjXzC4uc2Q8Zpf8n8zT5r0eLnA==", + "dependencies": { + "@ethereumjs/rlp": "^5.0.2", + "web3-core": "^4.7.1", + "web3-errors": "^1.3.1", + "web3-eth": "^4.11.1", + "web3-eth-abi": "^4.4.1", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-contract/node_modules/@ethereumjs/rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/web3-eth-ens": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-4.4.0.tgz", + "integrity": "sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==", + "dependencies": { + "@adraffy/ens-normalize": "^1.8.8", + "web3-core": "^4.5.0", + "web3-errors": "^1.2.0", + "web3-eth": "^4.8.0", + "web3-eth-contract": "^4.5.0", + "web3-net": "^4.1.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-4.0.7.tgz", + "integrity": "sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==", + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7", + "web3-validator": "^2.0.3" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-personal": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-4.1.0.tgz", + "integrity": "sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==", + "dependencies": { + "web3-core": "^4.6.0", + "web3-eth": "^4.9.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-net": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-4.1.0.tgz", + "integrity": "sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==", + "dependencies": { + "web3-core": "^4.4.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.6.0", + "web3-utils": "^4.3.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-http": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-4.2.0.tgz", + "integrity": "sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==", + "dependencies": { + "cross-fetch": "^4.0.0", + "web3-errors": "^1.3.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-4.0.7.tgz", + "integrity": "sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==", + "optional": true, + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-4.0.8.tgz", + "integrity": "sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==", + "dependencies": { + "@types/ws": "8.5.3", + "isomorphic-ws": "^5.0.0", + "web3-errors": "^1.2.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "ws": "^8.17.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-methods": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.3.0.tgz", + "integrity": "sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==", + "dependencies": { + "web3-core": "^4.4.0", + "web3-types": "^1.6.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-providers": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/web3-rpc-providers/-/web3-rpc-providers-1.0.0-rc.4.tgz", + "integrity": "sha512-PXosCqHW0EADrYzgmueNHP3Y5jcSmSwH+Dkqvn7EYD0T2jcsdDAIHqk6szBiwIdhumM7gv9Raprsu/s/f7h1fw==", + "dependencies": { + "web3-errors": "^1.3.1", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.10.0", + "web3-utils": "^4.3.3", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-types": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/web3-types/-/web3-types-1.10.0.tgz", + "integrity": "sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw==", + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-4.3.3.tgz", + "integrity": "sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw==", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "eventemitter3": "^5.0.1", + "web3-errors": "^1.3.1", + "web3-types": "^1.10.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/web3-validator/-/web3-validator-2.0.6.tgz", + "integrity": "sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "util": "^0.12.5", + "web3-errors": "^1.2.0", + "web3-types": "^1.6.0", + "zod": "^3.21.4" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -6538,7 +6747,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -6554,7 +6762,6 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -6574,7 +6781,6 @@ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", @@ -6602,7 +6808,6 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -6617,16 +6822,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", - "dev": true, - "license": "MIT", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -6642,7 +6846,6 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6651,7 +6854,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -6669,7 +6871,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6686,7 +6887,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", "engines": { "node": ">=8" } @@ -6694,14 +6894,12 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6715,7 +6913,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6727,7 +6924,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", "engines": { "node": ">=12" }, @@ -6736,9 +6932,9 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "engines": { "node": ">=10.0.0" }, @@ -6759,14 +6955,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", - "license": "ISC", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", "bin": { "yaml": "bin.mjs" }, @@ -6779,7 +6973,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6788,18 +6981,17 @@ } }, "node_modules/zod": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", - "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", - "peer": true, + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/zod-to-json-schema": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", - "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", "peerDependencies": { "zod": "^3.24.1" } diff --git a/frontend/package.json b/frontend/package.json index 578f515..6e939df 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,8 @@ "react-router-dom": "^7.1.3", "tailwindcss": "^3.4.17", "tsconfig-paths": "^4.2.0", - "viem": "^2.22.14" + "viem": "^2.22.14", + "web3": "^4.16.0" }, "devDependencies": { "@eslint/js": "^9.17.0", diff --git a/frontend/src/components/GeneralChat.jsx b/frontend/src/components/GeneralChat.jsx index a417253..5ae184c 100644 --- a/frontend/src/components/GeneralChat.jsx +++ b/frontend/src/components/GeneralChat.jsx @@ -19,6 +19,13 @@ const IntentAI = () => { const [outputPrompt, setOutputPrompt] = useState(""); //4 words const [contractAddress, setContractAddress] = useState(''); const [contractABI, setContractABI] = useState(''); + const [account, setAccount] = useState(""); + + const [aiResponse, setAiResponse] = useState(""); + const [amountTotrade, setAmountToTrade] = useState(null); + const [addressfirstTokenToTrade, setAddressFirstTokenToTrade] = useState(null); + const [isApproved, setIsApproved] = useState(false); + const [balances, setBalances] = useState({}); useEffect(() => { if (chatContainerRef.current) { @@ -26,6 +33,76 @@ const IntentAI = () => { } }, [messages]); + const handleConnectWallet = async () => { + try { + const { account } = await connectWallet(); + setAccount(account); + } catch (error) { + console.error("Wallet connection failed:", error); + } + }; + + const handleSend = async () => { + console.log("handleSend triggered with input:", input); + let balancesObj = {}; + try { + balancesObj = await fetchTokenBalances(account); + } catch (error) { + console.error("Error fetching balances:", error); + } + console.log("User Token Balances:", balancesObj); + if (!input.trim()) { + console.warn("Input is empty"); + return; + } + // Add user input to chat messages + setMessages((prev) => [...prev, { type: "user", content: input }]); + if (input.toLowerCase() === "confirm") { + // If already approved and amountTotrade exists, execute trade + if (amountTotrade && isApproved) { + try { + await commandToTradeStart(aiResponse); + } catch (error) { + console.error("Trade command failed:", error); + } + } + setMessages((prev) => [ + ...prev, + { type: "bot", content: "Please wait for transaction to be done...." }, + ]); + return; + } + setInput(""); + setIsLoading(true); + try { + const response = await fetch("http://localhost:5000/api/generalchat", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ prompt: input, balances: balancesObj }), + }); + if (!response.ok) { + setMessages((prev) => [ + ...prev, + { + type: "bot", + content: "Servers are busy. Please try again in 30 seconds.", + }, + ]); + setIsLoading(false); + return; + } + const data = await response.json(); + console.log("Response from backend:", data); + setAiResponse(data.response); + const [fromToken, toToken, amount, platform] = data.response.split(" "); + const responseForUser = data.response; + setMessages((prev) => [...prev, { type: "bot", content: responseForUser }]); + } catch (error) { + console.error("Error fetching insights:", error); + } + setIsLoading(false); + }; + const simulateTyping = async (message) => { setIsLoading(true); await new Promise(resolve => setTimeout(resolve, 500 + Math.random() * 500)); @@ -45,15 +122,6 @@ const IntentAI = () => { ]); }; - const handleSend = async () => { - if (!input.trim()) return; - setMessages(prev => [...prev, { type: 'user', content: input }]); - setInput(''); - await simulateTyping({ - content: `Here's a sample response for your message in ${activeTab} mode.` - }); - }; - const handleKeyPress = (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); From 7ddd76ff4d737ee2b7c7fe3b1354db56750c487a Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 17:09:05 +0530 Subject: [PATCH 25/71] changes --- README.md | 4 +- {Python => backend/Python}/Algorithms/DCA.py | 0 {Python => backend/Python}/Algorithms/MA.py | 0 {Python => backend/Python}/Algorithms/MACD.py | 0 {Python => backend/Python}/Algorithms/RSI.py | 0 .../Python}/Decisions/DCA_dis.py | 0 .../Python}/Decisions/MACD_dis.py | 0 .../Python}/Decisions/MA_dis.py | 0 .../Python}/Decisions/RSI_dis.py | 0 backend/Python/Decisions/RSI_server.py | 116 ++++++++++++++++++ .../Python}/SubGraph/dai_usdc.py | 0 .../Python}/SubGraph/wbtc_usdc.py | 0 .../Python}/SubGraph/weth_usdc.py | 0 {Python => backend/Python}/main.py | 0 backend/package-lock.json | 9 ++ backend/package.json | 1 + backend/server.js | 32 +++++ .../src/components/TradingChatRSIAlgos.jsx | 9 +- 18 files changed, 166 insertions(+), 5 deletions(-) rename {Python => backend/Python}/Algorithms/DCA.py (100%) rename {Python => backend/Python}/Algorithms/MA.py (100%) rename {Python => backend/Python}/Algorithms/MACD.py (100%) rename {Python => backend/Python}/Algorithms/RSI.py (100%) rename {Python => backend/Python}/Decisions/DCA_dis.py (100%) rename {Python => backend/Python}/Decisions/MACD_dis.py (100%) rename {Python => backend/Python}/Decisions/MA_dis.py (100%) rename {Python => backend/Python}/Decisions/RSI_dis.py (100%) create mode 100644 backend/Python/Decisions/RSI_server.py rename {Python => backend/Python}/SubGraph/dai_usdc.py (100%) rename {Python => backend/Python}/SubGraph/wbtc_usdc.py (100%) rename {Python => backend/Python}/SubGraph/weth_usdc.py (100%) rename {Python => backend/Python}/main.py (100%) diff --git a/README.md b/README.md index 86727d4..7f91c10 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,6 @@ Return a json user will select buy/sell -python3 -m Python.Decisions.RSI_dis \ No newline at end of file +python3 -m Python.Decisions.RSI_dis + +python3 -m Python.Decisions.RSI_server \ No newline at end of file diff --git a/Python/Algorithms/DCA.py b/backend/Python/Algorithms/DCA.py similarity index 100% rename from Python/Algorithms/DCA.py rename to backend/Python/Algorithms/DCA.py diff --git a/Python/Algorithms/MA.py b/backend/Python/Algorithms/MA.py similarity index 100% rename from Python/Algorithms/MA.py rename to backend/Python/Algorithms/MA.py diff --git a/Python/Algorithms/MACD.py b/backend/Python/Algorithms/MACD.py similarity index 100% rename from Python/Algorithms/MACD.py rename to backend/Python/Algorithms/MACD.py diff --git a/Python/Algorithms/RSI.py b/backend/Python/Algorithms/RSI.py similarity index 100% rename from Python/Algorithms/RSI.py rename to backend/Python/Algorithms/RSI.py diff --git a/Python/Decisions/DCA_dis.py b/backend/Python/Decisions/DCA_dis.py similarity index 100% rename from Python/Decisions/DCA_dis.py rename to backend/Python/Decisions/DCA_dis.py diff --git a/Python/Decisions/MACD_dis.py b/backend/Python/Decisions/MACD_dis.py similarity index 100% rename from Python/Decisions/MACD_dis.py rename to backend/Python/Decisions/MACD_dis.py diff --git a/Python/Decisions/MA_dis.py b/backend/Python/Decisions/MA_dis.py similarity index 100% rename from Python/Decisions/MA_dis.py rename to backend/Python/Decisions/MA_dis.py diff --git a/Python/Decisions/RSI_dis.py b/backend/Python/Decisions/RSI_dis.py similarity index 100% rename from Python/Decisions/RSI_dis.py rename to backend/Python/Decisions/RSI_dis.py diff --git a/backend/Python/Decisions/RSI_server.py b/backend/Python/Decisions/RSI_server.py new file mode 100644 index 0000000..1621222 --- /dev/null +++ b/backend/Python/Decisions/RSI_server.py @@ -0,0 +1,116 @@ +import time +import json +import os +from flask import Flask, jsonify +from flask_cors import CORS +from groq import Groq # Replace OpenAI with Groq SDK +from dotenv import load_dotenv + +# Import your algorithm and data fetching functions +from ..Algorithms.RSI import rsi_strategy_decision +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc + +# Load environment variables and initialize Groq client +load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) + +SYSTEM_PROMPT = """You are an expert trading AI specializing in low-risk cryptocurrency +strategies. Analyze the RSI data and provide only BUY/SELL/HOLD decisions considering: +- Current market conditions +- Low risk tolerance +- Historical price patterns +- Volatility indicators""" + +def get_llm_decision(algo_result): + """ + Modified for Groq API with risk-averse strategy. + """ + user_prompt = f""" + Trading Context: + - RSI Strategy Suggestion: {algo_result['decision']} + - Current RSI: {algo_result['rsi']} + - Latest Price: {algo_result['latest_price']} + - Recent Prices: {algo_result['price_series'][-5:]} + + Required Action: For a LOW-RISK strategy, should we BUY, SELL, or HOLD? + Respond with ONLY the action word in uppercase. + """ + try: + chat_completion = client.chat.completions.create( + messages=[ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": user_prompt} + ], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=1 + ) + return chat_completion.choices[0].message.content.strip() + + except Exception as e: + print(f"Groq API Error: {str(e)}") + return "HOLD" # Fail-safe default + +def make_decision_cycle(): + """ + Process all trading pairs and return the decision JSON. + """ + decisions = {} + + # Process each trading pair with its corresponding fetch function. + for pair, fetch_fn in [ + ("BTC", fetch_graph_data_wbtc_usdc), + ("DAI", fetch_graph_data_dai_usdc), + ("WETH", fetch_graph_data_weth_usdc) + ]: + graph_data = fetch_fn() + if not graph_data: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "No data"} + continue + + algo_result = rsi_strategy_decision( + graph_data, + rsi_period=5, + overbought_threshold=70, + oversold_threshold=30 + ) + print(algo_result) + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + print(algo_result.get("decision")) + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "Insufficient data"} + continue + + try: + llm_decision = get_llm_decision(algo_result) + # Example fixed position size; you can adjust based on your strategy. + position_size = 69 + + decisions[pair] = { + "action": llm_decision, + "position_size": position_size, + "rsi": algo_result['rsi'], + "price": algo_result['latest_price'] + } + except Exception as e: + decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": str(e)} + + output_json = { + "timestamp": int(time.time()), + "decisions": decisions + } + return output_json + +# Initialize the Flask app and enable CORS. +app = Flask(__name__) +CORS(app) # This will enable CORS for all routes and origins. + +@app.route("/decisions", methods=["GET"]) +def decisions(): + output_json = make_decision_cycle() + return jsonify(output_json) + +if __name__ == "__main__": + # Run the Flask server. + app.run(host="0.0.0.0", port=5050, debug=True) diff --git a/Python/SubGraph/dai_usdc.py b/backend/Python/SubGraph/dai_usdc.py similarity index 100% rename from Python/SubGraph/dai_usdc.py rename to backend/Python/SubGraph/dai_usdc.py diff --git a/Python/SubGraph/wbtc_usdc.py b/backend/Python/SubGraph/wbtc_usdc.py similarity index 100% rename from Python/SubGraph/wbtc_usdc.py rename to backend/Python/SubGraph/wbtc_usdc.py diff --git a/Python/SubGraph/weth_usdc.py b/backend/Python/SubGraph/weth_usdc.py similarity index 100% rename from Python/SubGraph/weth_usdc.py rename to backend/Python/SubGraph/weth_usdc.py diff --git a/Python/main.py b/backend/Python/main.py similarity index 100% rename from Python/main.py rename to backend/Python/main.py diff --git a/backend/package-lock.json b/backend/package-lock.json index b74a5ed..4fda54c 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -21,6 +21,7 @@ "moralis": "^2.27.2", "nodemon": "^3.1.9", "openai": "^4.80.0", + "python-shell": "^5.0.0", "tsconfig-paths": "^4.2.0", "viem": "2.21.53" }, @@ -2764,6 +2765,14 @@ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, + "node_modules/python-shell": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/python-shell/-/python-shell-5.0.0.tgz", + "integrity": "sha512-RUOOOjHLhgR1MIQrCtnEqz/HJ1RMZBIN+REnpSUrfft2bXqXy69fwJASVziWExfFXsR1bCY0TznnHooNsCo0/w==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/qs": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", diff --git a/backend/package.json b/backend/package.json index f27e83e..9257c1f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -17,6 +17,7 @@ "moralis": "^2.27.2", "nodemon": "^3.1.9", "openai": "^4.80.0", + "python-shell": "^5.0.0", "tsconfig-paths": "^4.2.0", "viem": "2.21.53" }, diff --git a/backend/server.js b/backend/server.js index db3e459..6e717a5 100644 --- a/backend/server.js +++ b/backend/server.js @@ -7,6 +7,14 @@ import { SYSTEM_PROMPT_TRADE,SYSTEM_PROMPT_GENERAL } from "./config/prompt.js"; import { createFoundryUpTools } from "./tools/index.js"; import { generateText } from "ai"; import { createOpenAI as createGroq } from "@ai-sdk/openai"; +import { PythonShell } from "python-shell"; +import { spawn } from "child_process"; + +// PythonShell.run('./Python/Decisions/RSI_.js', null, (err, results) => { +// if (err) throw err; +// console.log('Python says:', results.join('\n')); +// }); + const app = express(); const PORT = process.env.PORT || 5000; @@ -86,6 +94,30 @@ app.post("/api/generalchat", async (req, res) => { } }); + + +app.get('/python', (req, res) => { + // Spawn a Python process with the '-m' flag to run the module + const pythonProcess = spawn('python', ['-m', 'hello']); + + let output = ''; + + // Collect data from the Python process stdout + pythonProcess.stdout.on('data', (data) => { + output += data.toString(); + }); + + // Handle any errors + pythonProcess.stderr.on('data', (data) => { + console.error(`Python error: ${data}`); + }); + + // When the Python process closes, send the output as the response + pythonProcess.on('close', (code) => { + res.send(`Python process exited with code ${code}. Output: ${output}`); + }); +}); + // Start the server app.listen(PORT, () => { console.log(`Server is running on PORT => ${PORT}`); diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx index 10fcdd3..1d57005 100644 --- a/frontend/src/components/TradingChatRSIAlgos.jsx +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -30,14 +30,15 @@ function IntentTradingAlgo() { // This function simulates calling a backend algorithm. const generateSignals = async () => { setLoadingSignals(true); + console.log("lol") + try { // Send the current balances to your backend - const response = await fetch('/api/generateSignals', { - method: 'POST', + const response = await fetch('http://127.0.0.1:5050/decisions', { + method: 'GET', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ balances }) }); const data = await response.json(); // The returned data structure should be similar to: @@ -88,7 +89,7 @@ function IntentTradingAlgo() {
+ {/* Error Message */} + {errorMessage && ( +
+ {errorMessage} +
+ )} + {/* Generate Signals Section */} -
+
+ + {/* Options: Risk Level and Term */} +
+ {/* Risk Level Options */} +
+

Risk Level

+
+ + +
+
+ + {/* Term Options */} +
+

Term

+
+ + +
+
+
{/* Trading Signals Section */} @@ -113,7 +188,7 @@ function IntentTradingAlgo() { {decision.action}
- {/* If you decide later to add more info like position_size or rsi, you can include them here */} + {/* Optionally add more details like position_size or rsi */}
))}
@@ -121,7 +196,7 @@ function IntentTradingAlgo() { )} {/* Price Chart Section */} -
+

Market Analysis

@@ -145,8 +220,8 @@ function IntentTradingAlgo() {
{Object.entries(balances).map(([token, balance]) => ( -
From 5f4963abc84ab790cd0263d02acedff88587a127 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 19:55:57 +0530 Subject: [PATCH 27/71] yeasss --- .../DeployTradeIntent.sol/1/run-latest.json | 30 ++-- cache/solidity-files-cache.json | 2 +- .../src/components/TradingChatRSIAlgos.jsx | 157 ++++++++++++++---- frontend/src/constants/abi.js | 6 +- frontend/src/utils/web3functions.js | 31 ++++ out/.DS_Store | Bin 12292 -> 0 bytes out/AAVEIntents.sol/IAaveETHManager.json | 2 +- out/AAVEIntents.sol/aaveIntents.json | 2 +- out/Base.sol/CommonBase.json | 2 +- out/Base.sol/ScriptBase.json | 2 +- out/Base.sol/TestBase.json | 2 +- .../CompoundETHManager.json | 2 +- out/CompoundETHManager2.sol/ICEth.json | 2 +- out/CompoundIntents.sol/CompoundIntents.json | 2 +- .../DeployTradeIntent.json | 2 +- out/IAEth.sol/IAEth.json | 2 +- out/IAEth.sol/IENSHelper.json | 2 +- out/IAEth.sol/IETH.json | 2 +- out/IAEth.sol/IEscrows.json | 2 +- out/IAEth.sol/IExecutor.json | 2 +- out/IAEth.sol/ISwapRouter.json | 2 +- out/IAEth.sol/IToken.json | 2 +- out/IERC165.sol/IERC165.json | 2 +- out/IERC20.sol/IERC20.json | 2 +- out/IERC721.sol/IERC721.json | 2 +- out/IERC721.sol/IERC721Enumerable.json | 2 +- out/IERC721.sol/IERC721Metadata.json | 2 +- out/IERC721.sol/IERC721TokenReceiver.json | 2 +- out/IEth.sol/IENSHelper.json | 2 +- out/IEth.sol/IETH.json | 2 +- out/IEth.sol/IEscrows.json | 2 +- out/IEth.sol/IExecutor.json | 2 +- out/IEth.sol/ISwapRouter.json | 2 +- out/IEth.sol/IToken.json | 2 +- out/IMulticall3.sol/IMulticall3.json | 2 +- out/IUniswap.sol/IUniswap.json | 2 +- out/IntentEngineTrade.sol/IntentEngine.json | 2 +- .../MetadataReaderLib.json | 2 +- out/MockERC20.sol/MockERC20.json | 2 +- out/MockERC721.sol/MockERC721.json | 2 +- out/SafeTransferLib.sol/SafeTransferLib.json | 2 +- out/Script.sol/Script.json | 2 +- out/StdChains.sol/StdChains.json | 2 +- out/StdCheats.sol/StdCheats.json | 2 +- out/StdCheats.sol/StdCheatsSafe.json | 2 +- out/StdJson.sol/stdJson.json | 2 +- out/StdMath.sol/stdMath.json | 2 +- out/StdStorage.sol/stdStorage.json | 2 +- out/StdStorage.sol/stdStorageSafe.json | 2 +- out/StdStyle.sol/StdStyle.json | 2 +- out/StdUtils.sol/StdUtils.json | 2 +- out/UniswapRegistry.sol/UniswapRegistry.json | 2 +- out/Vm.sol/Vm.json | 2 +- out/Vm.sol/VmSafe.json | 2 +- .../35fec37d57b4d29e712fc83affe3c315.json | 1 - .../58c984fa81f30e09c0163b31124a40e6.json | 1 - out/console.sol/console.json | 2 +- out/interfaces/IERC20.sol/IERC20.json | 2 +- out/safeconsole.sol/safeconsole.json | 2 +- script/DeployTradeIntent.sol | 4 +- src/IntentEngineCore.sol | 3 +- src/UniswapRegistry.sol | 4 +- 62 files changed, 233 insertions(+), 108 deletions(-) delete mode 100644 out/.DS_Store delete mode 100644 out/build-info/35fec37d57b4d29e712fc83affe3c315.json delete mode 100644 out/build-info/58c984fa81f30e09c0163b31124a40e6.json diff --git a/broadcast/DeployTradeIntent.sol/1/run-latest.json b/broadcast/DeployTradeIntent.sol/1/run-latest.json index ddad3ea..ed61d5b 100644 --- a/broadcast/DeployTradeIntent.sol/1/run-latest.json +++ b/broadcast/DeployTradeIntent.sol/1/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0xa11d4ad6341964ab86ef6a6b17fe863e474d90c40711e1571b732580c71edbc2", + "hash": "0xa8672c7857061c37aabb87303c078baed3c95a6f9389f66f27ab800c85e70451", "transactionType": "CREATE", "contractName": "IntentEngine", - "contractAddress": "0xa86582ad5e80abc19f95f8a9fb3905cda0dabd59", + "contractAddress": "0x97915c43511f8cb4fbe7ea03b96eee940ec4af12", "function": null, "arguments": null, "transaction": { "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "gas": "0x11c3ff", + "gas": "0x164e13", "value": "0x0", - "input": "0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033", - "nonce": "0x3a0", + "input": "0x608080604052346100f95780630eecae8d60e31b602492525f60048201522073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03198254161790556024604051637573646360e01b81525f60048201522073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860018060a01b031982541617905560236040516264616960e81b81525f600382015220736b175474e89094c44da98b954eedeac495271d0f60018060a01b031982541617905560236040516262746360e81b81525f600382015220732260fac5e5542a773aa44fbcfedf7c193bc2c59960018060a01b03198254161790556040516111de90816100fe8239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c36610b1a565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d5761009761009236610b1a565b610c90565b6100a86100a2610b77565b82610da0565b906004825103610169576101656100c86100c184610bb2565b5183610f83565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f788610bec565b518a610f83565b9861012461011e6100c1610119610113610b77565b85610da0565b610bfc565b98610c0c565b5190610f83565b95610fff565b97610c30565b541694610c30565b541693604051948594855260208501526040840152608060608401526080830190610a37565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f91610092916024369201610ae4565b61021a6100a2610b77565b9060048251036101695761023761023083610bb2565b5182610f83565b9061027261026c61025161024a86610bec565b5184610f83565b926101246102666100c1610119610113610b77565b96610c0c565b93610fff565b91604051602081018251916102a1602082818701958087875e81015f838201520301601f198101835282610aa5565b51902060405160208101907f62757900000000000000000000000000000000000000000000000000000000008252600381526102de602382610aa5565b519020146106ee575b6103106020604051809382820195518091875e81015f838201520301601f198101835282610aa5565b51902060405160208101907f73656c6c0000000000000000000000000000000000000000000000000000000082526004815261034d602482610aa5565b51902014610373575b506101656040519283928352604060208401526040830190610a37565b604051602081019061039f602082875180838a01875e81015f838201520301601f198101835282610aa5565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526103dc602782610aa5565b519020036103565761040273ffffffffffffffffffffffffffffffffffffffff91610c30565b541660405190610413606083610aa5565b6002825260208201905f9060403684378061042d85610bb2565b5273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261044c85610bec565b52602073ffffffffffffffffffffffffffffffffffffffff61046d86610bb2565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561063f575f926020926106d3575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561063f576106a6575b50610bb842018042116106795790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b81811061064a5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561063f5715610356573d805f833e6105c38183610aa5565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d578051906020806105fd84610d88565b61060a6040519182610aa5565b848152019260051b82010192831161007d57602001905b82821061062f575050610356565b8151815260209182019101610621565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff16845286945060209384019390920191600101610576565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6106c79060203d6020116106cc575b6106bf8183610aa5565b810190611190565b61051a565b503d6106b5565b6106e990833d85116106cc576106bf8183610aa5565b6104c0565b604051602081019061071a602082895180838c01875e81015f838201520301601f198101835282610aa5565b51902060405160208101907f756e697377617000000000000000000000000000000000000000000000000000825260078152610757602782610aa5565b519020036102e75773ffffffffffffffffffffffffffffffffffffffff61077d84610c30565b54166040519061078e606083610aa5565b600282526020820190604036833773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26107ba84610bb2565b526107c483610bec565b525f602073ffffffffffffffffffffffffffffffffffffffff6107e685610bb2565b51166064604051809481937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528c60448401525af1801561063f57610a1a575b506040517f095ea7b3000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201528660248201526020816044815f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1801561063f576109fd575b50610bb842018042116106795790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908960048501525f602485015260a060448501525180915260c4830191905f5b8181106109ce5750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561063f57610943575b506102e7565b3d805f833e6109528183610aa5565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061098c84610d88565b6109996040519182610aa5565b848152019260051b82010192831161007d57602001905b8282106109be57505061093d565b81518152602091820191016109b0565b825173ffffffffffffffffffffffffffffffffffffffff168452869450602093840193909201916001016108ff565b610a159060203d6020116106cc576106bf8183610aa5565b6108a3565b610a329060203d6020116106cc576106bf8183610aa5565b610833565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff821117610a7857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff821117610a7857604052565b67ffffffffffffffff8111610a7857601f01601f191660200190565b929192610af082610ac8565b91610afe6040519384610aa5565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610b7493600401359101610ae4565b90565b60405190610b86604083610aa5565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b805115610bbf5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015610bbf5760400190565b805160021015610bbf5760600190565b805160031015610bbf5760800190565b8051821015610bbf5760209160051b010190565b60208091604051928184925191829101835e81015f81520301902090565b90610c5882610ac8565b610c656040519182610aa5565b828152601f19610c758294610ac8565b0190602036910137565b908151811015610bbf570160200190565b90610c9b8251610c4e565b915f5b8151811015610d8457610cb18183610c7f565b517fff0000000000000000000000000000000000000000000000000000000000000081167f410000000000000000000000000000000000000000000000000000000000000081101580610d5a575b15610d50575060f81c6020019060ff8211610679577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a610d498287610c7f565b5301610c9e565b6001929150610d3d565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610cff565b5050565b67ffffffffffffffff8111610a785760051b60200190565b91906001815103610f2557805115610bbf57602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610ede575060010193601f19610e0f610df987610d88565b96610e076040519889610aa5565b808852610d88565b015f5b818110610ebb575050845f915f935f5b86811115610e335750505050505050565b8681148015610e86575b610e4a575b600101610e22565b9493610e7b9060405195610e5d87610a5c565b86528660208701526001810195610e748287610c1c565b5284610c1c565b506001850194610e42565b50817fff00000000000000000000000000000000000000000000000000000000000000610eb38386610c7f565b511614610e3d565b602090604051610eca81610a5c565b5f81525f8382015282828a01015201610e12565b827fff00000000000000000000000000000000000000000000000000000000000000610f0a8389610c7f565b511614610f1a575b600101610dde565b600190910190610f12565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161067957610f9e90610c4e565b905f5b8251811015610ff957815190808201809211610679577fff00000000000000000000000000000000000000000000000000000000000000610fe460019388610c7f565b51165f1a610ff28286610c7f565b5301610fa1565b50509150565b80515f9182918291825b828110611040575b50505090155f1461102a5750670de0b6b3a76400000290565b60128110611036575090565b601203600a0a0290565b61104a8183610c7f565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580611166575b156110f757508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c91020101956110e1575b6001905b01939293611009565b936001019360128511156110d457939293611011565b7f2e0000000000000000000000000000000000000000000000000000000000000091509591949514908161115d575b501561113557600180936110d8565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f611126565b507f3900000000000000000000000000000000000000000000000000000000000000811115611098565b9081602091031261007d5751801515810361007d579056fea2646970667358221220facc684aeddf121449f8a27c8f353cf3c15742bab1b8ebf76ce6a24d22001e5c64736f6c634300081c0033", + "nonce": "0x3a1", "chainId": "0x1" }, "additionalContracts": [], @@ -22,20 +22,20 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0xdaa76", + "cumulativeGasUsed": "0x11285e", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xa11d4ad6341964ab86ef6a6b17fe863e474d90c40711e1571b732580c71edbc2", + "transactionHash": "0xa8672c7857061c37aabb87303c078baed3c95a6f9389f66f27ab800c85e70451", "transactionIndex": "0x0", - "blockHash": "0x3dab494a73329b4032fc5d22b8bf7a8f674a2b57743092cfdc923819502ee2b5", - "blockNumber": "0x1521f00", - "gasUsed": "0xdaa76", - "effectiveGasPrice": "0x18f1103f", + "blockHash": "0x9377ef6d5f8ded05b501c20eb290e54b300e0072ea56f917085cd35d0406b5a1", + "blockNumber": "0x1521f04", + "gasUsed": "0x11285e", + "effectiveGasPrice": "0xa257dcb3", "blobGasPrice": "0x1", "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contractAddress": "0xa86582ad5e80abc19f95f8a9fb3905cda0dabd59" + "contractAddress": "0x97915c43511f8cb4fbe7ea03b96eee940ec4af12" } ], "libraries": [], @@ -43,10 +43,10 @@ "returns": { "0": { "internal_type": "contract IntentEngine", - "value": "0xa86582Ad5E80abc19F95f8A9Fb3905Cda0dAbd59" + "value": "0x97915c43511f8cB4Fbe7Ea03B96EEe940eC4AF12" } }, - "timestamp": 1743330251, + "timestamp": 1743342579, "chain": 1, - "commit": "e2bc730" + "commit": "d94550b" } \ No newline at end of file diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 58c22a8..83ca3a6 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1738474223445,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1738474223445,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdAssertions.sol":{"lastModificationDate":1743236377442,"contentHash":"25b77f9806b64d497b8a46aeb8e5f6f0","sourceName":"lib/forge-std/src/StdAssertions.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdAssertions":{"0.8.28":{"default":{"path":"StdAssertions.sol/StdAssertions.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1738474223446,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1738474223446,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdError.sol":{"lastModificationDate":1743236377442,"contentHash":"64c896e1276a291776e5ea5aecb3870a","sourceName":"lib/forge-std/src/StdError.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdError":{"0.8.28":{"default":{"path":"StdError.sol/stdError.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdInvariant.sol":{"lastModificationDate":1743236377442,"contentHash":"f16837d0e7cb829544ae1f1319ea7643","sourceName":"lib/forge-std/src/StdInvariant.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdInvariant":{"0.8.28":{"default":{"path":"StdInvariant.sol/StdInvariant.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1738474223473,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1738474223474,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1738474223474,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1738474223475,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/StdToml.sol":{"lastModificationDate":1743236377442,"contentHash":"4bce85a4c60f2c073e651ee8140bcb4d","sourceName":"lib/forge-std/src/StdToml.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdToml":{"0.8.28":{"default":{"path":"StdToml.sol/stdToml.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1738474223475,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/Test.sol":{"lastModificationDate":1743236377442,"contentHash":"b6f15605355fc8c421fe42a90f94bf32","sourceName":"lib/forge-std/src/Test.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Test":{"0.8.28":{"default":{"path":"Test.sol/Test.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1738474223476,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1738474223477,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1738474223477,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1738474223478,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1738474223478,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1738474223479,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1738474223479,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1738474223479,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1738474223480,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1738474223480,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1738474223517,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1738474223519,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1743236377470,"contentHash":"1c592c4752cc4258471d34651045ee1a","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1738490601934,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1738473588069,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1738473588069,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1738490599982,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"35fec37d57b4d29e712fc83affe3c315"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1738473588069,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1738473588069,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1738473588069,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"58c984fa81f30e09c0163b31124a40e6"}}}},"seenByCompiler":true},"src/IntentEngineCore.sol":{"lastModificationDate":1743240019468,"contentHash":"026c2747fdc824c3a808cca31c558802","sourceName":"src/IntentEngineCore.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IntentEngine.json","build_id":"86986f98fb1bd17e1dd4c85cf4ee615b"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1743238781850,"contentHash":"bdc93fadebb5267a85fc5ee67e953066","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1743236377471,"contentHash":"86aef6f501fae0c1eb15739ed8934c10","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/test2.t.sol":{"lastModificationDate":1743236377471,"contentHash":"ff6510ee72b891b5705da7f39b37b6da","sourceName":"test/test2.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManagerTest":{"0.8.28":{"default":{"path":"test2.t.sol/CompoundETHManagerTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/testIntents.t.sol":{"lastModificationDate":1743236377471,"contentHash":"9732660fab607efecae644efa8063fee","sourceName":"test/testIntents.t.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/CompoundETHManager2.sol","src/CompoundIntents.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntentsTest":{"0.8.28":{"default":{"path":"testIntents.t.sol/CompoundIntentsTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true},"test/tradeTest.sol":{"lastModificationDate":1743236377471,"contentHash":"2d97850383bc88d4b9923634c8b1fab4","sourceName":"test/tradeTest.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdAssertions.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdError.sol","lib/forge-std/src/StdInvariant.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdToml.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Test.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineTrade.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.19","artifacts":{"TradeTest":{"0.8.28":{"default":{"path":"tradeTest.sol/TradeTest.json","build_id":"3e9e802e3e08b76b48bdc5919a6fb908"}}}},"seenByCompiler":true}},"builds":["35fec37d57b4d29e712fc83affe3c315","3e9e802e3e08b76b48bdc5919a6fb908","58c984fa81f30e09c0163b31124a40e6","86986f98fb1bd17e1dd4c85cf4ee615b"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1743236377442,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1743236377442,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1743236377442,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1743236377442,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1743236377442,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1743236377442,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1743236377442,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1743236377442,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1743236377442,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1743236377443,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1743236377443,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1743236377443,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1743236377444,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1743236377444,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1743236377444,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1743236377444,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1743236377444,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1743236377444,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1743236377444,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1743236377459,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1743236377459,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1743342437325,"contentHash":"4d18a288c55c12826698698952c935aa","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineCore.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1743236377470,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1743236377470,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1743236377470,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1743236377470,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1743236377471,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1743236377471,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1743236377471,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IntentEngineCore.sol":{"lastModificationDate":1743342267474,"contentHash":"9c99b4dc23932fa8e8ac9fcccc7528b0","sourceName":"src/IntentEngineCore.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IntentEngine.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1743238781850,"contentHash":"bdc93fadebb5267a85fc5ee67e953066","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1743342325656,"contentHash":"d6d255e4cc90ea588d419cb81003dfb5","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true}},"builds":["68d14368b5a75ea21786b8169492bda2"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx index 0b2f37a..76319a4 100644 --- a/frontend/src/components/TradingChatRSIAlgos.jsx +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -1,7 +1,19 @@ -import React, { useState } from 'react'; -import { Wallet, TrendingUp, ChevronUp, ChevronDown } from 'lucide-react'; -import { PriceChartWidget } from './PriceChartWidget'; // Adjust this path if necessary -import { connectWallet as connectToWallet, fetchTokenBalances } from '../utils/web3functions'; +import React, { useState, useEffect } from 'react'; +import { Wallet, TrendingUp } from 'lucide-react'; +import { PriceChartWidget } from './PriceChartWidget'; // Adjust path if necessary +import { + connectWallet as connectToWallet, + fetchTokenBalances, + commandToTradeStart, + handleTokensApproveTrading // New approval function +} from '../utils/web3functions'; + +// Mapping from token symbols to their contract addresses +const tokenAddresses = { + BTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // WBTC address (as example) + WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F" +}; function IntentTradingAlgo() { const [walletConnected, setWalletConnected] = useState(false); @@ -9,21 +21,28 @@ function IntentTradingAlgo() { const [balances, setBalances] = useState({ WETH: '0.0', DAI: '0.0', - WBTC: '0.0' + BTC: '0.0' }); const [tradingSignals, setTradingSignals] = useState(null); const [loadingSignals, setLoadingSignals] = useState(false); const [riskLevel, setRiskLevel] = useState('low'); // default to low risk const [term, setTerm] = useState('short'); // default to short term const [errorMessage, setErrorMessage] = useState(''); + // State to track the input amount per token + const [inputAmounts, setInputAmounts] = useState({}); + // State to track approval status per token symbol used for approval + const [approvedTokens, setApprovedTokens] = useState({}); const connectWallet = async () => { + console.log("Attempting to connect wallet..."); try { const { account } = await connectToWallet(); + console.log("Wallet connected, account:", account); setWalletAddress(account); setWalletConnected(true); const tokenBalances = await fetchTokenBalances(account); + console.log("Token balances fetched:", tokenBalances); setBalances(tokenBalances); setErrorMessage(''); } catch (error) { @@ -32,37 +51,35 @@ function IntentTradingAlgo() { } }; - // This function calls your backend with the selected options. - // It checks if the wallet is connected first. + // For testing signals before passing to trade function const generateSignals = async () => { if (!walletConnected) { setErrorMessage('Please connect your wallet before generating signals.'); return; } + console.log("Generating signals with risk level:", riskLevel, "and term:", term); setLoadingSignals(true); setErrorMessage(''); - console.log("Generate trading signals with options:", { riskLevel, term }); - try { - // Include risk and term options as query parameters - const response = await fetch(`http://127.0.0.1:5050/decisions?risk=${riskLevel}&term=${term}`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json' - }, + // Custom output for testing: + const customData = { + timestamp: Date.now(), + decisions: { + BTC: { action: "BUY" }, // Buying BTC using WETH + DAI: { action: "HOLD" }, + WETH: { action: "SELL" } // Selling WETH + } + }; + console.log("Custom signals generated:", customData); + setTradingSignals(customData); + // Prepopulate inputAmounts for tokens with BUY or SELL signals + setInputAmounts({ + BTC: "0.1", + WETH: "0.1" }); - const data = await response.json(); - // The returned data structure should be similar to: - // { - // "timestamp": 1743319056, - // "decisions": { - // "BTC": { "action": "SELL", ... }, - // "DAI": { "action": "BUY", ... }, - // "WETH": { "action": "BUY", ... } - // } - // } - setTradingSignals(data); + // Reset approvedTokens to ensure fresh approvals on new signals + setApprovedTokens({}); } catch (error) { console.error('Error generating signals:', error); setErrorMessage('Failed to generate signals. Please try again.'); @@ -71,10 +88,66 @@ function IntentTradingAlgo() { } }; + // When user clicks Trade, approval happens on-demand. + const handleTrade = async (token, decision) => { + console.log(`Handling trade for token: ${token}`); + const amount = inputAmounts[token]; + console.log("Retrieved input amount:", amount); + if (!amount || isNaN(amount)) { + alert('Please enter a valid amount.'); + return; + } + // For BUY trades, approval is for WETH; for SELL, it's the token itself. + const tokenToApprove = + decision.action.toUpperCase() === 'BUY' + ? tokenAddresses.WETH + : tokenAddresses[token.toUpperCase()]; + + if (!tokenToApprove) { + alert(`No token address found for ${token}`); + return; + } + + // Check and perform approval if needed + if (!approvedTokens[token]) { + try { + console.log(`Approving ${decision.action.toUpperCase() === 'BUY' ? 'WETH' : token} for amount: ${amount}...`); + const approved = await handleTokensApproveTrading(amount, tokenToApprove); + if (approved) { + console.log(`${decision.action.toUpperCase() === 'BUY' ? 'WETH' : token} approved.`); + setApprovedTokens((prev) => ({ ...prev, [token]: true })); + } + } catch (error) { + console.error(`Error approving ${token}:`, error); + alert(`Approval failed for ${token}. Check console for details.`); + return; + } + } + + // Force action and token symbol to uppercase for consistency + const action = decision.action.toUpperCase(); + const tokenSymbol = token.toUpperCase(); + // Construct command string: "ACTION TOKEN Amount Uniswap" + // The command itself doesn't change; your contract should know that for BUY, + // WETH will be used (via the approval). + const command = `${action} ${tokenSymbol} ${amount} Uniswap`; + console.log("Constructed trade command:", command); + + try { + console.log("Passing trade command to commandToTradeStart..."); + const result = await commandToTradeStart(command); + console.log("Trade execution result:", result); + alert(`Trade executed: ${command}`); + } catch (error) { + console.error("Trade execution failed:", error); + alert("Trade execution failed. Check console for details."); + } + }; + return (
{/* Header Section */} -
+

Stratos @@ -112,8 +185,6 @@ function IntentTradingAlgo() { > {loadingSignals ? 'Generating...' : 'Generate Trading Signals'} - - {/* Options: Risk Level and Term */}
{/* Risk Level Options */}
@@ -141,7 +212,6 @@ function IntentTradingAlgo() {
- {/* Term Options */}

Term

@@ -183,12 +253,35 @@ function IntentTradingAlgo() { {decision.action}
- {/* Optionally add more details like position_size or rsi */} + {(decision.action === 'BUY' || decision.action === 'SELL') && ( +
+ + + setInputAmounts((prev) => ({ ...prev, [token]: e.target.value })) + } + className="mt-1 block w-full bg-gray-700 border border-gray-600 text-white rounded-md p-2" + /> + +
+ )}

))}
diff --git a/frontend/src/constants/abi.js b/frontend/src/constants/abi.js index b60c6f8..d080ff3 100644 --- a/frontend/src/constants/abi.js +++ b/frontend/src/constants/abi.js @@ -1,5 +1,5 @@ -export const TradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] -export const TradeContractAddress = "0xa86582Ad5E80abc19F95f8A9Fb3905Cda0dAbd59" +export const OldTradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] +export const TradeContractAddress = "0x97915c43511f8cB4Fbe7Ea03B96EEe940eC4AF12" export const ERC20ABI = [ { "constant": true, @@ -62,4 +62,4 @@ export const WETH_ABI = [ "type": "function" } ]; - \ No newline at end of file +export const TradeABI = [{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}] \ No newline at end of file diff --git a/frontend/src/utils/web3functions.js b/frontend/src/utils/web3functions.js index 4b37cd6..06dcc8d 100644 --- a/frontend/src/utils/web3functions.js +++ b/frontend/src/utils/web3functions.js @@ -157,3 +157,34 @@ export async function commandToTradeStart(aiResponse) { throw error; } } + + + +export async function handleTokensApproveTrading(amountToTrade,tokenAddress) { + if (!web3 || !currentAccount) { + throw new Error("Wallet not connected"); + } + + const tokenContract = new web3.eth.Contract(ERC20ABI, tokenAddress); + + try { + const balance = await tokenContract.methods.balanceOf(currentAccount).call(); + console.log("Token balance:", balance); + + // Make sure amountToTrade is a number, not already in wei + const amountInWei = web3.utils.toWei(amountToTrade.toString(), "ether"); + console.log("Amount to trade in wei:", amountInWei); + console.log("Approving tokens..."); + + // Use the correct amount for approval + const approveTx = await tokenContract.methods + .approve(TradeContractAddress, amountInWei) + .send({ from: currentAccount }); + + console.log("Tokens approved. Tx:", approveTx); + return true; + } catch (error) { + console.error("Error approving tokens:", error); + throw error; + } +} \ No newline at end of file diff --git a/out/.DS_Store b/out/.DS_Store deleted file mode 100644 index 8949247d057f1189d239a655759a2899c1451cef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12292 zcmeHNU1%It6h31b*>0L2XhRSbMxUx^Nn-tZ5Zt7j`dg?;t6)L0$);&)HnZ$*6ro^1 z^hFc}5yclRXkYbBd?eoJ%-%V7=id1VD55hkb7yD1bMN<^ zd+)hFvqa?0Z#QR%4iixYC#Mq!aCwW!A3-V(e$Qv(7{U_|=LMX&pCDSKWAq5k(hMC* zppy@7!y~rehjWCUq6NdgO95@Rf_i;rGgtwlGWF3y<;tb2bGRQTzLrPnfzkt|2TBi= z9wT6&=L!2j9<93Om~oYtarCrnl7z=fyq{GO-q>cBnL0qU6_ zrL`#C2~%YX8)b?#H1(n-h8LRSxzBKR`3g>6ElkU6 z>4DM%Ne?XIk#p_cw5`1z==QmprPZL-Rz-NroK)1BzDMV<8=zM6o9hBIG<(g4kt_aN z*Yt`%kyk5-*`?tOUPFrBIC!0)ZQ7(BZO|$;aJNYhT3OOF-+^U@h2*?@U31Q~iWTIy zGW5_%_VXn4Y(dMKx-Q_l4qaRLeTq6z*TkKz2B_OAW-WDoc2nytP`<3Sz2#u)-(me# zrIz(~=q&WE;;w77HJaXX;iRTZmyh>%n5=n9_E}hyXN`FtKs}vCy=zL_HljDBX`qL%p)LaSBgG%Ttg)@Kn{6Srto@+1 zWRxS-_S&gOR4YkJG8#s)^Xb_Zf)xIK^k#-2{qS2 zyl5keSZi(Oq6;Ur{N!sb);whmWnoR8HRd@Ao;}36W0<)#)Y#Isvz>S>9W6Qke4pl= zlD}l0&%)&I5Ax?Y-9x*wdfPugz<&TO`TzK+m4Ct_ZZr8TO#U_IKN9)>Y1PBG?A)uD z-AKv%#^ai|BVXzBY_!Q&_2YiNCzP-4vt6pR1>XUr!S{HAZvq|r_(mq$!gnn4FSqhQ z%@EgJQS{DRV4aGW-0xr1+%s%q1$k{u9n+wN`Bd0X`T81W@Q#t7dNmCz`QQDb=I_i~ zww642lecOw{k%_u_Xc=7dgs)0f_DNdc|Wn7;BCRjKF@78eQn< zpa!fl=FkWEEv2T`y4IAlTv;>4tu1y%QCHM1hYwiP>xDH$xgU1*L zjlcD{7rFD-^f_oisoUrd8~n{8om)=sk8;h2{~7yRLX} z&+j&j;33 zTXmx2ddo(ed?&bmCaI1V*~Um3U=)h?yksp|$EJ6`FJ>)uy>pkYrvl~6y4qU~rhXOg z_9Jf3p^rLuT3_furv)YTjJC8MD>AO5bfm#=Nb!qzjA!U!ddMC(M$dqw11WjF($hSh z=$LCZ+Ta_0e5%5q;eXMbJ3U8uGz)9;oJR4&TkahlZ| 2, char maps to a valid ascii character. Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. Modified from `ENSAsciiNormalizer` deployed by royalfork.eth (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758).\"},\"addresses\":{\"details\":\"DAO-governed token names to addresses.\"},\"names\":{\"details\":\"DAO-governed token addresses to names.\"},\"orderHashes\":{\"details\":\"Array of onchain order struct hashes.\"},\"orders\":{\"details\":\"Open order book for p2p asset exchange.\"},\"pairs\":{\"details\":\"DAO-governed token swap pool routing on Uniswap V3.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSwap"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidSelector"},{"inputs":[],"type":"error","name":"InvalidSwap"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"type":"error","name":"OrderExpired"},{"inputs":[],"type":"error","name":"Overflow"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":false},{"internalType":"address","name":"token1","type":"address","indexed":false},{"internalType":"address","name":"pair","type":"address","indexed":false}],"type":"event","name":"PairSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelOrder"},{"inputs":[{"internalType":"string","name":"intent","type":"string"},{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"checkUserOp","outputs":[{"internalType":"bool","name":"intentMatched","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"intents","type":"string[]"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"executeOrder"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"lock","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"addresses","type":"address"}],"stateMutability":"view","type":"function","name":"names","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"order","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orderHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"uint48","name":"expiry","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"previewCommand","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"executeCallData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"}],"stateMutability":"payable","type":"function","name":"send"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"payable","type":"function","name":"setName"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"payable","type":"function","name":"setPair"},{"inputs":[{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOutMin","type":"string"},{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"swap"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"translateCommand","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"view","type":"function","name":"translateExecute","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"translateUserOp","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"whatIsTheAddressOf","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"whatIsTheNameOf","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"cancelOrder(bytes32)":{"details":"Cancels a standing order by the `maker`."},"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`."},"command(string)":{"details":"Executes a text command from an `intent` string."},"command(string[])":{"details":"Executes batch of text commands from an `intents` string."},"constructor":{"details":"Constructs this IE on Ethereum with ENS `ASCII_MAP`."},"escrow(string,string,string,string,string)":{"details":"Executes an `escrow` command from the parts of a matched intent string."},"executeOrder(bytes32)":{"details":"Executes a standing order for the `receiver`."},"lock(string,string,string,string,string)":{"details":"Executes a `lock` command from the parts of a matched intent string."},"order(string,string,string,string,string)":{"details":"Executes an `order` command from the parts of a matched intent string."},"previewCommand(string)":{"details":"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'."},"send(string,string,string)":{"details":"Executes a `send` command from the parts of a matched intent string."},"setName(address,string)":{"details":"Sets a public `name` tag for a given `token` address. Governed by DAO."},"setPair(address,address,address)":{"details":"Sets a public pool `pair` for swapping tokens. Governed by DAO."},"swap(string,string,string,string,string)":{"details":"Executes a `swap` command from the parts of a matched intent string."},"translateCommand(bytes)":{"details":"Translates an `intent` from raw `command()` calldata."},"translateExecute(bytes)":{"details":"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match."},"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Translate packed ERC4337 userOp `callData` into readable `intent`."},"whatIsTheAddressOf(string)":{"details":"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address."},"whatIsTheNameOf(address)":{"details":"Returns ENS reverse name resolution details."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addresses","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkUserOp","inputs":[{"name":"intent","type":"string","internalType":"string"},{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intentMatched","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"command","inputs":[{"name":"intents","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"command","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"escrow","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"executeOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lock","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"names","inputs":[{"name":"addresses","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"order","inputs":[{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"orderHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"maker","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"nonce","type":"uint48","internalType":"uint48"},{"name":"expiry","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previewCommand","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"executeCallData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"send","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setName","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swap","inputs":[{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOutMin","type":"string","internalType":"string"},{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"translateCommand","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"translateExecute","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"translateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheAddressOf","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"node","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheNameOf","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"NameSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PairSet","inputs":[{"name":"token0","type":"address","indexed":false,"internalType":"address"},{"name":"token1","type":"address","indexed":false,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsufficientSwap","inputs":[]},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidReceiver","inputs":[]},{"type":"error","name":"InvalidSelector","inputs":[]},{"type":"error","name":"InvalidSwap","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"Overflow","inputs":[]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040525f5b61000e6100e2565b5181146100d35761002a6100206100e2565b600183019061015e565b5160f81c5f5b6100418361003c6100e2565b61015e565b5160f81c60ff8216146100c957600454680100000000000000008110156100b55760018101806004558110156100a15760ff9160019160045f5260205f208160051c019060f882549160031b16908587831b921b19161790550116610030565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5050600201610006565b604051615f3490816101708239f35b60405190608082016001600160401b038111838210176100b5576040908152604483527f2d00020101000a010700016101620163016401650166016701680169016a016b60208401527f016c016d016e016f0170017101720173017401750176017701780179017a060090830152621a010560e81b6060830152565b9081518110156100a157016020019056fe6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea26469706673582212207433264b3e37343f852a654ef070035081f803e64224d2b3713303be5e6546df64736f6c634300081c0033","sourceMap":"1235:61077:25:-:0;;;-1:-1:-1;8170:6:25;1235:61077;;:::i;:::-;6796:141;8147:21;;;;8207:16;1235:61077;;:::i;:::-;8221:1;1235:61077;;8207:16;;:::i;:::-;6796:141;;;-1:-1:-1;8281:3:25;8266:12;1235:61077;;;:::i;:::-;8266:12;:::i;:::-;6796:141;;;;;;8255:24;;;8308:8;6796:141;;;;;;;8221:1;6796:141;;;8308:8;6796:141;;;;;;;;8221:1;6796:141;8308:8;-1:-1:-1;6796:141:25;;-1:-1:-1;6796:141:25;;;;;;;;;;;;;;;;;;;;;;;;;;;8246:7;;6796:141;1235:61077;;;-1:-1:-1;6796:141:25;;8308:8;6796:141;;-1:-1:-1;6796:141:25;;1235:61077;;;-1:-1:-1;1235:61077:25;;8308:8;1235:61077;;-1:-1:-1;1235:61077:25;8255:24;;;8175:1;1235:61077;8136:9;;8147:21;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;:::o;6796:141::-;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea26469706673582212207433264b3e37343f852a654ef070035081f803e64224d2b3713303be5e6546df64736f6c634300081c0033","sourceMap":"1235:61077:25:-:0;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;31114:475;;;;;;;-1:-1:-1;31602:17:25;;;;:38;;-1:-1:-1;31598:64:25;;31706:72;31114:475;;;;31706:72;;:::i;:::-;31788:141;;;;;;31114:475;;-1:-1:-1;31114:475:25;;;;-1:-1:-1;;31980:40:25;;;;;;-1:-1:-1;35628:503:25;;;;;;;;31788:141;35628:503;;;;;-1:-1:-1;35628:503:25;-1:-1:-1;35628:503:25;;;;;;;;-1:-1:-1;35628:503:25;;31938:276;31114:475;;-1:-1:-1;31114:475:25;32223:214;;1235:61077;32223:214;32419:6;;32291:43;;32293:40;;;;32291:43;:::i;:::-;36268:230;-1:-1:-1;36268:230:25;;;;-1:-1:-1;36268:230:25;31114:475;36268:230;;;;;;31114:475;;;;32419:6;:::i;:::-;32223:214;32293:40;;;32291:43;:::i;31980:40::-;;;;31938:276;32140:49;;32148:40;;;;;;;31114:475;;;;32140:49;;:::i;:::-;31938:276;;32148:40;;;;;31788:141;;;;31598:64;31649:13;-1:-1:-1;31649:13:25;1235:61077;-1:-1:-1;31649:13:25;31602:38;31623:17;-1:-1:-1;31623:17:25;;;31602:38;;1235:61077;37130:141;;;;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23375:189;1235:61077;;;:::i;:::-;23375:189;;;;;:::i;:::-;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;7899:28;1235:61077;7899:28;;;;;;1235:61077;7899:28;;:::i;:::-;1235:61077;;;;;;;;;;;;;;38059:12;1235:61077;;;:::i;:::-;38059:12;;;;;:::i;1235:61077::-;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;7287:49;1235:61077;;;;;;-1:-1:-1;;;;;1235:61077:25;;;7287:49;-1:-1:-1;;;;;1235:61077:25;7287:49;;1235:61077;;7287:49;;;;1235:61077;7287:49;;;1235:61077;7287:49;;-1:-1:-1;;;;;1235:61077:25;7287:49;;1235:61077;;7287:49;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;46671:140;;;;;46891:53;1235:61077;;-1:-1:-1;;;;;1235:61077:25;;;-1:-1:-1;;;;;1235:61077:25;;46824:15;46820:56;;1235:61077;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;46915:5;1235:61077;;;;;;;;-1:-1:-1;1235:61077:25;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;46891:53;1235:61077;46820:56;46841:35;-1:-1:-1;46841:35:25;-1:-1:-1;;;;;;1235:61077:25;46820:56;;1235:61077;;;;;-1:-1:-1;;1235:61077:25;;;;;;;37373:261;;;;;;;;;1235:61077;;;39775:6;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;39775:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39775:6;1235:61077;;39797:19;1235:61077;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;39797:19;1235:61077;;39830:10;:21;39826:48;;1235:61077;-1:-1:-1;;;;;1235:61077:25;4081:42;39888:16;39884:60;;1235:61077;37654:91;37373:261;37654:91;1235:61077;39884:60;39933:10;4081:42;;39830:10;39933;:::i;:::-;39884:60;;;39826:48;39860:14;1235:61077;39860:14;1235:61077;;39860:14;37373:261;;1235:61077;37373:261;1235:61077;37373:261;;1235:61077;;;;;-1:-1:-1;;1235:61077:25;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:25;;:::i;:::-;;;;;7408:74;1235:61077;;-1:-1:-1;;;;;1235:61077:25;;;7408:74;1235:61077;-1:-1:-1;1235:61077:25;;;;-1:-1:-1;;;;;1235:61077:25;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:25;;;;;-1:-1:-1;;;;;1235:61077:25;;:::i;:::-;;;;7178:49;1235:61077;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1235:61077:25;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:25;;44415:22;6631:54;44415:22;;1235:61077;;44415:22;;1235:61077;;44415:22;;;6642:42;44415:22;;;;;;;1235:61077;44415:22;;;1235:61077;;;;6631:54;44465:27;;;1235:61077;44465:27;;1235:61077;;44465:27;44415:22;44465:27;6327:42;44465:27;;;;;;-1:-1:-1;;;;;44465:27:25;1235:61077;44465:27;;;;;1235:61077;;44415:22;1235:61077;;;44454:50;;;;;6631:54;44454:50;;1235:61077;44454:50;;1235:61077;;44454:50;;;;;;1235:61077;44454:50;;;1235:61077;;;;;;;;;;;;;;;;:::i;44454:50::-;;;;1235:61077;44454:50;;;;;;:::i;:::-;;;6316:54;1235:61077;6316:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1235:61077;;;;;;;:::i;:::-;6316:54;;;1235:61077;6316:54;;;;;;;1235:61077;6316:54;1235:61077;6316:54;;1235:61077;6316:54;;;;;1235:61077;;;;;44454:50;;;1235:61077;;6631:54;1235:61077;6631:54;;;;;44465:27;44415:22;44465:27;;;;;1235:61077;44465:27;1235:61077;44465:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;44415:22;;;1235:61077;44415:22;;1235:61077;44415:22;;;;;;6631:54;44415:22;;;:::i;:::-;;;6631:54;;;;;44415:22;;;;;;-1:-1:-1;44415:22:25;;1235:61077;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;43085:15;1235:61077;43085:15;;;43105:26;1235:61077;43085:15;;;;:::i;:::-;43078:23;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:25;43078:53;43105:26;;43150:33;43167:15;;;;:::i;43078:157::-;43202:33;43219:15;;;;:::i;:::-;43202:33;;:::i;:::-;43078:157;;1235:61077;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22061:19;;;;;;1235:61077;22082:3;1235:61077;;;;;;22109:10;1235:61077;;;;;;;;;;:::i;22109:10::-;-1:-1:-1;;1235:61077:25;;;;;;22050:9;;1235:61077;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;46148:140;;;;;;1235:61077;46331:23;1235:61077;-1:-1:-1;;;;;1235:61077:25;;;;:::i;:::-;46331:23;:::i;:::-;1235:61077;;;;;;46365:5;1235:61077;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;46405:50;1235:61077;;;;;;;-1:-1:-1;;1235:61077:25;46365:5;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46405:50;;;1235:61077;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;46405:50;1235:61077;;;;;;;;;;;;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46365:5;1235:61077;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;;;23915:190;1235:61077;;;:::i;:::-;23915:190;;;;;:::i;1235:61077::-;;-1:-1:-1;;1235:61077:25;;;;;;;37373:261;;;;;;;;;1235:61077;;;40107:6;1235:61077;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1235:61077:25;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;40107:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;40107:6;1235:61077;;40129:19;1235:61077;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;40129:19;1235:61077;;40162:15;:26;40158:53;;-1:-1:-1;;;;;1235:61077:25;;;;4081:42;40225:16;;40221:134;4081:42;;;;40270:10;4081:42;;;40243:10;40270;:::i;:::-;1235:61077;;4081:42;40369:17;;4081:42;;;;40410:9;:24;4081:42;;40476:9;40410;-1:-1:-1;;;;;40410:9:25;1235:61077;;;40476:9;:::i;40365:227::-;1235:61077;-1:-1:-1;;;;;40569:11:25;1235:61077;;;4081:42;;40545:10;;40569:11;;:::i;:::-;40365:227;;40221:134;1235:61077;40344:10;1235:61077;;;4081:42;;40332:10;;40344;;:::i;:::-;40221:134;;40158:53;40197:14;1235:61077;40197:14;1235:61077;;40197:14;1235:61077;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1235:61077:25;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;1235:61077:25;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;1235:61077:25;;;;;-1:-1:-1;1235:61077:25;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7899:28;1235:61077;;;;;;7899:28;-1:-1:-1;1235:61077:25;;-1:-1:-1;1235:61077:25;;;-1:-1:-1;1235:61077:25;:::o;40746:160::-;;1235:61077;40895:1;1235:61077;;;;;40895:1;-1:-1:-1;;1235:61077:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1235:61077:25;;;;;;;;:::o;22225:811::-;;;-1:-1:-1;1235:61077:25;22440:2;1235:61077;;22417:25;22413:144;22440:2;;;22453:24;;;:::i;:::-;22413:144;;-1:-1:-1;;;;;1235:61077:25;;22571:20;22567:51;;22413:144;22648:22;22698:126;22648:22;;;;;:::i;:::-;-1:-1:-1;22746:48:25;;-1:-1:-1;22746:13:25;;;;:48;22698:126;:::i;:::-;1235:61077;-1:-1:-1;;;;;1235:61077:25;;4081:42;22839:13;4081:42;;22876:9;;;:20;4081:42;;22931:7;;;:::i;22835:195::-;22994:10;23011:7;22994:10;;23011:7;;:::i;22746:48::-;22773:21;1235:61077;22773:21;;;:::i;:::-;1235:61077;22746:48;22698:126;:::i;22567:51::-;22648:22;1235:61077;;;-1:-1:-1;;;;;1235:61077:25;;22698:126;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;22567:51;;;;;22413:144;22535:21;;22513:44;22535:21;;;:::i;:::-;22513:44;:::i;:::-;22492:65;;22413:144;;;6316:54;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;6316:54;:::o;18796:3095::-;1235:61077;18796:3095;18896:25;18796:3095;1235:61077;;;:::i;18896:25::-;18948:23;;;:::i;:::-;1235:61077;18998:16;;:52;;;;18796:3095;18998:83;;;;18796:3095;18998:116;;;;18796:3095;18981:2904;;;19262:24;;19333:13;19262:24;;:::i;18981:2904::-;1235:61077;19381:16;;:48;;;;18981:2904;19381:84;;;;18981:2904;19381:117;;;;18981:2904;19364:2521;;;19738:24;;19937:16;19738:24;;:::i;19364:2521::-;1235:61077;19988:16;;:38;;;;19364:2521;19984:1901;;;23375:189;20235:24;;;:::i;23375:189::-;-1:-1:-1;20469:108:25;;-1:-1:-1;20469:108:25;19984:1901;1235:61077;20597:18;;1235:61077;;23915:190;20824:24;;;:::i;20593:1292::-;1235:61077;21188:17;1235:61077;;21433:24;38059:12;21433:24;;:::i;:::-;38059:12;;;:::i;21184:701::-;21832:15;-1:-1:-1;21832:15:25;;-1:-1:-1;21832:15:25;19988:38;20008:18;1235:61077;20008:18;;19988:38;;19381:117;19481:17;1235:61077;19481:17;;19381:117;;:84;19445:20;1235:61077;19445:20;;19381:84;;:48;19413:16;1235:61077;19413:16;;19381:48;;18998:116;19097:17;1235:61077;19097:17;;18998:116;;:83;19066:15;1235:61077;19066:15;;18998:83;;:52;19030:20;1235:61077;19030:20;;18998:52;;4211:42;;;;;;;;;:::o;28048:2722::-;;;;1235:61077;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;-1:-1:-1;1235:61077:25;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;-1:-1:-1;1235:61077:25;;;;;;-1:-1:-1;1235:61077:25;;-1:-1:-1;28322:19:25;-1:-1:-1;1235:61077:25;28380:2;1235:61077;;28355:27;28351:218;28380:2;;;-1:-1:-1;;;;;28411:26:25;;;:::i;:::-;1235:61077;;;28351:218;-1:-1:-1;;;;;1235:61077:25;;;28583:26;28579:65;;28351:218;-1:-1:-1;1235:61077:25;;28380:2;28658:28;28380:2;;-1:-1:-1;;;;;28716:27:25;;;:::i;:::-;1235:61077;;;28654:224;-1:-1:-1;;;;;1235:61077:25;;;28892:27;28888:68;;28654:224;28967:14;-1:-1:-1;1235:61077:25;;;28991:239;;28654:224;-1:-1:-1;;1235:61077:25;;29256:27;;29309:204;;;;;;29545:8;29309:204;;1235:61077;;;29528:25;;29524:48;;1235:61077;;;4081:42;-1:-1:-1;;;;;1235:61077:25;;;29595:19;1235:61077;;;;29624:51;;29309:204;29685:35;5994:10;1235:61077;29685:35;;-1:-1:-1;;;;;29685:35:25;-1:-1:-1;29685:35:25;;;5994:10;29685:35;;;29309:204;4081:42;1235:61077;;;;29744:20;1235:61077;;;;;29774:37;;29309:204;1235:61077;;29853:27;:15;;;;29894:10;30010:82;29894:10;;;;;29849:116;;1235:61077;;;;;30010:82;;:::i;:::-;1235:61077;;;;;;;;;;30173:40;;;;;;;30251:9;;;;;4081:42;30251:58;;30323:63;;;;;5994:10;30323:63;;1235:61077;;;;;;;;;;;;;;;;;5994:10;;;1235:61077;30400:203;;5994:10;;;;;;;30491;1235:61077;5994:10;;;;;1235:61077;5994:10;;;;;;1235:61077;5994:10;;;;;;1235:61077;5994:10;;;;;;30400:203;;;;;;;:::i;:::-;1235:61077;;;30137:476;;;;;;;6631:54;30137:476;;1235:61077;30137:476;;;1235:61077;;;;5994:10;;;1235:61077;5994:10;;;1235:61077;;5994:10;;;1235:61077;;5994:10;;;;;;;;;:::i;:::-;30137:476;1235:61077;;30137:476;;;;;;;-1:-1:-1;;;30137:476:25;;;30323:63;30628:11;;30624:140;;30323:63;28048:2722;;;;:::o;30624:140::-;30667:33;;30669:30;;;;30667:33;:::i;:::-;30659:51;30655:98;;30624:140;;;;;;30655:98;30735:18;-1:-1:-1;30735:18:25;30137:476;-1:-1:-1;30735:18:25;30137:476;;;;1235:61077;30137:476;;1235:61077;30137:476;;;;;;1235:61077;30137:476;;;:::i;:::-;;;5994:10;;;;1235:61077;5994:10;;;;;30137:476;;;;;;;-1:-1:-1;30137:476:25;;30323:63;;6163:49;30323:63;;;30251:58;30287:22;4081:42;;30287:22;:::i;:::-;30251:58;;;30173:40;30208:4;30173:40;;;29849:116;29937:28;;;;;30010:82;29937:28;;:::i;:::-;29919:46;;;29849:116;;;29774:37;4211:42;1235:61077;;29774:37;;29685:35;4211:42;1235:61077;;29685:35;;29624:51;4081:42;;;;;;;;29648:9;:26;4081:42;;29624:51;;;;;;;;29524:48;29562:10;-1:-1:-1;29562:10:25;;-1:-1:-1;29562:10:25;29309:204;29545:8;;29353:160;;29411:15;;;;:58;-1:-1:-1;;;;;1235:61077:25;;;29353:160;;:::i;:::-;29309:204;;29411:58;1235:61077;;29442:27;-1:-1:-1;;;;;1235:61077:25;;;29442:27;:::i;:::-;1235:61077;29411:58;;28991:239;29113:61;;-1:-1:-1;29051:168:25;;29113:16;;;;:61;-1:-1:-1;;;;;1235:61077:25;;;29051:168;;:::i;:::-;28991:239;;;;;29113:61;1235:61077;;29146:28;-1:-1:-1;;;;;1235:61077:25;;;29146:28;:::i;:::-;1235:61077;29113:61;;28888:68;1235:61077;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;28888:68;;;28654:224;-1:-1:-1;;;;;28840:24:25;;28801:77;28840:24;;;:::i;28801:77::-;28770:108;1235:61077;;;28654:224;;28579:65;1235:61077;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;28579:65;;;28351:218;-1:-1:-1;;;;;28532:23:25;;28493:76;28532:23;;;:::i;28493:76::-;28464:105;1235:61077;;;28351:218;;16067:384;;16273:22;16067:384;16273:22;:::i;:::-;1235:61077;;;;;;;;16335:15;;;;;;;;:::i;:::-;16309:48;;;;16305:66;;1235:61077;;;16428:15;1235:61077;;16388:26;16428:15;;:::i;:::-;1235:61077;;;:::i;:::-;;;;;;16418:26;16388:56;16067:384;:::o;16305:66::-;16359:12;;;;1235:61077;16359:12;:::o;8716:3023::-;1235:61077;9051:21;9238:25;1235:61077;;9124:28;;1235:61077;;;;:::i;9238:25::-;9290:23;;;;:::i;:::-;1235:61077;9340:16;;:52;;;;8716:3023;9340:83;;;;8716:3023;9340:116;;;;8716:3023;9323:2410;;;9607:24;;;;;;:::i;:::-;1235:61077;;;;9694:96;;1235:61077;;12229:2;12213:18;12229:2;;12242:17;;;:::i;:::-;12209:123;;-1:-1:-1;;;;;1235:61077:25;;12346:20;12342:59;;12209:123;1235:61077;;12509:119;1235:61077;12459:30;4081:42;-1:-1:-1;;;;;1235:61077:25;;12424:13;12459:30;;:::i;:::-;-1:-1:-1;12550:48:25;;-1:-1:-1;12550:13:25;;;;:48;12509:119;:::i;:::-;12643:6;;;12639:70;;12550:48;12797:20;;;;;;;12819:19;;;;;-1:-1:-1;;;;;1235:61077:25;;12737:122;;;;;;1235:61077;12737:122;;;1235:61077;;;;;;;;;;12737:122;1235:61077;;;;;;;:::i;:::-;12737:122;-1:-1:-1;;12737:122:25;;;;;;:::i;:::-;9645:145;;;;9323:2410;8716:3023::o;12819:19::-;1235:61077;12819:19;;12797:20;;;;;12639:70;1235:61077;;;;12662:47;;;;;-1:-1:-1;;;;;1235:61077:25;;12662:47;;;1235:61077;;;;;;;12662:47;;;;;;:::i;:::-;12639:70;;;12342:59;12509:119;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;12342:59;;;;12209:123;12317:14;;12295:37;12317:14;;;:::i;12295:37::-;12274:58;;12209:123;;;9323:2410;9824:16;;;;;1235:61077;9824:16;;:48;;;;9323:2410;9824:84;;;;9323:2410;9824:117;;;;9323:2410;9807:1926;;;10181:24;;;10297:159;10181:24;;:::i;:::-;10297:159;;;;;:::i;:::-;10250:206;;;;;;;1235:61077;5994:10;1235:61077;;5994:10;1235:61077;5994:10;;10481:27;;;5994:10;10481:27;;;;;;;:::i;:::-;9807:1926;8716:3023::o;9807:1926::-;1235:61077;10542:16;;;;;;;:38;;;;9807:1926;10542:60;;;;9807:1926;10525:1208;;;10825:24;;;;:::i;:::-;10910:142;;;;1235:61077;10910:142;;;13258:16;1235:61077;;13304:2;1235:61077;;13288:18;13284:123;13304:2;;;13317:17;;;:::i;:::-;13284:123;;-1:-1:-1;;;;;1235:61077:25;;13421:20;13417:59;;13284:123;13498:30;13548:119;13498:30;13742:13;13498:30;;13694:22;13498:30;;:::i;:::-;-1:-1:-1;13589:48:25;;-1:-1:-1;13589:13:25;;;;:48;13548:119;:::i;:::-;13694:22;;:::i;:::-;13742:13;;:::i;:::-;1235:61077;13794:17;;:39;;;;13589:48;13790:595;;;1235:61077;13869:9;1235:61077;13790:595;14409:15;1235:61077;10863:189;;;10525:1208;1235:61077::o;13790:595::-;1235:61077;13903:14;;:33;;;;13790:595;13899:486;;;1235:61077;13972:6;1235:61077;13790:595;;13899:486;1235:61077;14003:15;;:35;;;;13899:486;13999:386;;;1235:61077;14074:7;1235:61077;13790:595;;13999:386;1235:61077;14106:16;;:37;;;;13999:386;14102:283;;;1235:61077;14179:7;1235:61077;13790:595;;14102:283;1235:61077;14211:15;;:35;;;;;14102:283;-1:-1:-1;14207:178:25;;;14282:8;1235:61077;13790:595;;14211:35;1235:61077;14230:16;;;14211:35;;;14106:37;14126:17;1235:61077;14126:17;;14106:37;;14003:35;14022:16;1235:61077;14022:16;;14003:35;;13903:33;13921:15;1235:61077;13921:15;;13903:33;;13794:39;13815:18;1235:61077;13815:18;;13794:39;;13417:59;13498:30;1235:61077;;13694:22;1235:61077;13742:13;1235:61077;-1:-1:-1;;;;;1235:61077:25;;13548:119;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;13417:59;;;;;;;;13284:123;13392:14;;13370:37;13392:14;;;:::i;13370:37::-;13349:58;;13284:123;;;10525:1208;11073:17;;;;1235:61077;11073:17;1235:61077;;11434:156;11318:24;5994:10;11318:24;;:::i;11434:156::-;1235:61077;;5994:10;;;;;11615:27;;;5994:10;11615:27;;;11387:203;;;;;;;;;11615:27;;1235:61077;11615:27;:::i;10542:60::-;10584:18;1235:61077;10584:18;;10542:60;;:38;10562:18;1235:61077;10562:18;;10542:38;;9824:117;9924:17;1235:61077;9924:17;;9824:117;;:84;9888:20;1235:61077;9888:20;;9824:84;;:48;9856:16;1235:61077;9856:16;;9824:48;;9340:116;9439:17;1235:61077;9439:17;;9340:116;;:83;9408:15;1235:61077;9408:15;;9340:83;;:52;9372:20;1235:61077;9372:20;;9340:52;;43477:752;1235:61077;;;;43477:752;1235:61077;;43726:2;43704:24;;43726:2;;43755:23;;;;:::i;43700:523::-;43833:30;1235:61077;;;43833:30;1235:61077;;;;;;;;;;;;;43833:30;;;1235:61077;;;;;;;;43833:30;;;;;;;;;;:::i;:::-;1235:61077;;;;44774:19;1235:61077;;;44827:584;44834:6;;;45753:114;;;43833:30;45753:114;;;;;;1235:61077;;45459:54;43833:30;45459:54;;1235:61077;;;;;;;;45459:54;;;;;;:::i;:::-;1235:61077;45449:65;;1235:61077;;;43887:24;6631:54;43887:24;;;1235:61077;43887:24;;1235:61077;43833:30;43887:24;;;6327:42;43887:24;;;;;;;1235:61077;43887:24;;;44827:584;43879:32;6485:42;-1:-1:-1;;;;;43879:32:25;1235:61077;43929:32;43925:96;;44827:584;1235:61077;;44057:27;6631:54;44057:27;;;1235:61077;44057:27;;1235:61077;43833:30;44057:27;43887:24;44057:27;6327:42;44057:27;;;;;;;-1:-1:-1;;;;;44057:27:25;43833:30;44057:27;1235:61077;44057:27;;;44827:584;1235:61077;43887:24;1235:61077;;44046:50;;;;6631:54;44046:50;;;1235:61077;44046:50;;1235:61077;;44046:50;;;;;;;1235:61077;44046:50;;;44827:584;44035:61;-1:-1:-1;;;;;44035:61:25;1235:61077;44135:22;44131:52;;43477:752::o;44131:52::-;44166:17;1235:61077;44166:17;1235:61077;;44166:17;44046:50;;;;;43833:30;44046:50;43833:30;44046:50;;;;;;;:::i;:::-;;;;;44057:27;;;;;;;;;;;;;;:::i;:::-;;;;43925:96;1235:61077;;;;6631:54;43987:34;;;1235:61077;43987:34;;1235:61077;43833:30;43987:34;43887:24;43987:34;6485:42;43987:34;;;;;;;1235:61077;43987:34;;;43925:96;43979:42;43925:96;;;43987:34;;;;43833:30;43987:34;43833:30;43987:34;;;;;;;:::i;:::-;;;;43887:24;;;;;43833:30;43887:24;43833:30;43887:24;;;;;;;:::i;:::-;;;;;44842:3;1235:61077;-1:-1:-1;;1235:61077:25;;44876:20;;;;;:::i;:::-;1235:61077;;;;;44918:8;;44914:240;;5994:10;-1:-1:-1;4081:42:25;;;1235:61077;;5994:10;1235:61077;;;;;;;;;;5994:10;1235:61077;;;;;;;;;;;;;;45261:34;;4081:42;;-1:-1:-1;;45318:12:25;44894:1;45318:12;;45314:83;;44842:3;;;44827:584;1235:61077;44827:584;;;;45314:83;45354:24;;;;:::i;:::-;;45314:83;;;;44914:240;45753:114;;;;;-1:-1:-1;;45753:114:25;;;43833:30;45753:114;;;;;1235:61077;;44992:54;43833:30;44992:54;;1235:61077;;;;;;;;44992:54;;;;;;:::i;:::-;1235:61077;44957:111;;45090:15;45127:8;;;37331:420;;;37373:261;;;;;;;;;1235:61077;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;38955:143;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;38107:18;1235:61077;38135:19;1235:61077;;38194:2;1235:61077;;38169:27;38165:200;38194:2;;;-1:-1:-1;;;;;38210:26:25;;;:::i;:::-;1235:61077;;;38165:200;-1:-1:-1;;;;;1235:61077:25;;;38379:23;38375:67;;38165:200;-1:-1:-1;1235:61077:25;;38194:2;38456:28;38194:2;;38511:27;-1:-1:-1;;;;;38511:27:25;38793:138;38511:27;;;:::i;:::-;1235:61077;;;38452:218;-1:-1:-1;;;;;1235:61077:25;;;38684:24;38680:89;;38452:218;-1:-1:-1;;38843:15:25;;;;-1:-1:-1;;;;;1235:61077:25;;;38793:138;;:::i;:::-;1235:61077;;39006:16;;;;:58;-1:-1:-1;;;;;1235:61077:25;;;38955:143;;:::i;:::-;1235:61077;;4081:42;-1:-1:-1;;;;;1235:61077:25;;;39113:16;39109:54;;39006:58;-1:-1:-1;;;;;39207:10:25;1235:61077;39207:10;;;;;;;1235:61077;;;;39266:27;39262:120;39266:15;;;39207:10;;;39262:120;1235:61077;;;;39449:15;1235:61077;;;;39515:7;39449:15;1235:61077;;;;;;;;;;39561:13;;1235:61077;39561:13;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39561:13;;;;;;:::i;:::-;1235:61077;39551:24;;1235:61077;;;;39537:6;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4081:42;39537:6;1235:61077;;;4081:42;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1235:61077:25;;;;;;;;;;37654:91;;37373:261;37654:91;37331:420::o;39262:120::-;39354:28;;;;:::i;:::-;39336:46;;;39262:120;;39109:54;4081:42;;;;;39139:9;:23;4081:42;;39109:54;;;;;;39006:58;1235:61077;;39039:25;-1:-1:-1;;;;;1235:61077:25;;;39039:25;:::i;:::-;1235:61077;39006:58;;38680:89;1235:61077;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;38680:89;;;;38452:218;38793:138;38632:24;;;38593:77;38632:24;-1:-1:-1;;;;;38632:24:25;;:::i;38593:77::-;38565:105;1235:61077;;;38452:218;;38375:67;1235:61077;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;38375:67;;;38165:200;-1:-1:-1;;;;;38328:23:25;;38289:76;38328:23;;;:::i;38289:76::-;38263:102;1235:61077;;;38165:200;;1235:61077;;;;;;;;;;;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;:::o;41122:1714::-;;1235:61077;41345:2;1235:61077;;;41306:92;;41345:2;-1:-1:-1;;;;;41306:92:25;;41343:1;1235:61077;;41306:92;:::i;:::-;1235:61077;;41417:10;;41413:363;;1235:61077;;41831:3;1235:61077;;;;;;41827:3;1235:61077;;;;41811:53;41840:24;41811:53;;;;;:125;;;;41122:1714;41790:185;;;1235:61077;;42502:299;42177:34;42502:299;42177:34;1235:61077;42177:34;;;;:::i;:::-;42089:122;;;;;;1235:61077;;42229:24;42225:51;;41122:1714;42294:13;42290:51;;41122:1714;1235:61077;;;;;42757:22;-1:-1:-1;;;;;42601:36:25;42390:46;1235:61077;;;41831:3;1235:61077;;42390:46;;1235:61077;;42390:46;:::i;:::-;42544:31;;;;;;1235:61077;;;;;;:::i;:::-;;;;;;;;;42544:31;42601:36;:::i;:::-;1235:61077;;42757:22;:::i;:::-;1235:61077;;;;;;;;;;;;42502:299;;;1235:61077;;;;;;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;42502:299;;-1:-1:-1;;42502:299:25;;;;;;:::i;42544:31::-;1235:61077;;;;;;:::i;:::-;;;;;;;;;42544:31;42601:36;:::i;42290:51::-;42320:21;;;;;;;;;-1:-1:-1;;;;;42601:36:25;42390:46;1235:61077;42320:21;;41831:3;1235:61077;42320:21;42757:22;42320:21;;:::i;:::-;1235:61077;42290:51;;;;;;;;;;;;;;;;42225;1235:61077;;;-1:-1:-1;1235:61077:25;42263:5;1235:61077;;;;-1:-1:-1;1235:61077:25;;:::i;:::-;42225:51;;;41790:185;41958:17;-1:-1:-1;41958:17:25;41343:1;-1:-1:-1;41958:17:25;41811:125;1235:61077;;;41913:23;-1:-1:-1;41884:52:25;;;41811:125;;;41413:363;41506:233;41589:30;;1235:61077;41589:30;;;1235:61077;41506:233;41691:22;41589:30;;;;:::i;:::-;41691:22;;:::i;:::-;1235:61077;;41506:233;;;1235:61077;41506:233;;;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;41506:233;;-1:-1:-1;;41506:233:25;;;;;;:::i;8987:1026:20:-;;9132:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:1026;9132:875;;;;;;;8987:1026::o;9132:875::-;;;;;;;;;;;;;;;;;;;;3909:342;4024:221;3909:342;;;4024:221;;;;;;;3909:342::o;4024:221::-;;;;;;;5159:42:25;;;;;;;-1:-1:-1;;;;;5159:42:25;;;;;;1235:61077;;;;5159:42;;;1235:61077;;5159:42;;;1235:61077;5159:42;;;;1235:61077;5159:42;;;1235:61077;5159:42;;;;;;;;;;:::i;:::-;;;1235:61077;5159:42::o;:::-;;;;;;-1:-1:-1;;;;;5159:42:25;;;;;1235:61077;;;;5159:42;;;1235:61077;;5159:42;;;1235:61077;5159:42;;;;1235:61077;5159:42;;;1235:61077;5159:42;;;;;;;;;;:::i;24197:3763::-;;;;;1235:61077;24442:14;1235:61077;;24519:2;1235:61077;;24496:25;24492:137;24519:2;;;24532:24;;;:::i;:::-;24492:137;;-1:-1:-1;;;;;1235:61077:25;;24643:20;24639:59;;24492:137;24728:30;;;:::i;:::-;-1:-1:-1;24827:48:25;;-1:-1:-1;24827:13:25;;;;;24786:119;24827:48;;24786:119;;:::i;:::-;24932:22;;;;:::i;:::-;24980:13;;;:::i;:::-;1235:61077;25008:17;;:39;;;;24827:48;25004:547;;;1235:61077;25079:9;1235:61077;;;;;;25079:9;1235:61077;;;;;;;25004:547;;-1:-1:-1;;;;;1235:61077:25;;4081:42;25565:13;4081:42;;25630:9;;;:20;4081:42;;25798:25;;;;;;;;;;;;;;25849;;;;25858:10;;25849:25;;1235:61077;;26000:614;;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;;;;26000:614;1235:61077;26000:614;-1:-1:-1;;26000:614:25;;;;;;;;:::i;:::-;1235:61077;;25696:1015;;;;;6631:54;25696:1015;;26666:15;1235:61077;25696:1015;5159:42;25696:1015;;;;;;:::i;:::-;;;;;5297:42;26000:614;25696:1015;;;;;;;;;;25669:1042;;:::o;25696:1015::-;;;26000:614;25696:1015;;26000:614;25696:1015;;;;;;6631:54;25696:1015;;;:::i;:::-;;;6631:54;;;;;25669:1042;:::o;25696:1015::-;;;-1:-1:-1;25696:1015:25;;;1235:61077;;6631:54;;;;;;;;25849:25;;;;25798;25813:10;25798:25;;;4081:42;;;;25561:2393;26800:4;;;;;;26807:7;26800:4;;;;;;;26780:10;26807:7;;:::i;:::-;5297:42;15943:691:20;;;;;;1235:61077:25;15943:691:20;;1235:61077:25;15943:691:20;;;;;;;;1235:61077:25;15943:691:20;;;;;;25561:2393:25;15943:691:20;1235:61077:25;15943:691:20;;1235:61077:25;;27218:614;;;15943:691:20;27218:614:25;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;15943:691:20;1235:61077:25;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;15943:691:20;1235:61077:25;;;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;15943:691:20;1235:61077:25;;;;;27218:614;15943:691:20;27218:614:25;-1:-1:-1;;27218:614:25;;;;;;;;:::i;:::-;1235:61077;;26934:995;;;;;;;6631:54;26934:995;;27884:15;1235:61077;26780:10;;5159:42;26934:995;;;;;;:::i;:::-;;;;1235:61077;5297:42;15943:691:20;26934:995:25;;;;;;;1235:61077;26934:995;;;26907:1022;;:::o;15943:691:20:-;;;;;;;;;;;;;;;1235:61077:25;15943:691:20;;;;25004:547:25;1235:61077;25109:14;;:33;;;;25004:547;25105:446;;;1235:61077;25174:6;1235:61077;;;;;;25174:6;1235:61077;;;;;;;25105:446;25004:547;;25105:446;1235:61077;25201:15;;:35;;;;25105:446;25197:354;;;1235:61077;25268:7;1235:61077;;;;;;25268:7;1235:61077;;;;;;;25197:354;25004:547;;25197:354;1235:61077;25296:16;;:37;;;;25197:354;25292:259;;;1235:61077;25365:7;1235:61077;;;;;;25365:7;1235:61077;;;;;;;25292:259;25004:547;;25292:259;1235:61077;25393:15;;:35;;;;;25292:259;-1:-1:-1;25389:162:25;;;25460:8;1235:61077;;;;;;25460:8;1235:61077;;;;;;;25389:162;25004:547;;25393:35;1235:61077;25412:16;;;25393:35;;;25296:37;25316:17;1235:61077;25316:17;;25296:37;;25201:35;25220:16;1235:61077;25220:16;;25201:35;;25109:33;25127:15;1235:61077;25127:15;;25109:33;;25008:39;25029:18;1235:61077;25029:18;;25008:39;;24827:48;24786:119;24854:21;;1235:61077;24854:21;;;:::i;:::-;1235:61077;24827:48;;24639:59;1235:61077;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;24639:59;;;24492:137;24614:14;;24592:37;24614:14;;;:::i;24592:37::-;24571:58;;24492:137;;;24197:3763;;;1235:61077;;24519:2;1235:61077;;24496:25;24492:137;24519:2;;;24532:24;;;:::i;:::-;24492:137;;-1:-1:-1;;;;;1235:61077:25;;24643:20;24639:59;;24492:137;24728:30;;;:::i;:::-;-1:-1:-1;24827:48:25;;-1:-1:-1;24827:13:25;;;;;24786:119;24827:48;;24786:119;;:::i;:::-;24932:22;;;;:::i;:::-;24980:13;;;:::i;:::-;1235:61077;25008:17;;:39;;;;24827:48;25004:547;;;1235:61077;25079:9;1235:61077;;;;;;25079:9;1235:61077;;;;;;;25004:547;;-1:-1:-1;;;;;1235:61077:25;;4081:42;25565:13;4081:42;;25630:9;;;:20;4081:42;;1235:61077;;26000:614;;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;23546:4;1235:61077;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;23546:4;1235:61077;;;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;26000:614;1235:61077;;;;;;;;;;23546:4;1235:61077;;;;;26000:614;23546:4;26000:614;-1:-1:-1;;26000:614:25;;;;;;;;:::i;:::-;1235:61077;;25696:1015;;;;;6631:54;25696:1015;;26666:15;1235:61077;25858:10;;;5159:42;25696:1015;;;;;;:::i;:::-;;;;;5297:42;26000:614;25696:1015;;;;;;;1235:61077;25696:1015;;;25669:1042;;:::o;25561:2393::-;26800:4;;;;26807:7;26800:4;;;;26780:10;26807:7;;:::i;:::-;5297:42;15943:691:20;;;;;;1235:61077:25;15943:691:20;;1235:61077:25;15943:691:20;;;;;;;23546:4:25;1235:61077;15943:691:20;;;;;;25561:2393:25;15943:691:20;1235:61077:25;15943:691:20;;1235:61077:25;;27218:614;;;15943:691:20;27218:614:25;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;23546:4;1235:61077;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;23546:4;1235:61077;;;;-1:-1:-1;;;1235:61077:25;;;;;5159:42;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;;;;-1:-1:-1;;;1235:61077:25;;;;15943:691:20;1235:61077:25;;;;;;;;;;23546:4;1235:61077;;;;;27218:614;23546:4;27218:614;-1:-1:-1;;27218:614:25;;;;;;;;:::i;:::-;1235:61077;;26934:995;;;;;;;6631:54;26934:995;;27884:15;1235:61077;26780:10;;26934:995;5159:42;26934:995;;;;;;:::i;15943:691:20:-;;;;;;;;;;;;;25004:547:25;1235:61077;25109:14;;:33;;;;25004:547;25105:446;;;1235:61077;25174:6;1235:61077;;;;;;25174:6;1235:61077;;;;;;;25105:446;25004:547;;25105:446;1235:61077;25201:15;;:35;;;;25105:446;25197:354;;;1235:61077;25268:7;1235:61077;;;;;;25268:7;1235:61077;;;;;;;25197:354;25004:547;;25197:354;1235:61077;25296:16;;:37;;;;25197:354;25292:259;;;1235:61077;25365:7;1235:61077;;;;;;25365:7;1235:61077;;;;;;;25292:259;25004:547;;25292:259;1235:61077;25393:15;;:35;;;;;25292:259;-1:-1:-1;25389:162:25;;;25460:8;1235:61077;;;;;;25460:8;1235:61077;;;;;;;25389:162;25004:547;;25393:35;1235:61077;25412:16;;;25393:35;;;25296:37;25316:17;1235:61077;25316:17;;25296:37;;25201:35;25220:16;1235:61077;25220:16;;25201:35;;25109:33;25127:15;1235:61077;25127:15;;25109:33;;25008:39;25029:18;1235:61077;25029:18;;25008:39;;24827:48;24786:119;24854:21;;1235:61077;24854:21;;;:::i;:::-;1235:61077;24827:48;;24639:59;1235:61077;;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;24639:59;;;24492:137;24614:14;;24592:37;24614:14;;;:::i;24592:37::-;24571:58;;24492:137;;;47131:976;;47249:852;;;;;;;-1:-1:-1;;47249:852:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47131:976::o;16555:658::-;1235:61077;16662:17;1235:61077;16695:14;1235:61077;16695:14;;:34;;;;16555:658;16691:56;;1235:61077;16761:15;;16757:37;;4469:42;16808:15;;:36;;;;16555:658;16804:58;;4599:42;16876:14;;16872:36;;4731:42;16922:15;;16918:38;;4731:42;16970:15;;:33;;;;16555:658;16970:55;;;;16555:658;16966:89;;4339:42;17069:16;;:37;;;;16555:658;17069:56;;;;16555:658;17065:93;;4879:42;17172:15;17168:38;;16555:658::o;17168:38::-;5016:42;;-1:-1:-1;17203:2:25;;-1:-1:-1;17189:17:25:o;17065:93::-;-1:-1:-1;4879:42:25;;-1:-1:-1;17155:2:25;;-1:-1:-1;17139:19:25:o;17069:56::-;17110:15;4339:42;17110:15;;17069:56;;:37;17089:17;4339:42;17089:17;;17069:37;;16966:89;-1:-1:-1;4339:42:25;;-1:-1:-1;17053:1:25;;-1:-1:-1;17039:16:25:o;16970:55::-;17007:18;4731:42;17007:18;;16970:55;;:33;16989:14;4731:42;16989:14;;16970:33;;16918:38;-1:-1:-1;4211:42:25;;-1:-1:-1;16953:2:25;;-1:-1:-1;16939:17:25:o;16872:36::-;-1:-1:-1;4731:42:25;;-1:-1:-1;16905:2:25;;-1:-1:-1;16892:16:25:o;16804:58::-;-1:-1:-1;4599:42:25;;-1:-1:-1;16860:1:25;;-1:-1:-1;16846:16:25:o;16808:36::-;16827:17;4469:42;16827:17;;16808:36;;16757:37;-1:-1:-1;4469:42:25;;-1:-1:-1;16792:1:25;;-1:-1:-1;16778:16:25:o;16691:56::-;-1:-1:-1;4081:42:25;;-1:-1:-1;16744:2:25;;-1:-1:-1;16731:16:25:o;16695:34::-;16713:16;1235:61077;16713:16;;16695:34;;1235:61077;;;;;;;;;;;;;:::o;58229:734::-;58374:2;1235:61077;;58362:14;58358:42;;1235:61077;58459:1;58442:460;58462:7;58374:2;58462:7;;;;1235:61077;-1:-1:-1;;;;;1235:61077:25;;;58229:734;:::o;58471:3::-;1235:61077;;;58540:4;;;;:::i;:::-;1235:61077;;;58567:7;58572:2;58567:7;;;:18;;;58471:3;58563:325;;;1235:61077;;;;;;;58563:325;;1235:61077;58447:13;;;;58563:325;58659:2;58654:7;;;:18;;;58563:325;58650:238;;;1235:61077;;;;;;;58650:238;58563:325;;58650:238;58746:2;58741:7;;;:19;;;58650:238;58737:151;;;1235:61077;;;;;;;58737:151;58563:325;;58741:19;58752:8;58757:3;58752:8;;;58741:19;;58654:18;58665:7;58670:2;58665:7;;;58654:18;;58567;58578:7;58583:2;58578:7;;;58567:18;;5094:152:19;9302:399;5094:152;1235:61077:25;5094:152:19;5204:10;9890:208;;;-1:-1:-1;9890:208:19;9302:399;-1:-1:-1;9302:399:19;;761:6;9302:399;;;;;;;;1235:61077:25;5094:152:19;:::o;1235:61077:25:-;;;;;;;:::o;:::-;;;;;;;;;;56329:1818;;;1235:61077;56573:10;;;:::i;:::-;1235:61077;56601:26;;:57;;;;;56329:1818;56597:248;;;1235:61077;;56895:15;1235:61077;56924:21;1235:61077;56959:17;1235:61077;56996:9;1235:61077;57007:7;;;;;;56991:601;57646:11;;;;;57642:185;57646:11;;;1235:61077;;57687:2;1235:61077;;57642:185;;57875:256;;56329:1818;;:::o;57875:256::-;57929:117;;58073:43;;-1:-1:-1;;;;;1235:61077:25;;4081:42;57929:12;4081:42;;57964:10;;:18;57985:9;1235:61077;57929:117;;58101:2;1235:61077;58095:3;1235:61077;;;58073:43;:::i;57929:117::-;58017:29;58035:10;;58017:29;;:::i;:::-;57929:117;;;57642:185;57726:24;;;;;;57722:105;;57642:185;;;;57722:105;1235:61077;;57780:2;1235:61077;;;;;57722:105;;;57016:3;57050:4;;;;:::i;:::-;1235:61077;;;;5994:10;57076:9;;;:22;;;57016:3;57072:506;;;1235:61077;;;57140:2;1235:61077;;5994:10;1235:61077;;;;;;;;57180:102;;;57072:506;1235:61077;57072:506;;1235:61077;56996:9;;;;;57180:102;1235:61077;;;57226:26;;;;57222:37;57180:102;57222:37;57254:5;;;;;57072:506;57310:9;;5994:10;57310:9;;;;;;:24;;;57072:506;57306:272;;;57358:17;;1235:61077;57358:17;57306:272;57072:506;;57306:272;5994:10;57404:9;;;;;;:25;;;57306:272;57400:178;;;57453:19;;1235:61077;57453:19;57400:178;57072:506;;57400:178;57501:9;;;;;57497:81;;1235:61077;57400:178;57072:506;;57497:81;57541:18;1235:61077;57541:18;;1235:61077;57541:18;57404:25;1235:61077;-1:-1:-1;;1235:61077:25;;57417:12;;57404:25;;57310:24;57323:11;;;57310:24;;57076:22;57089:9;5994:10;57089:9;;;57076:22;;56597:248;-1:-1:-1;56705:125:25;;-1:-1:-1;;;;;;;1235:61077:25;;4081:42;56705:12;4081:42;;56744:10;;:18;56765:9;1235:61077;56678:152;:::o;56705:125::-;56801:29;56819:10;;56801:29;;:::i;56601:57::-;1235:61077;56631:27;;;56601:57;;;48171:833;48294:704;;;;;;;;;;;;;;;-1:-1:-1;;48294:704:25;;;;;;;48171:833;:::o;48294:704::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;48294:704:25;;1235:61077;;;53707:1;1235:61077;;;;;;;:::o;:::-;;;53761:1;1235:61077;;;;;;;:::o;:::-;;;53815:1;1235:61077;;;;;;;:::o;:::-;;;51636:1;1235:61077;;;;;;;:::o;:::-;;;52750:1;1235:61077;;;;;;;:::o;:::-;;;53356:1;1235:61077;;;;;;;:::o;:::-;;;52410:1;1235:61077;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;51194:2832::-;51554:29;;;:::i;:::-;1235:61077;;51636:1;51620:17;;51636:1;;51701:8;;51664:47;51674:36;51701:8;;;:::i;:::-;;51674:36;;:::i;:::-;51664:47;:::i;:::-;51701:8;;;51960:36;51820;51847:8;;;:::i;51820:36::-;51929:8;51987;51902:36;51929:8;;;:::i;51902:36::-;51987:8;;:::i;:::-;;51960:36;;:::i;:::-;51757:281;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;51757:281;;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;51757:281;:::o;51725:649::-;52192:8;52281:36;52165;52192:8;;;:::i;:::-;;52165:36;;:::i;:::-;52250:8;52308;52223:36;52250:8;;;:::i;52281:36::-;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;52077:282;;;1235:61077;;;;;;;:::i;51616:2404::-;52410:1;52394:17;;52410:1;;52508:8;;;52481:36;52508:8;;;:::i;:::-;;52481:36;;:::i;:::-;52562:8;52643:36;52535;52562:8;;;:::i;:::-;;52535:36;;:::i;:::-;52616:8;52670;52589:36;52616:8;;;:::i;52589:36::-;52670:8;;:::i;52643:36::-;52427:286;;;;1235:61077;;;;;;;:::i;52390:1630::-;52750:1;52734:17;;52750:1;;52815:8;52778:47;52788:36;52815:8;;;:::i;52778:47::-;52815:8;;;52939:36;52966:8;;;:::i;52939:36::-;53137;53021;53048:8;;;:::i;53021:36::-;53106:8;53164;53079:36;53106:8;;;:::i;53079:36::-;53164:8;;:::i;53137:36::-;52871:320;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;52871:320;;;;:::o;52839:727::-;53323:36;53350:8;;;:::i;53323:36::-;53408:8;53497:36;53381;53408:8;;;:::i;53497:36::-;1235:61077;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;53230:321;;;;;:::o;52730:1290::-;53602:1;53586:17;53602:1;;53674:36;53701:8;;;:::i;53674:36::-;53728;53755:8;;;:::i;53728:36::-;53809:8;53890:36;53782;53809:8;;;:::i;53782:36::-;53863:8;53917;53836:36;53863:8;;;:::i;53836:36::-;53917:8;;:::i;53890:36::-;53649:291;;;;;;:::o;49972:1152::-;50310:29;;;:::i;:::-;50369:1;1235:61077;;50353:17;50349:339;;1235:61077;;50717:1;50701:17;50717:1;;50759:36;50786:8;;;:::i;50759:36::-;50813;50840:8;;;:::i;50813:36::-;50894:8;50975:36;50867;50894:8;;;:::i;50867:36::-;50948:8;51002;50921:36;50948:8;;;:::i;50349:339::-;50411:36;50438:8;;;:::i;50411:36::-;50465;50492:8;;;:::i;50465:36::-;50546:8;50627:36;50519;50546:8;;;:::i;50519:36::-;50600:8;50654;50573:36;50600:8;;;:::i;50573:36::-;50654:8;;:::i;49074:828::-;1235:61077;;54559:17;54575:1;54637:9;-1:-1:-1;54648:8:25;;;;;;1235:61077;-1:-1:-1;;1235:61077:25;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;1235:61077:25;;;;;;54782:31;;-1:-1:-1;54858:13:25;-1:-1:-1;54948:9:25;-1:-1:-1;54959:8:25;;;;;;1235:61077;;55197:41;1235:61077;;;;;;;;:::i;:::-;;;;55216:22;;1235:61077;55197:41;;;;:::i;:::-;;;;:::i;:::-;;49363:1;1235:61077;;49347:17;49343:231;;1235:61077;;49603:1;49587:17;49603:1;;49753:36;49645;49672:8;;;:::i;49645:36::-;49726:8;49780;49699:36;49726:8;;;:::i;49699:36::-;49780:8;;:::i;49753:36::-;49620:183;;;;:::o;49343:231::-;49513:36;49405;49432:8;;;:::i;49405:36::-;49486:8;49540;49459:36;49486:8;;;:::i;49459:36::-;49540:8;;:::i;54969:3::-;-1:-1:-1;;;1235:61077:25;54996:7;;;;:::i;:::-;1235:61077;;54996:20;54992:143;;54969:3;54575:1;1235:61077;54948:9;;54992:143;1235:61077;;55040:41;1235:61077;;;;;;;:::i;:::-;;;55061:20;1235:61077;55061:20;;1235:61077;54575:1;55046:11;1235:61077;55040:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;54575:1:25;1235:61077;;;54992:143;;1235:61077;;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;54658:3;-1:-1:-1;;;1235:61077:25;54685:7;;;;:::i;:::-;1235:61077;;54685:20;54681:74;;54658:3;54575:1;1235:61077;54637:9;;54681:74;54575:1;1235:61077;;;;54681:74;;32578:1835;;1235:61077;-1:-1:-1;;;;;1235:61077:25;;-1:-1:-1;;;;;1235:61077:25;;32737:15;32733:88;1235:61077;;;32754:17;32767:4;32733:88;;32838:36;;;;:::i;:::-;1235:61077;-1:-1:-1;;;;;1235:61077:25;;32888:18;32884:1523;;32578:1835;;:::o;32884:1523::-;1235:61077;;;-1:-1:-1;;;;;1235:61077:25;;;;32929:5;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:25;;-1:-1:-1;1235:61077:25;;;-1:-1:-1;;;;;1235:61077:25;-1:-1:-1;1235:61077:25;;;32968:18;;;32964:1433;;32578:1835;;:::o;32964:1433::-;-1:-1:-1;;;;;33024:37:25;;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;35255:222;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;35255:222;34699:325;1235:61077;34699:325;;1235:61077;34699:325;;1235:61077;35255:222;;;;;1235:61077;35255:222;;;1235:61077;;35255:222;;;;34699:325;1235:61077;34699:325;;;;;;;;;;1235:61077;34699:325;;1235:61077;34699:325;;1235:61077;;;;;:::i;:::-;;;;;;;;;33429:19;;;33425:157;;32964:1433;33603:19;;;33599:228;;32964:1433;33848:20;;;33844:231;;32964:1433;34096:21;;;34092:234;;32964:1433;1235:61077;;;;32964:1433;32578:1835::o;34092:234::-;34152:29;;;;:::i;:::-;1235:61077;34213:11;;4081:42;34207:17;;34203:105;34092:234;34203:105;1235:61077;;;;;;;;;;:::i;:::-;;;;;34262:23;;1235:61077;34203:105;;34092:234;;33844:231;33903:28;;;;:::i;:::-;1235:61077;33963:11;;4081:42;33957:17;;33953:104;;33844:231;;;;33953:104;1235:61077;;;;;;;;;;;:::i;:::-;;;;;34012:22;;1235:61077;33953:104;;;;;33599:228;33657:27;;;;:::i;:::-;1235:61077;33716:11;;4081:42;33710:17;;33706:103;;33599:228;;;;33706:103;1235:61077;;;;;;;;;;;:::i;:::-;;;;;33765:21;;1235:61077;33706:103;;;;;33425:157;33483:27;;;;;;;:::i;:::-;1235:61077;;;;;;;:::i;:::-;;;;;33542:21;;1235:61077;33425:157;;;;32733:88;32805:16;32733:88;;;14537:1358;;;;;1235:61077;14965:18;1235:61077;14993:19;1235:61077;;15044:2;1235:61077;;15026:20;15022:135;15044:2;;;15059:19;;;:::i;:::-;15022:135;;-1:-1:-1;;;;;1235:61077:25;;15171:22;15167:65;;15022:135;-1:-1:-1;1235:61077:25;;15044:2;15246:21;15044:2;;15281:20;;;;;;:::i;:::-;15242:153;;-1:-1:-1;;;;;1235:61077:25;;15409:23;15405:68;;15242:153;-1:-1:-1;15648:137:25;;15539:54;;;;15496:129;;15539:15;;;;:54;15496:129;:::i;:::-;15695:57;:16;;;;:57;15648:137;:::i;:::-;1235:61077;;;15796:92;;14537:1358;:::o;15796:92::-;15852:36;;;;;:::i;:::-;15834:54;;;15796:92;14537:1358::o;15405:68::-;15648:137;1235:61077;;;;;-1:-1:-1;;;;;1235:61077:25;;15496:129;1235:61077;;;;;;;;;;;;;;;;;;;;;;;;;;15405:68;;;;;;;;15242:153;15377:17;;;;15355:40;15377:17;;;:::i;15355:40::-;15328:67;;15242:153;;;15167:65;-1:-1:-1;;;;;1235:61077:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15167:65;;;;15022:135;15140:16;15118:39;15140:16;;;:::i;15118:39::-;15093:64;15022:135;;;59959:820;;60291:36;1235:61077;60210:36;1235:61077;;;60210:36;:::i;:::-;1235:61077;;60291:36;:::i;:::-;41616:2;1235:61077;;60348:40;;;60432:37;1235:61077;60432:37;1235:61077;;;60432:37;;;1235:61077;60432:37;;;1235:61077;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;60432:37;;-1:-1:-1;;60432:37:25;;;;;;:::i;:::-;60341:144;;60348:40;60515:43;60348:40;;;;60515:43;:::i;:::-;1235:61077;;60576:33;60572:93;;1235:61077;60432:37;1235:61077;;;60708:53;1235:61077;;;;;;;;;;;;60708:53;;;1235:61077;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;60708:53;;-1:-1:-1;;60708:53:25;;;;;;:::i;60572:93::-;60629:21;;:::o;59959:820::-;;;;1235:61077;60151:2;1235:61077;60220:25;60210:36;60220:25;;;;:::i;:::-;60210:36;:::i;:::-;1235:61077;;;;;60291:36;1235:61077;;60291:36;:::i;:::-;1235:61077;;;60348:40;;;60432:37;1235:61077;60432:37;1235:61077;;;60432:37;;;1235:61077;60432:37;;;1235:61077;;;;;;;;;;;;;-1:-1:-1;1235:61077:25;;;;60432:37;;-1:-1:-1;;60432:37:25;;;;;;:::i;:::-;60341:144;;60348:40;60515:43;60348:40;;;;60515:43;:::i;1235:61077::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;1235:61077:25;;;;:::i;:::-;;;;;;;;:::o;59036:583::-;;1235:61077;;;;;;:::i;:::-;59192:2;1235:61077;;;;;;;;-1:-1:-1;59225:7:25;59230:2;59225:7;;;;-1:-1:-1;59586:16:25;-1:-1:-1;59036:583:25:o;59234:3::-;1235:61077;;;59302:43;59544:1;1235:61077;;59336:2;1235:61077;;;;-1:-1:-1;;;;;1235:61077:25;;59302:43;:::i;:::-;1235:61077;;5994:10;;;;;;;59534:24;;1235:61077;;59549:9;;1235:61077;;;;;;59507:9;5994:10;59507:9;:::i;:::-;1235:61077;;59496:20;1235:61077;;;59496:20;;-1:-1:-1;59496:20:25;;;:::i;:::-;;5994:10;1235:61077;;;;;;;;;5994:10;;;59549:9;:::i;:::-;-1:-1:-1;59534:24:25;1235:61077;;59534:24;;:::i;:::-;;1235:61077;59214:9;;17310:479;1235:61077;17428:17;-1:-1:-1;;;;;1235:61077:25;;;4469:42;17461:13;;17457:37;;4599:42;17508:13;;17504:37;;4731:42;17555:12;;17551:36;;4211:42;17601:13;;17597:38;;4339:42;17649:13;;17645:37;;4879:42;17696:15;;17692:42;;5016;17748:13;17744:38;;17310:479::o;17744:38::-;1235:61077;;;;;;;;;:::i;:::-;;;;;;;;;17763:19;17779:2;17763:19;:::o;17692:42::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17713:21;17731:2;17713:21;:::o;17645:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17664:18;17680:1;17664:18;:::o;17597:38::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17616:19;17632:2;17616:19;:::o;17551:36::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17569:18;17584:2;17569:18;:::o;17504:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17523:18;17539:1;17523:18;:::o;17457:37::-;1235:61077;;;;;;;;;;:::i;:::-;;;;;;;;;17476:18;17492:1;17476:18;:::o;55766:497::-;;1235:61077;;55955:3;1235:61077;;55940:13;;;;55997:2;55988:4;;;;:::i;:::-;1235:61077;;;55982:17;;:38;;;55955:3;55978:228;;;1235:61077;56074:4;56062:2;1235:61077;;56074:4;;;;:::i;:::-;1235:61077;;;;;;;;55978:228;1235:61077;55929:9;;;55982:38;56009:4;56018:2;56009:4;;;;:::i;:::-;1235:61077;;;56003:17;;55982:38;;55940:13;;-1:-1:-1;;55766:497:25:o;36579:426::-;36710:289;;;36579:426;;;;36710:289;;;;;;;;;;36579:426;:::o;1235:61077::-;;;;;;;;;;;:::o;54353:902::-;;1235:61077;;54559:17;54575:1;54637:9;-1:-1:-1;54648:8:25;;;;;;1235:61077;-1:-1:-1;;1235:61077:25;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;1235:61077:25;;;;;;54782:31;;;-1:-1:-1;54858:13:25;-1:-1:-1;54948:9:25;-1:-1:-1;54959:8:25;;;;;;1235:61077;55197:41;1235:61077;;;;;;;;;;:::i;:::-;;;;55216:22;;1235:61077;55197:41;;;;:::i;:::-;;;:::i;:::-;;54353:902::o;54969:3::-;-1:-1:-1;;;1235:61077:25;54996:7;;;;:::i;:::-;1235:61077;;54996:20;54992:143;;54969:3;54575:1;1235:61077;54948:9;;54992:143;1235:61077;;55040:41;1235:61077;;;;;;;:::i;:::-;;;55061:20;1235:61077;55061:20;;1235:61077;54575:1;55046:11;1235:61077;55040:41;;;;;:::i;:::-;-1:-1:-1;54575:1:25;1235:61077;;;54992:143;;1235:61077;;;;;;;;:::i;:::-;-1:-1:-1;1235:61077:25;;-1:-1:-1;1235:61077:25;;;;;;;;;;;;;54658:3;-1:-1:-1;;;1235:61077:25;54685:7;;;;:::i;:::-;1235:61077;;54685:20;54681:74;;54658:3;54575:1;1235:61077;54637:9;;54681:74;54575:1;1235:61077;;;;54681:74;;55322:379;;;55506:32;55516:8;;;4081:42;;;1235:61077;;55506:32;:::i;:::-;55557:9;-1:-1:-1;55588:3:25;1235:61077;;55568:18;;;;4081:42;1235:61077;55623:20;1235:61077;4081:42;;;1235:61077;55623:20;;:::i;:::-;1235:61077;;-1:-1:-1;55611:32:25;;;;;:::i;:::-;;1235:61077;55557:9;;55568:18;-1:-1:-1;55568:18:25;;-1:-1:-1;;55322:379:25:o;54113:172::-;1235:61077;54199:10;;;:::i;:::-;:19;54195:36;;1235:61077;;;;;;;;5994:10;1235:61077;;;;54249:12;;:28;;;;54241:37;;54113:172;:::o;54249:28::-;1235:61077;;;;;;;;5994:10;1235:61077;;;54265:12;;54113:172;:::o;54195:36::-;54220:11;54227:4;54220:11;:::o;17862:791::-;;;-1:-1:-1;;;;;1235:61077:25;;;4879:42;18005:16;;:34;;;17862:791;18001:101;;5016:42;18116:14;;:32;;;17862:791;18112:99;;4469:42;18225:14;;:32;;;17862:791;18221:99;;4211:42;18334:14;;:32;;;17862:791;18330:99;;4731:42;18443:13;;:31;;;17862:791;18439:98;;4339:42;18551:14;:32;;;;17862:791;18547:99;;;17862:791::o;18547:99::-;18604:42;;-1:-1:-1;18597:49:25:o;18551:32::-;4211:42;1235:61077;;-1:-1:-1;;;;;1235:61077:25;18569:14;18551:32;;;18439:98;-1:-1:-1;18495:42:25;;-1:-1:-1;;18488:49:25:o;18443:31::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:25;;18460:14;18443:31;;18330:99;-1:-1:-1;18387:42:25;;-1:-1:-1;;18380:49:25:o;18334:32::-;1235:61077;4599:42;-1:-1:-1;;;;;1235:61077:25;;18352:14;18334:32;;18221:99;-1:-1:-1;18278:42:25;;-1:-1:-1;;18271:49:25:o;18225:32::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:25;;18243:14;18225:32;;18112:99;-1:-1:-1;18169:42:25;;-1:-1:-1;;18162:49:25:o;18116:32::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:25;;18134:14;18116:32;;18001:101;-1:-1:-1;18060:42:25;;-1:-1:-1;;18053:49:25:o;18005:34::-;1235:61077;4211:42;-1:-1:-1;;;;;1235:61077:25;;18025:14;18005:34;;61590:720;;61698:606;;;-1:-1:-1;;61698:606:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;61698:606:25;;;;;;;;;-1:-1:-1;;61698:606:25;;;;;;;;61590:720::o;60837:584::-;;1235:61077;;60993:10;;61048:79;61055:8;;;:32;;;61048:79;61055:32;;;-1:-1:-1;;1235:61077:25;61048:79;;61055:32;;;61144:10;;61140:67;;61248:14;;;:::i;:::-;61281:9;61062:1;61292:8;;;;;;-1:-1:-1;61377:27:25;;-1:-1:-1;;60837:584:25:o;61302:3::-;61343:6;1235:61077;61343:6;1235:61077;61343:6;;;:::i;:::-;1235:61077;;61062:1;61325:24;;;;;:::i;:::-;;1235:61077;61281:9;;61055:32;1235:61077;5994:10;1235:61077;61067:12;-1:-1:-1;;1235:61077:25;;61067:12;;:::i;:::-;1235:61077;;61067:20;61055:32;;59696:193;1235:61077;;;;59817:3;59806:14;59854:2;59850:6;;59854:2;;;59859:4;59850:20;;1235:61077;;5994:10;;59696:193;:::o;59850:20::-;59866:4;59850:20;;","linkReferences":{}},"methodIdentifiers":{"addresses(string)":"bdfe7d47","cancelOrder(bytes32)":"7489ec23","checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"a35e6511","command(string)":"5fcc4500","command(string[])":"52a13e88","escrow(string,string,string,string,string)":"1db51297","executeOrder(bytes32)":"049b76c4","lock(string,string,string,string,string)":"fdbfc0a6","names(address)":"5cf3d346","order(string,string,string,string,string)":"d315e54f","orderHashes(uint256)":"df69558c","orders(bytes32)":"9c3f1e90","pairs(address,address)":"69454b86","previewCommand(string)":"bfe68676","send(string,string,string)":"5615264d","setName(address,string)":"3121db1c","setPair(address,address,address)":"7bb41012","swap(string,string,string,string,string)":"6662c9e3","translateCommand(bytes)":"04659197","translateExecute(bytes)":"f12a64eb","translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"579a8c4c","whatIsTheAddressOf(string)":"c47d04e2","whatIsTheNameOf(address)":"5a274d62"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"PairSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"addresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"checkUserOp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"intentMatched\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"intents\",\"type\":\"string[]\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"executeOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addresses\",\"type\":\"address\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"order\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orderHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"expiry\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"pairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"previewCommand\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executeCallData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOutMin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateCommand\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateExecute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"translateUserOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"whatIsTheAddressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"whatIsTheNameOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"InsufficientSwap()\":[{\"details\":\"Insufficient swap output.\"}],\"InvalidCharacter()\":[{\"details\":\"Non-numeric character.\"}],\"InvalidReceiver()\":[{\"details\":\"Invalid out receiver.\"}],\"InvalidSelector()\":[{\"details\":\"Invalid selector for spend.\"}],\"InvalidSwap()\":[{\"details\":\"0-liquidity.\"}],\"InvalidSyntax()\":[{\"details\":\"Invalid command.\"}],\"OrderExpired()\":[{\"details\":\"Order expiry has arrived.\"}],\"Overflow()\":[{\"details\":\"Bad math.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"Unauthorized()\":[{\"details\":\"Invalid function caller.\"}]},\"events\":{\"NameSet(address,string)\":{\"details\":\"Logs the setting of a token name.\"},\"PairSet(address,address,address)\":{\"details\":\"Logs the setting of a swap pool pair on Uniswap V3.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOrder(bytes32)\":{\"details\":\"Cancels a standing order by the `maker`.\"},\"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`.\"},\"command(string)\":{\"details\":\"Executes a text command from an `intent` string.\"},\"command(string[])\":{\"details\":\"Executes batch of text commands from an `intents` string.\"},\"constructor\":{\"details\":\"Constructs this IE on Ethereum with ENS `ASCII_MAP`.\"},\"escrow(string,string,string,string,string)\":{\"details\":\"Executes an `escrow` command from the parts of a matched intent string.\"},\"executeOrder(bytes32)\":{\"details\":\"Executes a standing order for the `receiver`.\"},\"lock(string,string,string,string,string)\":{\"details\":\"Executes a `lock` command from the parts of a matched intent string.\"},\"order(string,string,string,string,string)\":{\"details\":\"Executes an `order` command from the parts of a matched intent string.\"},\"previewCommand(string)\":{\"details\":\"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'.\"},\"send(string,string,string)\":{\"details\":\"Executes a `send` command from the parts of a matched intent string.\"},\"setName(address,string)\":{\"details\":\"Sets a public `name` tag for a given `token` address. Governed by DAO.\"},\"setPair(address,address,address)\":{\"details\":\"Sets a public pool `pair` for swapping tokens. Governed by DAO.\"},\"swap(string,string,string,string,string)\":{\"details\":\"Executes a `swap` command from the parts of a matched intent string.\"},\"translateCommand(bytes)\":{\"details\":\"Translates an `intent` from raw `command()` calldata.\"},\"translateExecute(bytes)\":{\"details\":\"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match.\"},\"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Translate packed ERC4337 userOp `callData` into readable `intent`.\"},\"whatIsTheAddressOf(string)\":{\"details\":\"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address.\"},\"whatIsTheNameOf(address)\":{\"details\":\"Returns ENS reverse name resolution details.\"}},\"stateVariables\":{\"ASCII_MAP\":{\"details\":\"String mapping for `ENSAsciiNormalizer` logic.\"},\"CURIA\":{\"details\":\"The resolution registry smart account.\"},\"DAI\":{\"details\":\"The Maker DAO USD stablecoin address.\"},\"DAO\":{\"details\":\"The governing DAO address.\"},\"ENS_REGISTRY\":{\"details\":\"ENS fallback registry contract.\"},\"ENS_REVERSE\":{\"details\":\"ENS reverse registrar contract.\"},\"ENS_WRAPPER\":{\"details\":\"ENS name wrapper token contract.\"},\"ESCROWS\":{\"details\":\"The Escrows protocol singleton.\"},\"ETH\":{\"details\":\"The conventional ERC7528 ETH address.\"},\"MAX_SQRT_RATIO_MINUS_ONE\":{\"details\":\"The maximum value that can be returned from `getSqrtRatioAtTick` (minus one).\"},\"MIN_SQRT_RATIO_PLUS_ONE\":{\"details\":\"The minimum value that can be returned from `getSqrtRatioAtTick` (plus one).\"},\"RETH\":{\"details\":\"The Rocket Pool Staked ETH token address.\"},\"UNISWAP_V3_FACTORY\":{\"details\":\"The address of the Uniswap V3 Factory.\"},\"UNISWAP_V3_POOL_INIT_CODE_HASH\":{\"details\":\"The Uniswap V3 Pool `initcodehash`.\"},\"USDC\":{\"details\":\"The Circle USD stablecoin address.\"},\"USDT\":{\"details\":\"The Tether USD stablecoin address.\"},\"WBTC\":{\"details\":\"The popular wrapped BTC address.\"},\"WETH\":{\"details\":\"The canonical wrapped ETH address.\"},\"WSTETH\":{\"details\":\"The Lido Wrapped Staked ETH token address.\"},\"_REENTRANCY_GUARD_SLOT\":{\"details\":\"Equivalent to: `uint72(bytes9(keccak256(\\\"_REENTRANCY_GUARD_SLOT\\\")))`.\"},\"_idnamap\":{\"details\":\"Each index in idnamap refers to an ascii code point. If idnamap[char] > 2, char maps to a valid ascii character. Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. Modified from `ENSAsciiNormalizer` deployed by royalfork.eth (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758).\"},\"addresses\":{\"details\":\"DAO-governed token names to addresses.\"},\"names\":{\"details\":\"DAO-governed token addresses to names.\"},\"orderHashes\":{\"details\":\"Array of onchain order struct hashes.\"},\"orders\":{\"details\":\"Open order book for p2p asset exchange.\"},\"pairs\":{\"details\":\"DAO-governed token swap pool routing on Uniswap V3.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSwap"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidSelector"},{"inputs":[],"type":"error","name":"InvalidSwap"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"type":"error","name":"OrderExpired"},{"inputs":[],"type":"error","name":"Overflow"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":false},{"internalType":"address","name":"token1","type":"address","indexed":false},{"internalType":"address","name":"pair","type":"address","indexed":false}],"type":"event","name":"PairSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelOrder"},{"inputs":[{"internalType":"string","name":"intent","type":"string"},{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"checkUserOp","outputs":[{"internalType":"bool","name":"intentMatched","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"intents","type":"string[]"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"executeOrder"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"lock","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"addresses","type":"address"}],"stateMutability":"view","type":"function","name":"names","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"order","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orderHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"uint48","name":"expiry","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"previewCommand","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"executeCallData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"}],"stateMutability":"payable","type":"function","name":"send"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"payable","type":"function","name":"setName"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"payable","type":"function","name":"setPair"},{"inputs":[{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOutMin","type":"string"},{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"swap"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"translateCommand","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"view","type":"function","name":"translateExecute","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"translateUserOp","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"whatIsTheAddressOf","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"whatIsTheNameOf","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"cancelOrder(bytes32)":{"details":"Cancels a standing order by the `maker`."},"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`."},"command(string)":{"details":"Executes a text command from an `intent` string."},"command(string[])":{"details":"Executes batch of text commands from an `intents` string."},"constructor":{"details":"Constructs this IE on Ethereum with ENS `ASCII_MAP`."},"escrow(string,string,string,string,string)":{"details":"Executes an `escrow` command from the parts of a matched intent string."},"executeOrder(bytes32)":{"details":"Executes a standing order for the `receiver`."},"lock(string,string,string,string,string)":{"details":"Executes a `lock` command from the parts of a matched intent string."},"order(string,string,string,string,string)":{"details":"Executes an `order` command from the parts of a matched intent string."},"previewCommand(string)":{"details":"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'."},"send(string,string,string)":{"details":"Executes a `send` command from the parts of a matched intent string."},"setName(address,string)":{"details":"Sets a public `name` tag for a given `token` address. Governed by DAO."},"setPair(address,address,address)":{"details":"Sets a public pool `pair` for swapping tokens. Governed by DAO."},"swap(string,string,string,string,string)":{"details":"Executes a `swap` command from the parts of a matched intent string."},"translateCommand(bytes)":{"details":"Translates an `intent` from raw `command()` calldata."},"translateExecute(bytes)":{"details":"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match."},"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Translate packed ERC4337 userOp `callData` into readable `intent`."},"whatIsTheAddressOf(string)":{"details":"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address."},"whatIsTheNameOf(address)":{"details":"Returns ENS reverse name resolution details."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/IAEth.sol/IEscrows.json b/out/IAEth.sol/IEscrows.json index 16e8535..9d57971 100644 --- a/out/IAEth.sol/IEscrows.json +++ b/out/IAEth.sol/IEscrows.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"escrow","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"escrow(address,address,address,address,uint256,string,uint256)":"8e3de7ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Escrows protocol locking interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IEscrows\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IEscrows"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"function","name":"escrow","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"escrow(address,address,address,address,uint256,string,uint256)":"8e3de7ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Escrows protocol locking interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IEscrows\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IEscrows"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/IAEth.sol/IExecutor.json b/out/IAEth.sol/IExecutor.json index 4dacb4a..6e4db60 100644 --- a/out/IAEth.sol/IExecutor.json +++ b/out/IAEth.sol/IExecutor.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"execute","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(address,uint256,bytes)":"b61d27f6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple calldata executor interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"function","name":"execute","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(address,uint256,bytes)":"b61d27f6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple calldata executor interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/IAEth.sol/ISwapRouter.json b/out/IAEth.sol/ISwapRouter.json index 0620ca8..54ead58 100644 --- a/out/IAEth.sol/ISwapRouter.json +++ b/out/IAEth.sol/ISwapRouter.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"swap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Uniswap V3 swapping interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"ISwapRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"function","name":"swap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Uniswap V3 swapping interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"ISwapRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/IAEth.sol/IToken.json b/out/IAEth.sol/IToken.json index 7268f63..9adc35c 100644 --- a/out/IAEth.sol/IToken.json +++ b/out/IAEth.sol/IToken.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple token handler interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":3} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple token handler interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAEth.sol\":\"IToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IAEth.sol\":{\"keccak256\":\"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f\",\"dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAEth.sol":"IToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IAEth.sol":{"keccak256":"0xee7afba7af64a06504399f6dc0c1943f61f17b140b131009da8358c288095305","urls":["bzz-raw://de40096fd012ef3c0a1be05713548f0368c9cbf9b4e6ab27bf305823cd18028f","dweb:/ipfs/Qme5Z6e9UBZmyAFTZmZFbx2jCvAk9VxNRXCr2Lxp1ZLR4F"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file diff --git a/out/IERC165.sol/IERC165.json b/out/IERC165.sol/IERC165.json index c2335c5..04c32f1 100644 --- a/out/IERC165.sol/IERC165.json +++ b/out/IERC165.sol/IERC165.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC165.sol":"IERC165"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file +{"abi":[{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC165.sol":"IERC165"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"}},"version":1},"id":12} \ No newline at end of file diff --git a/out/IERC20.sol/IERC20.json b/out/IERC20.sol/IERC20.json index 93ed034..63e7e65 100644 --- a/out/IERC20.sol/IERC20.json +++ b/out/IERC20.sol/IERC20.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"}},"version":1},"id":24} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file diff --git a/out/IERC721.sol/IERC721.json b/out/IERC721.sol/IERC721.json index 398d710..22916c7 100644 --- a/out/IERC721.sol/IERC721.json +++ b/out/IERC721.sol/IERC721.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x80ac58cd.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x80ac58cd.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/IERC721.sol/IERC721Enumerable.json b/out/IERC721.sol/IERC721Enumerable.json index 4f4a689..1d6b610 100644 --- a/out/IERC721.sol/IERC721Enumerable.json +++ b/out/IERC721.sol/IERC721Enumerable.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x780e9d63.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenByIndex(uint256)\":{\"details\":\"Throws if `_index` >= `totalSupply()`.\",\"params\":{\"_index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT, (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.\",\"params\":{\"_index\":\"A counter less than `balanceOf(_owner)`\",\"_owner\":\"An address where we are interested in NFTs owned by them\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Enumerate NFTs assigned to an owner\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenByIndex(uint256)":{"details":"Throws if `_index` >= `totalSupply()`.","params":{"_index":"A counter less than `totalSupply()`"},"returns":{"_0":"The token identifier for the `_index`th NFT, (sort order not specified)"}},"tokenOfOwnerByIndex(address,uint256)":{"details":"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.","params":{"_index":"A counter less than `balanceOf(_owner)`","_owner":"An address where we are interested in NFTs owned by them"},"returns":{"_0":"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)"}},"totalSupply()":{"returns":{"_0":"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"tokenByIndex(uint256)":{"notice":"Enumerate valid NFTs"},"tokenOfOwnerByIndex(address,uint256)":{"notice":"Enumerate NFTs assigned to an owner"},"totalSupply()":{"notice":"Count NFTs tracked by this contract"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Enumerable"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tokenByIndex","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokenOfOwnerByIndex","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x780e9d63.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenByIndex(uint256)\":{\"details\":\"Throws if `_index` >= `totalSupply()`.\",\"params\":{\"_index\":\"A counter less than `totalSupply()`\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT, (sort order not specified)\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.\",\"params\":{\"_index\":\"A counter less than `balanceOf(_owner)`\",\"_owner\":\"An address where we are interested in NFTs owned by them\"},\"returns\":{\"_0\":\"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)\"}},\"totalSupply()\":{\"returns\":{\"_0\":\"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"tokenByIndex(uint256)\":{\"notice\":\"Enumerate valid NFTs\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"notice\":\"Enumerate NFTs assigned to an owner\"},\"totalSupply()\":{\"notice\":\"Count NFTs tracked by this contract\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenByIndex(uint256)":{"details":"Throws if `_index` >= `totalSupply()`.","params":{"_index":"A counter less than `totalSupply()`"},"returns":{"_0":"The token identifier for the `_index`th NFT, (sort order not specified)"}},"tokenOfOwnerByIndex(address,uint256)":{"details":"Throws if `_index` >= `balanceOf(_owner)` or if `_owner` is the zero address, representing invalid NFTs.","params":{"_index":"A counter less than `balanceOf(_owner)`","_owner":"An address where we are interested in NFTs owned by them"},"returns":{"_0":"The token identifier for the `_index`th NFT assigned to `_owner`, (sort order not specified)"}},"totalSupply()":{"returns":{"_0":"A count of valid NFTs tracked by this contract, where each one of them has an assigned and queryable owner not equal to the zero address"}},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"tokenByIndex(uint256)":{"notice":"Enumerate valid NFTs"},"tokenOfOwnerByIndex(address,uint256)":{"notice":"Enumerate NFTs assigned to an owner"},"totalSupply()":{"notice":"Count NFTs tracked by this contract"},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Enumerable"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/IERC721.sol/IERC721Metadata.json b/out/IERC721.sol/IERC721Metadata.json index db2a340..c084a81 100644 --- a/out/IERC721.sol/IERC721Metadata.json +++ b/out/IERC721.sol/IERC721Metadata.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"_name","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x5b5e139f.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Metadata"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"_approved","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"_name","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721 Note: the ERC-165 identifier for this interface is 0x5b5e139f.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"_approved\":\"The new approved NFT controller\",\"_tokenId\":\"The NFT to approve\"}},\"balanceOf(address)\":{\"details\":\"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.\",\"params\":{\"_owner\":\"An address for whom to query the balance\"},\"returns\":{\"_0\":\"The number of NFTs owned by `_owner`, possibly zero\"}},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"_0\":\"The approved address for this NFT, or the zero address if there is none\"}},\"isApprovedForAll(address,address)\":{\"params\":{\"_operator\":\"The address that acts on behalf of the owner\",\"_owner\":\"The address that owns the NFTs\"},\"returns\":{\"_0\":\"True if `_operator` is an approved operator for `_owner`, false otherwise\"}},\"ownerOf(uint256)\":{\"details\":\"NFTs assigned to zero address are considered invalid, and queries about them do throw.\",\"params\":{\"_tokenId\":\"The identifier for an NFT\"},\"returns\":{\"_0\":\"The address of the owner of the NFT\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"This works identically to the other function with an extra data parameter, except this function just sets data to \\\"\\\".\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\",\"data\":\"Additional data with no specified format, sent in call to `_to`\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.\",\"params\":{\"_approved\":\"True if the operator is approved, false to revoke approval\",\"_operator\":\"Address to add to the set of authorized operators\"}},\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceID\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\".\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_from\":\"The current owner of the NFT\",\"_to\":\"The new owner\",\"_tokenId\":\"The NFT to transfer\"}}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"balanceOf(address)\":{\"notice\":\"Count all NFTs assigned to an owner\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"isApprovedForAll(address,address)\":{\"notice\":\"Query if an address is an authorized operator for another address\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"ownerOf(uint256)\":{\"notice\":\"Find the owner of an NFT\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers the ownership of an NFT from one address to another address\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"The zero address indicates there is no approved address. Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"_approved":"The new approved NFT controller","_tokenId":"The NFT to approve"}},"balanceOf(address)":{"details":"NFTs assigned to the zero address are considered invalid, and this function throws for queries about the zero address.","params":{"_owner":"An address for whom to query the balance"},"returns":{"_0":"The number of NFTs owned by `_owner`, possibly zero"}},"getApproved(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT.","params":{"_tokenId":"The NFT to find the approved address for"},"returns":{"_0":"The approved address for this NFT, or the zero address if there is none"}},"isApprovedForAll(address,address)":{"params":{"_operator":"The address that acts on behalf of the owner","_owner":"The address that owns the NFTs"},"returns":{"_0":"True if `_operator` is an approved operator for `_owner`, false otherwise"}},"ownerOf(uint256)":{"details":"NFTs assigned to zero address are considered invalid, and queries about them do throw.","params":{"_tokenId":"The identifier for an NFT"},"returns":{"_0":"The address of the owner of the NFT"}},"safeTransferFrom(address,address,uint256)":{"details":"This works identically to the other function with an extra data parameter, except this function just sets data to \"\".","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT. When transfer is complete, this function checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer","data":"Additional data with no specified format, sent in call to `_to`"}},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.","params":{"_approved":"True if the operator is approved, false to revoke approval","_operator":"Address to add to the set of authorized operators"}},"supportsInterface(bytes4)":{"details":"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.","params":{"interfaceID":"The interface identifier, as specified in ERC-165"},"returns":{"_0":"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise"}},"tokenURI(uint256)":{"details":"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \"ERC721 Metadata JSON Schema\"."},"transferFrom(address,address,uint256)":{"details":"Throws unless `msg.sender` is the current owner, an authorized operator, or the approved address for this NFT. Throws if `_from` is not the current owner. Throws if `_to` is the zero address. Throws if `_tokenId` is not a valid NFT.","params":{"_from":"The current owner of the NFT","_to":"The new owner","_tokenId":"The NFT to transfer"}}},"version":1},"userdoc":{"kind":"user","methods":{"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"balanceOf(address)":{"notice":"Count all NFTs assigned to an owner"},"getApproved(uint256)":{"notice":"Get the approved address for a single NFT"},"isApprovedForAll(address,address)":{"notice":"Query if an address is an authorized operator for another address"},"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"ownerOf(uint256)":{"notice":"Find the owner of an NFT"},"safeTransferFrom(address,address,uint256)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"safeTransferFrom(address,address,uint256,bytes)":{"notice":"Transfers the ownership of an NFT from one address to another address"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"supportsInterface(bytes4)":{"notice":"Query if a contract implements an interface"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"},"tokenURI(uint256)":{"notice":"A distinct Uniform Resource Identifier (URI) for a given asset."},"transferFrom(address,address,uint256)":{"notice":"Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721Metadata"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/IERC721.sol/IERC721TokenReceiver.json b/out/IERC721.sol/IERC721TokenReceiver.json index 628fa20..ff62f03 100644 --- a/out/IERC721.sol/IERC721TokenReceiver.json +++ b/out/IERC721.sol/IERC721TokenReceiver.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format\",\"_from\":\"The address which previously owned the token\",\"_operator\":\"The address which called `safeTransferFrom` function\",\"_tokenId\":\"The NFT identifier which is being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))` unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format","_from":"The address which previously owned the token","_operator":"The address which called `safeTransferFrom` function","_tokenId":"The NFT identifier which is being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))` unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721TokenReceiver"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file +{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"_operator","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note: the ERC-165 identifier for this interface is 0x150b7a02.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.\",\"params\":{\"_data\":\"Additional data with no specified format\",\"_from\":\"The address which previously owned the token\",\"_operator\":\"The address which called `safeTransferFrom` function\",\"_tokenId\":\"The NFT identifier which is being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))` unless throwing\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Handle the receipt of an NFT\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC721.sol\":\"IERC721TokenReceiver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"The ERC721 smart contract calls this function on the recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted. Note: the contract address is always the message sender.","params":{"_data":"Additional data with no specified format","_from":"The address which previously owned the token","_operator":"The address which called `safeTransferFrom` function","_tokenId":"The NFT identifier which is being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))` unless throwing"}}},"version":1},"userdoc":{"kind":"user","methods":{"onERC721Received(address,address,uint256,bytes)":{"notice":"Handle the receipt of an NFT"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC721.sol":"IERC721TokenReceiver"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"}},"version":1},"id":14} \ No newline at end of file diff --git a/out/IEth.sol/IENSHelper.json b/out/IEth.sol/IENSHelper.json index 42b9f24..214026a 100644 --- a/out/IEth.sol/IENSHelper.json +++ b/out/IEth.sol/IENSHelper.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addr","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"node","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolver","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addr(bytes32)":"3b3b57de","name(bytes32)":"691f3431","node(address)":"bffbe61c","owner(bytes32)":"02571be3","ownerOf(uint256)":"6352211e","resolver(bytes32)":"0178b8bf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ENS name resolution helper contracts interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IENSHelper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IENSHelper"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"addr","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"node","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"resolver","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addr(bytes32)":"3b3b57de","name(bytes32)":"691f3431","node(address)":"bffbe61c","owner(bytes32)":"02571be3","ownerOf(uint256)":"6352211e","resolver(bytes32)":"0178b8bf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ENS name resolution helper contracts interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IENSHelper\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"addr","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"node","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IENSHelper"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IEth.sol/IETH.json b/out/IEth.sol/IETH.json index 8b9ce57..33a0ffb 100644 --- a/out/IEth.sol/IETH.json +++ b/out/IEth.sol/IETH.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addresses","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkUserOp","inputs":[{"name":"intent","type":"string","internalType":"string"},{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intentMatched","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"command","inputs":[{"name":"intents","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"command","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"escrow","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"executeOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lock","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"names","inputs":[{"name":"addresses","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"order","inputs":[{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"orderHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"maker","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"nonce","type":"uint48","internalType":"uint48"},{"name":"expiry","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previewCommand","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"executeCallData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"send","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setName","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swap","inputs":[{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOutMin","type":"string","internalType":"string"},{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"translateCommand","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"translateExecute","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"translateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheAddressOf","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"node","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheNameOf","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"NameSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PairSet","inputs":[{"name":"token0","type":"address","indexed":false,"internalType":"address"},{"name":"token1","type":"address","indexed":false,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsufficientSwap","inputs":[]},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidReceiver","inputs":[]},{"type":"error","name":"InvalidSelector","inputs":[]},{"type":"error","name":"InvalidSwap","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"Overflow","inputs":[]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040525f5b61000e6100e2565b5181146100d35761002a6100206100e2565b600183019061015e565b5160f81c5f5b6100418361003c6100e2565b61015e565b5160f81c60ff8216146100c957600454680100000000000000008110156100b55760018101806004558110156100a15760ff9160019160045f5260205f208160051c019060f882549160031b16908587831b921b19161790550116610030565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5050600201610006565b604051615de090816101708239f35b60405190608082016001600160401b038111838210176100b5576040908152604483527f2d00020101000a010700016101620163016401650166016701680169016a016b60208401527f016c016d016e016f0170017101720173017401750176017701780179017a060090830152621a010560e81b6060830152565b9081518110156100a157016020019056fe6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614c8b565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614c8b565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b93929092614ff0565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b95615667565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef6846153ce565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b61521b565b96166152e3565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b61521b565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a915092602560206131096131038297615120565b936152e3565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a615667565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a3982615667565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b6146569033906156f0565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b69033906156f0565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a81615731565b805160058103614a475750906149a161499c614995846148ec565b518361589a565b615905565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b519061589a565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b518561589a565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b518461589a565b90614a92614a7c614a75856148fc565b518661589a565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b9781615731565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b614c2881615731565b916004835114614c665782516005036117ae57614c60614c4a614a5e856148fc565b926149cb614c5a614995876148ec565b9561490c565b91929190565b614c60614c75614a5e856148ec565b926149cb614c856149958761490c565b9561493d565b915f6001600160a01b0383166001600160a01b038516105f14614fe957506001915b614cb781856159ea565b936001600160a01b03851615614ccb575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614d0b575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f603552604051614edd8161120a565b5f81525f602082015294803b614fbf575b50803b614f81575b50803b614f43575b50813b614f0d575b5050511691565b81614f17916156f0565b6020830151811115614f06579091508260405192614f348461120a565b16825260208201525f80614f06565b614f4d81836156f0565b60208501518111614f5f575b50614efe565b909193508460405192614f718461120a565b1682526020820152915f80614f59565b614f8b81846156f0565b60208601518111614f9d575b50614ef6565b909194508560405192614faf8461120a565b1682526020820152925f80614f97565b909450614fcc81846156f0565b8660405192614fda8461120a565b1682526020820152935f614eee565b9192614cad565b949291925f915f965f97602a8751145f1461510c5761500e8761442a565b965b6001600160a01b038816156150dd575b508551602a036150c5579086916150368761442a565b965b6001600160a01b03881615615089575b5061506e93879390926150619280156115d157906145a3565b9880156115d157906145a3565b9480516150785750565b6150839192506125d8565b50905090565b61506e94929750926001600160a01b036020806150619496604051928184925191829101835e81015f8152030190205416979294509290615048565b975085906150d561162887611524565b999096615038565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f615020565b5061511961162887611524565b9096615010565b9061513f670de0b6b3a7640000615138818504615c45565b9306615c45565b60128151146151a05761519b60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61513f565b6151ac90929192615c8c565b80511561521757600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a90615235615230838361456c565b615c45565b918015614576576152469106615c45565b838151146152a6576152a160216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b615246565b6151ac91929350615c8c565b906152bc82611249565b6152c96040519182611226565b828152601f196152d98294611249565b0190602036910137565b906040516152f2606082611226565b6028815260403660208301375f5b6014810361530d57509150565b8060ff8061532e6001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f0000000000000000000000000000000000000000000000000000000000000016906153c79084906153bd907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826153958a615d65565b998d6153a78d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615d65565b5f1a920185614419565b5301615300565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146156255773dac17f958d2ee523a2206206994597c13d831ec781146155e357736b175474e89094c44da98b954eedeac495271d0f81146155a15773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811461555f57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461551d57737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146154db5773ae78736cd615f374d3085123a210448e74fc63931461549a57565b9150506040516154ab604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516154ed604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161552f604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b50915050604051615571604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516155b3604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516155f5604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615637604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146156eb57603061567f8386614419565b5160f81c1015806156d3575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd06156c28689614419565b5160f81c011691020191019061566b565b5060396156e08386614419565b5160f81c111561568b565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b81810361584f5750601f1961576761575185615719565b9461575f6040519687611226565b808652615719565b015f5b81811061582c575050825f915f905f5b8181036157b057506157ad94959650604051916157968361120a565b825260208201526157a7838361495d565b5261495d565b50565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006157e0838b614419565b5116146157f0575b60010161577a565b919361582190604051956158038761120a565b8652836020870152600181019561581a828761495d565b528461495d565b5060018201916157e8565b60209060405161583b8161120a565b5f81525f838201528282880101520161576a565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061587f8388614419565b51161461588f575b60010161573a565b600190930192615887565b91906158ad6020820151825190036152b2565b905f5b825181146158fe57807fff000000000000000000000000000000000000000000000000000000000000006158e960019385510188614419565b51165f1a6158f78286614419565b53016158b0565b5090925050565b7f616c6c000000000000000000000000000000000000000000000000000000000061592f82611524565b146159e457805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008251161015918261599157505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615c1f575b615c045773ae78736cd615f374d3085123a210448e74fc6393811480615bde575b615bc35773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615b9d575b615b825773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615b5c575b615b4157736b175474e89094c44da98b954eedeac495271d0f811480615b1b575b615b0057732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615ad9575b50615ac057565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615ab9565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a98565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615a77565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a56565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a35565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a14565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615c7a575f19600a91615c5e565b9250608083601f199203019201918252565b90815190815b80151580615d0d575b15615ca8575f1901615c92565b909181146157ad57615cb9816152b2565b905f5b818103615cca575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615cf860019388614419565b51165f1a615d068286614419565b5301615cbc565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615d5d5f19840187614419565b511614615c9b565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615da2576030905b0160f81b1690565b605790615d9a56fea264697066735822122002b4dd331fc65fe70c1bdb498e4837b45f066b8b6bd5e2ac33060bead7df9e4764736f6c634300081c0033","sourceMap":"805:57977:25:-:0;;;-1:-1:-1;7708:6:25;805:57977;;:::i;:::-;6334:141;7685:21;;;;7745:16;805:57977;;:::i;:::-;7759:1;805:57977;;7745:16;;:::i;:::-;6334:141;;;-1:-1:-1;7819:3:25;7804:12;805:57977;;;:::i;:::-;7804:12;:::i;:::-;6334:141;;;;;;7793:24;;;7846:8;6334:141;;;;;;;7759:1;6334:141;;;7846:8;6334:141;;;;;;;;7759:1;6334:141;7846:8;-1:-1:-1;6334:141:25;;-1:-1:-1;6334:141:25;;;;;;;;;;;;;;;;;;;;;;;;;;;7784:7;;6334:141;805:57977;;;-1:-1:-1;6334:141:25;;7846:8;6334:141;;-1:-1:-1;6334:141:25;;805:57977;;;-1:-1:-1;805:57977:25;;7846:8;805:57977;;-1:-1:-1;805:57977:25;7793:24;;;7713:1;805:57977;7674:9;;7685:21;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;:::o;6334:141::-;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614c8b565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614c8b565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b93929092614ff0565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b95615667565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef6846153ce565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b61521b565b96166152e3565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b61521b565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a915092602560206131096131038297615120565b936152e3565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a615667565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a3982615667565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b6146569033906156f0565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b69033906156f0565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a81615731565b805160058103614a475750906149a161499c614995846148ec565b518361589a565b615905565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b519061589a565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b518561589a565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b518461589a565b90614a92614a7c614a75856148fc565b518661589a565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b9781615731565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b614c2881615731565b916004835114614c665782516005036117ae57614c60614c4a614a5e856148fc565b926149cb614c5a614995876148ec565b9561490c565b91929190565b614c60614c75614a5e856148ec565b926149cb614c856149958761490c565b9561493d565b915f6001600160a01b0383166001600160a01b038516105f14614fe957506001915b614cb781856159ea565b936001600160a01b03851615614ccb575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614d0b575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f603552604051614edd8161120a565b5f81525f602082015294803b614fbf575b50803b614f81575b50803b614f43575b50813b614f0d575b5050511691565b81614f17916156f0565b6020830151811115614f06579091508260405192614f348461120a565b16825260208201525f80614f06565b614f4d81836156f0565b60208501518111614f5f575b50614efe565b909193508460405192614f718461120a565b1682526020820152915f80614f59565b614f8b81846156f0565b60208601518111614f9d575b50614ef6565b909194508560405192614faf8461120a565b1682526020820152925f80614f97565b909450614fcc81846156f0565b8660405192614fda8461120a565b1682526020820152935f614eee565b9192614cad565b949291925f915f965f97602a8751145f1461510c5761500e8761442a565b965b6001600160a01b038816156150dd575b508551602a036150c5579086916150368761442a565b965b6001600160a01b03881615615089575b5061506e93879390926150619280156115d157906145a3565b9880156115d157906145a3565b9480516150785750565b6150839192506125d8565b50905090565b61506e94929750926001600160a01b036020806150619496604051928184925191829101835e81015f8152030190205416979294509290615048565b975085906150d561162887611524565b999096615038565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f615020565b5061511961162887611524565b9096615010565b9061513f670de0b6b3a7640000615138818504615c45565b9306615c45565b60128151146151a05761519b60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61513f565b6151ac90929192615c8c565b80511561521757600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a90615235615230838361456c565b615c45565b918015614576576152469106615c45565b838151146152a6576152a160216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b615246565b6151ac91929350615c8c565b906152bc82611249565b6152c96040519182611226565b828152601f196152d98294611249565b0190602036910137565b906040516152f2606082611226565b6028815260403660208301375f5b6014810361530d57509150565b8060ff8061532e6001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f0000000000000000000000000000000000000000000000000000000000000016906153c79084906153bd907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826153958a615d65565b998d6153a78d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615d65565b5f1a920185614419565b5301615300565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146156255773dac17f958d2ee523a2206206994597c13d831ec781146155e357736b175474e89094c44da98b954eedeac495271d0f81146155a15773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811461555f57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461551d57737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146154db5773ae78736cd615f374d3085123a210448e74fc63931461549a57565b9150506040516154ab604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516154ed604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161552f604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b50915050604051615571604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516155b3604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b509150506040516155f5604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615637604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146156eb57603061567f8386614419565b5160f81c1015806156d3575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd06156c28689614419565b5160f81c011691020191019061566b565b5060396156e08386614419565b5160f81c111561568b565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b81810361584f5750601f1961576761575185615719565b9461575f6040519687611226565b808652615719565b015f5b81811061582c575050825f915f905f5b8181036157b057506157ad94959650604051916157968361120a565b825260208201526157a7838361495d565b5261495d565b50565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006157e0838b614419565b5116146157f0575b60010161577a565b919361582190604051956158038761120a565b8652836020870152600181019561581a828761495d565b528461495d565b5060018201916157e8565b60209060405161583b8161120a565b5f81525f838201528282880101520161576a565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061587f8388614419565b51161461588f575b60010161573a565b600190930192615887565b91906158ad6020820151825190036152b2565b905f5b825181146158fe57807fff000000000000000000000000000000000000000000000000000000000000006158e960019385510188614419565b51165f1a6158f78286614419565b53016158b0565b5090925050565b7f616c6c000000000000000000000000000000000000000000000000000000000061592f82611524565b146159e457805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008251161015918261599157505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615c1f575b615c045773ae78736cd615f374d3085123a210448e74fc6393811480615bde575b615bc35773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615b9d575b615b825773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615b5c575b615b4157736b175474e89094c44da98b954eedeac495271d0f811480615b1b575b615b0057732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615ad9575b50615ac057565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615ab9565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a98565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615a77565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a56565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a35565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615a14565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615c7a575f19600a91615c5e565b9250608083601f199203019201918252565b90815190815b80151580615d0d575b15615ca8575f1901615c92565b909181146157ad57615cb9816152b2565b905f5b818103615cca575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615cf860019388614419565b51165f1a615d068286614419565b5301615cbc565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615d5d5f19840187614419565b511614615c9b565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615da2576030905b0160f81b1690565b605790615d9a56fea264697066735822122002b4dd331fc65fe70c1bdb498e4837b45f066b8b6bd5e2ac33060bead7df9e4764736f6c634300081c0033","sourceMap":"805:57977:25:-:0;;;;;;;;;-1:-1:-1;805:57977:25;;;;;28765:475;;;;;;;-1:-1:-1;29253:17:25;;;;:38;;-1:-1:-1;29249:64:25;;29357:38;28765:475;;;;29357:38;;:::i;:::-;29405:113;;;;;;28765:475;;-1:-1:-1;28765:475:25;;;;-1:-1:-1;;29569:40:25;;;;;;-1:-1:-1;33151:503:25;;;;;;;;29405:113;33151:503;;;;;-1:-1:-1;33151:503:25;-1:-1:-1;33151:503:25;;;;;;;;-1:-1:-1;33151:503:25;;29527:214;28765:475;;-1:-1:-1;28765:475:25;29750:184;;805:57977;29750:184;29916:6;;29801:43;;29803:40;;;;29801:43;:::i;:::-;33791:230;-1:-1:-1;33791:230:25;;;;-1:-1:-1;33791:230:25;28765:475;33791:230;;;;;;28765:475;;;;29916:6;:::i;:::-;29750:184;29803:40;;;29801:43;:::i;29569:40::-;;;;29527:214;29680:49;;29688:40;;;;;;;28765:475;;;;29680:49;;:::i;:::-;29527:214;;29688:40;;;;;29405:113;;;;29249:64;29300:13;-1:-1:-1;29300:13:25;805:57977;-1:-1:-1;29300:13:25;29253:38;29274:17;-1:-1:-1;29274:17:25;;;29253:38;;805:57977;34667:113;;;;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21792:79;805:57977;;;:::i;:::-;21792:79;;;;;:::i;:::-;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;7437:28;805:57977;7437:28;;;;;;805:57977;7437:28;;:::i;:::-;805:57977;;;;;;;;;;;;;;35568:12;805:57977;;;:::i;:::-;35568:12;;;;;:::i;805:57977::-;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;6825:49;805:57977;;;;;;-1:-1:-1;;;;;805:57977:25;;;6825:49;-1:-1:-1;;;;;805:57977:25;6825:49;;805:57977;;6825:49;;;;805:57977;6825:49;;;805:57977;6825:49;;-1:-1:-1;;;;;805:57977:25;6825:49;;805:57977;;6825:49;;805:57977;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;43675:112;;;;;43867:53;805:57977;;-1:-1:-1;;;;;805:57977:25;;;-1:-1:-1;;;;;805:57977:25;;43800:15;43796:56;;805:57977;;;-1:-1:-1;;;;;805:57977:25;;;;;;;43891:5;805:57977;;;;;;;;-1:-1:-1;805:57977:25;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;43867:53;805:57977;43796:56;43817:35;-1:-1:-1;43817:35:25;-1:-1:-1;;;;;;805:57977:25;43796:56;;805:57977;;;;;-1:-1:-1;;805:57977:25;;;;;;;34882:261;;;;;;;;;805:57977;;;37127:6;805:57977;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;37127:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37127:6;805:57977;;37149:19;805:57977;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;37149:19;805:57977;;37182:10;:21;37178:48;;805:57977;-1:-1:-1;;;;;805:57977:25;3651:42;37240:16;37236:60;;805:57977;35163:91;34882:261;35163:91;805:57977;37236:60;37285:10;3651:42;;37182:10;37285;:::i;:::-;37236:60;;;37178:48;37212:14;805:57977;37212:14;805:57977;;37212:14;34882:261;;805:57977;34882:261;805:57977;34882:261;;805:57977;;;;;-1:-1:-1;;805:57977:25;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:25;;:::i;:::-;;;;;6946:74;805:57977;;-1:-1:-1;;;;;805:57977:25;;;6946:74;805:57977;-1:-1:-1;805:57977:25;;;;-1:-1:-1;;;;;805:57977:25;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:25;;;;;-1:-1:-1;;;;;805:57977:25;;:::i;:::-;;;;6716:49;805:57977;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:25;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:25;;41565:22;6169:54;41565:22;;805:57977;;41565:22;;805:57977;;41565:22;;;6180:42;41565:22;;;;;;;805:57977;41565:22;;;805:57977;;;;6169:54;41615:27;;;805:57977;41615:27;;805:57977;;41615:27;41565:22;41615:27;5865:42;41615:27;;;;;;-1:-1:-1;;;;;41615:27:25;805:57977;41615:27;;;;;805:57977;;41565:22;805:57977;;;41604:50;;;;;6169:54;41604:50;;805:57977;41604:50;;805:57977;;41604:50;;;;;;805:57977;41604:50;;;805:57977;;;;;;;;;;;;;;;;:::i;41604:50::-;;;;805:57977;41604:50;;;;;;:::i;:::-;;;5854:54;805:57977;5854:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;805:57977;;;;;;;:::i;:::-;5854:54;;;805:57977;5854:54;;;;;;;805:57977;5854:54;805:57977;5854:54;;805:57977;5854:54;;;;;805:57977;;;;;41604:50;;;805:57977;;6169:54;805:57977;6169:54;;;;;41615:27;41565:22;41615:27;;;;;805:57977;41615:27;805:57977;41615:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;41565:22;;;805:57977;41565:22;;805:57977;41565:22;;;;;;6169:54;41565:22;;;:::i;:::-;;;6169:54;;;;;41565:22;;;;;;-1:-1:-1;41565:22:25;;805:57977;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;40287:15;805:57977;40287:15;;;40307:26;805:57977;40287:15;;;;:::i;:::-;40280:23;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:25;40280:53;40307:26;;40348:33;40365:15;;;;:::i;40280:149::-;40396:33;40413:15;;;;:::i;:::-;40396:33;;:::i;:::-;40280:149;;805:57977;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20527:19;;;;;;805:57977;20548:3;805:57977;;;;;;20575:10;805:57977;;;;;;;;;;:::i;20575:10::-;-1:-1:-1;;805:57977:25;;;;;;20516:9;;805:57977;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43210:112;;;;;;805:57977;43365:23;805:57977;-1:-1:-1;;;;;805:57977:25;;;;:::i;:::-;43365:23;:::i;:::-;805:57977;;;;;;43399:5;805:57977;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43439:50;805:57977;;;;;;;-1:-1:-1;;805:57977:25;43399:5;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43439:50;;;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;43439:50;805:57977;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;;;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;;;22210:80;805:57977;;;:::i;:::-;22210:80;;;;;:::i;805:57977::-;;-1:-1:-1;;805:57977:25;;;;;;;34882:261;;;;;;;;;805:57977;;;37459:6;805:57977;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:25;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;37459:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;37459:6;805:57977;;37481:19;805:57977;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;37481:19;805:57977;;37514:15;:26;37510:53;;-1:-1:-1;;;;;805:57977:25;;;;3651:42;37577:16;;37573:134;3651:42;;;;37622:10;3651:42;;;37595:10;37622;:::i;:::-;805:57977;;3651:42;37721:17;;3651:42;;;;37762:9;:24;3651:42;;37828:9;37762;-1:-1:-1;;;;;37762:9:25;805:57977;;;37828:9;:::i;37717:227::-;805:57977;-1:-1:-1;;;;;37921:11:25;805:57977;;;3651:42;;37897:10;;37921:11;;:::i;:::-;37717:227;;37573:134;805:57977;37696:10;805:57977;;;3651:42;;37684:10;;37696;;:::i;:::-;37573:134;;37510:53;37549:14;805:57977;37549:14;805:57977;;37549:14;805:57977;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;805:57977:25;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;805:57977:25;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:57977:25;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;805:57977:25;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;805:57977:25;;;;;-1:-1:-1;805:57977:25;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7437:28;805:57977;;;;;;7437:28;-1:-1:-1;805:57977:25;;-1:-1:-1;805:57977:25;;;-1:-1:-1;805:57977:25;:::o;38098:182::-;;805:57977;38269:1;805:57977;;;;;38269:1;-1:-1:-1;;805:57977:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;805:57977:25;;;;;;;;:::o;20691:774::-;;;-1:-1:-1;805:57977:25;20904:2;805:57977;;20881:25;20877:144;20904:2;;;20917:24;;;:::i;:::-;20877:144;;-1:-1:-1;;;;;805:57977:25;;21035:20;21031:51;;20877:144;21111:22;21173:80;21111:22;;;;;:::i;:::-;-1:-1:-1;21196:48:25;;-1:-1:-1;21196:13:25;;;;:48;21173:80;:::i;:::-;805:57977;-1:-1:-1;;;;;805:57977:25;;3651:42;21268:13;3651:42;;21305:9;;;:20;3651:42;;21360:7;;;:::i;21264:195::-;21423:10;21440:7;21423:10;;21440:7;;:::i;21196:48::-;21223:21;805:57977;21223:21;;;:::i;:::-;805:57977;21196:48;21173:80;:::i;21031:51::-;21111:22;805:57977;;;-1:-1:-1;;;;;805:57977:25;;21173:80;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;;;21031:51;;;;;20877:144;20999:21;;20977:44;20999:21;;;:::i;:::-;20977:44;:::i;:::-;20956:65;;20877:144;;;5854:54;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;5854:54;:::o;17590:2767::-;805:57977;17590:2767;17690:25;17590:2767;805:57977;;;:::i;17690:25::-;17742:23;;;:::i;:::-;805:57977;17779:16;;:40;;;;17590:2767;17779:59;;;;17590:2767;17779:80;;;;17590:2767;17775:2576;;;17936:24;;18007:13;17936:24;;:::i;17775:2576::-;805:57977;18055:16;;:36;;;;17775:2576;18055:60;;;;17775:2576;18055:81;;;;17775:2576;18038:2313;;;18376:24;;18575:16;18376:24;;:::i;18038:2313::-;805:57977;18626:16;;:38;;;;18038:2313;18622:1729;;;21792:79;18873:24;;;:::i;21792:79::-;-1:-1:-1;19013:108:25;;-1:-1:-1;19013:108:25;18622:1729;805:57977;19141:18;;805:57977;;22210:80;19368:24;;;:::i;19137:1214::-;805:57977;19654:17;805:57977;;19899:24;35568:12;19899:24;;:::i;:::-;35568:12;;;:::i;19650:701::-;20298:15;-1:-1:-1;20298:15:25;;-1:-1:-1;20298:15:25;18626:38;18646:18;805:57977;18646:18;;18626:38;;18055:81;18119:17;805:57977;18119:17;;18055:81;;:60;18095:20;805:57977;18095:20;;18055:60;;:36;18075:16;805:57977;18075:16;;18055:36;;17779:80;17842:17;805:57977;17842:17;;17779:80;;:59;17823:15;805:57977;17823:15;;17779:59;;:40;17799:20;805:57977;17799:20;;17779:40;;3781:42;;;;;;;;;:::o;25938:2483::-;;;;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;-1:-1:-1;805:57977:25;;;;;;;;-1:-1:-1;805:57977:25;;;;;;-1:-1:-1;805:57977:25;;;;;;-1:-1:-1;805:57977:25;;-1:-1:-1;26212:19:25;-1:-1:-1;805:57977:25;26270:2;805:57977;;26245:27;26241:164;26270:2;;;-1:-1:-1;;;;;26289:26:25;;;:::i;:::-;805:57977;;;26241:164;-1:-1:-1;;;;;805:57977:25;;;26419:26;26415:65;;26241:164;-1:-1:-1;805:57977:25;;26270:2;26494:28;26270:2;;-1:-1:-1;;;;;26540:27:25;;;:::i;:::-;805:57977;;;26490:170;-1:-1:-1;;;;;805:57977:25;;;26674:27;26670:68;;26490:170;26749:14;-1:-1:-1;805:57977:25;;;26773:239;;26490:170;-1:-1:-1;;805:57977:25;;27038:27;;27091:204;;;;;;27327:8;27091:204;;805:57977;;;27310:25;;27306:48;;805:57977;;;3651:42;-1:-1:-1;;;;;805:57977:25;;;27377:19;805:57977;;;;27406:51;;27091:204;27467:35;5532:10;805:57977;27467:35;;-1:-1:-1;;;;;27467:35:25;-1:-1:-1;27467:35:25;;;5532:10;27467:35;;;27091:204;3651:42;805:57977;;;;27526:20;805:57977;;;;;27556:37;;27091:204;805:57977;;27635:27;:15;;;;27676:10;27791:48;27676:10;;;;;27631:115;;805:57977;;;;;27791:48;;:::i;:::-;805:57977;;;;;;;;;;27920:40;;;;;;;27998:9;;;;;3651:42;27998:58;;28070:63;;;;;5532:10;28070:63;;805:57977;;;;;;;;;;;;;;;;;5532:10;;;805:57977;28147:123;;5532:10;;;;;;;28206;805:57977;5532:10;;;;;805:57977;5532:10;;;;;;805:57977;5532:10;;;;;;805:57977;5532:10;;;;;;28147:123;;;;;;;:::i;:::-;805:57977;;;27884:396;;;;;;;6169:54;27884:396;;805:57977;27884:396;;;805:57977;;;;5532:10;;;805:57977;5532:10;;;805:57977;;5532:10;;;805:57977;;5532:10;;;;;;;;;:::i;:::-;27884:396;805:57977;;27884:396;;;;;;;-1:-1:-1;;;27884:396:25;;;28070:63;28295:11;;28291:124;;28070:63;25938:2483;;;;:::o;28291:124::-;28334:33;;28336:30;;;;28334:33;:::i;:::-;28326:51;28322:82;;28291:124;;;;;;28322:82;28386:18;-1:-1:-1;28386:18:25;27884:396;-1:-1:-1;28386:18:25;27884:396;;;;805:57977;27884:396;;805:57977;27884:396;;;;;;805:57977;27884:396;;;:::i;:::-;;;5532:10;;;;805:57977;5532:10;;;;;27884:396;;;;;;;-1:-1:-1;27884:396:25;;28070:63;;5701:49;28070:63;;;27998:58;28034:22;3651:42;;28034:22;:::i;:::-;27998:58;;;27920:40;27955:4;27920:40;;;27631:115;27718:28;;;;;27791:48;27718:28;;:::i;:::-;27701:45;;;27631:115;;;27556:37;3781:42;805:57977;;27556:37;;27467:35;3781:42;805:57977;;27467:35;;27406:51;3651:42;;;;;;;;27430:9;:26;3651:42;;27406:51;;;;;;;;27306:48;27344:10;-1:-1:-1;27344:10:25;;-1:-1:-1;27344:10:25;27091:204;27327:8;;27135:160;;27193:15;;;;:58;-1:-1:-1;;;;;805:57977:25;;;27135:160;;:::i;:::-;27091:204;;27193:58;805:57977;;27224:27;-1:-1:-1;;;;;805:57977:25;;;27224:27;:::i;:::-;805:57977;27193:58;;26773:239;26895:61;;-1:-1:-1;26833:168:25;;26895:16;;;;:61;-1:-1:-1;;;;;805:57977:25;;;26833:168;;:::i;:::-;26773:239;;;;;26895:61;805:57977;;26928:28;-1:-1:-1;;;;;805:57977:25;;;26928:28;:::i;:::-;805:57977;26895:61;;26670:68;805:57977;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;;;;;26670:68;;;26490:170;-1:-1:-1;;;;;26635:24:25;;26613:47;26635:24;;;:::i;26613:47::-;26582:78;805:57977;;;26490:170;;26415:65;805:57977;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;;;;;;;26415:65;;;26241:164;-1:-1:-1;;;;;26381:23:25;;26359:46;26381:23;;;:::i;26359:46::-;26330:75;805:57977;;;26241:164;;14889:394;;15105:22;14889:394;15105:22;:::i;:::-;805:57977;;;;;;;;15167:15;;;;;;;;:::i;:::-;15141:48;;;;15137:66;;805:57977;;;15260:15;805:57977;;15220:26;15260:15;;:::i;:::-;805:57977;;;:::i;:::-;;;;;;15250:26;15220:56;14889:394;:::o;15137:66::-;15191:12;;;;805:57977;15191:12;:::o;8254:2536::-;805:57977;8575:21;8762:25;805:57977;;8648:28;;805:57977;;;;:::i;8762:25::-;8814:23;;;;:::i;:::-;805:57977;8851:16;;:40;;;;8254:2536;8851:59;;;;8254:2536;8851:80;;;;8254:2536;8847:1937;;;9011:24;;;;;;:::i;:::-;805:57977;;;;9098:34;;805:57977;;11250:2;11234:18;11250:2;;11263:17;;;:::i;:::-;11230:123;;-1:-1:-1;;;;;805:57977:25;;11367:20;11363:59;;11230:123;805:57977;;11529:73;805:57977;11479:30;3651:42;-1:-1:-1;;;;;805:57977:25;;11445:13;11479:30;;:::i;:::-;-1:-1:-1;11545:48:25;;-1:-1:-1;11545:13:25;;;;:48;11529:73;:::i;:::-;11617:6;;;11613:70;;11545:48;11758:20;;;;;;;11780:19;;;;;-1:-1:-1;;;;;805:57977:25;;11723:88;;;;;;805:57977;11723:88;;;805:57977;;;;;;;;;;11723:88;805:57977;;;;;;;:::i;:::-;11723:88;-1:-1:-1;;11723:88:25;;;;;;:::i;:::-;9049:83;;;;8847:1937;8254:2536::o;11780:19::-;805:57977;11780:19;;11758:20;;;;;11613:70;805:57977;;;;11636:47;;;;;-1:-1:-1;;;;;805:57977:25;;11636:47;;;805:57977;;;;;;;11636:47;;;;;;:::i;:::-;11613:70;;;11363:59;11529:73;805:57977;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;11363:59;;;;11230:123;11338:14;;11316:37;11338:14;;;:::i;11316:37::-;11295:58;;11230:123;;;8847:1937;9166:16;;;;;805:57977;9166:16;;:36;;;;8847:1937;9166:60;;;;8847:1937;9166:81;;;;8847:1937;9149:1635;;;9487:24;;;9619:65;9487:24;;:::i;:::-;9619:65;;;;;:::i;:::-;9556:128;;;;;;;805:57977;5532:10;805:57977;;5532:10;805:57977;5532:10;;9709:27;;;5532:10;9709:27;;;;;;;:::i;:::-;9149:1635;8254:2536::o;9149:1635::-;805:57977;9757:16;;;;;;;:38;;;;9149:1635;9757:60;;;;9149:1635;9753:1031;;;10031:24;;;;:::i;:::-;10133:48;;;;805:57977;10133:48;;;12210:16;805:57977;;12256:2;805:57977;;12240:18;12236:123;12256:2;;;12269:17;;;:::i;:::-;12236:123;;-1:-1:-1;;;;;805:57977:25;;12373:20;12369:59;;12236:123;12449:30;12499:73;12449:30;12647:13;12449:30;;12599:22;12449:30;;:::i;:::-;-1:-1:-1;12515:48:25;;-1:-1:-1;12515:13:25;;;;:48;12499:73;:::i;:::-;12599:22;;:::i;:::-;12647:13;;:::i;:::-;805:57977;12699:17;;:39;;;;12515:48;12695:595;;;805:57977;12774:9;805:57977;12695:595;13314:15;805:57977;10069:112;;;9753:1031;805:57977::o;12695:595::-;805:57977;12808:14;;:33;;;;12695:595;12804:486;;;805:57977;12877:6;805:57977;12695:595;;12804:486;805:57977;12908:15;;:35;;;;12804:486;12904:386;;;805:57977;12979:7;805:57977;12695:595;;12904:386;805:57977;13011:16;;:37;;;;12904:386;13007:283;;;805:57977;13084:7;805:57977;12695:595;;13007:283;805:57977;13116:15;;:35;;;;;13007:283;-1:-1:-1;13112:178:25;;;13187:8;805:57977;12695:595;;13116:35;805:57977;13135:16;;;13116:35;;;13011:37;13031:17;805:57977;13031:17;;13011:37;;12908:35;12927:16;805:57977;12927:16;;12908:35;;12808:33;12826:15;805:57977;12826:15;;12808:33;;12699:39;12720:18;805:57977;12720:18;;12699:39;;12369:59;12449:30;805:57977;;12599:22;805:57977;12647:13;805:57977;-1:-1:-1;;;;;805:57977:25;;12499:73;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;12369:59;;;;;;;;12236:123;12344:14;;12322:37;12344:14;;;:::i;12322:37::-;12301:58;;12236:123;;;9753:1031;10202:17;;;;805:57977;10202:17;805:57977;;10579:62;10447:24;5532:10;10447:24;;:::i;10579:62::-;805:57977;;5532:10;;;;;10666:27;;;5532:10;10666:27;;;10516:125;;;;;;;;;10666:27;;805:57977;10666:27;:::i;9757:60::-;9799:18;805:57977;9799:18;;9757:60;;:38;9777:18;805:57977;9777:18;;9757:38;;9166:81;9230:17;805:57977;9230:17;;9166:81;;:60;9206:20;805:57977;9206:20;;9166:60;;:36;9186:16;805:57977;9186:16;;9166:36;;8851:80;8914:17;805:57977;8914:17;;8851:80;;:59;8895:15;805:57977;8895:15;;8851:59;;:40;8871:20;805:57977;8871:20;;8851:40;;40671:722;805:57977;;;;40671:722;805:57977;;40906:2;40884:24;;40906:2;;40935:23;;;;:::i;40880:507::-;41013:30;805:57977;;;41013:30;805:57977;;;;;;;;;;;;;41013:30;;;805:57977;;;;;;;;41013:30;;;;;;;;;;:::i;:::-;805:57977;;;;41910:19;805:57977;;;41963:538;41970:6;;;42837:114;;;41013:30;42837:114;;;;;;805:57977;;42537:54;41013:30;42537:54;;805:57977;;;;;;;;42537:54;;;;;;:::i;:::-;805:57977;42527:65;;805:57977;;;41067:24;6169:54;41067:24;;;805:57977;41067:24;;805:57977;41013:30;41067:24;;;5865:42;41067:24;;;;;;;805:57977;41067:24;;;41963:538;41059:32;6023:42;-1:-1:-1;;;;;41059:32:25;805:57977;41109:32;41105:80;;41963:538;805:57977;;41221:27;6169:54;41221:27;;;805:57977;41221:27;;805:57977;41013:30;41221:27;41067:24;41221:27;5865:42;41221:27;;;;;;;-1:-1:-1;;;;;41221:27:25;41013:30;41221:27;805:57977;41221:27;;;41963:538;805:57977;41067:24;805:57977;;41210:50;;;;6169:54;41210:50;;;805:57977;41210:50;;805:57977;;41210:50;;;;;;;805:57977;41210:50;;;41963:538;41199:61;-1:-1:-1;;;;;41199:61:25;805:57977;41299:22;41295:52;;40671:722::o;41295:52::-;41330:17;805:57977;41330:17;805:57977;;41330:17;41210:50;;;;;41013:30;41210:50;41013:30;41210:50;;;;;;;:::i;:::-;;;;;41221:27;;;;;;;;;;;;;;:::i;:::-;;;;41105:80;805:57977;;;;6169:54;41151:34;;;805:57977;41151:34;;805:57977;41013:30;41151:34;41067:24;41151:34;6023:42;41151:34;;;;;;;805:57977;41151:34;;;41105:80;41143:42;41105:80;;;41151:34;;;;41013:30;41151:34;41013:30;41151:34;;;;;;;:::i;:::-;;;;41067:24;;;;;41013:30;41067:24;41013:30;41067:24;;;;;;;:::i;:::-;;;;;41978:3;805:57977;-1:-1:-1;;805:57977:25;;42012:20;;;;;:::i;:::-;805:57977;;;;;42054:8;;42050:194;;5532:10;-1:-1:-1;3651:42:25;;;805:57977;;5532:10;805:57977;;;;;;;;;;5532:10;805:57977;;;;;;;;;;;;;;42351:34;;3651:42;;-1:-1:-1;;42408:12:25;42030:1;42408:12;;42404:83;;41978:3;;;41963:538;805:57977;41963:538;;;;42404:83;42444:24;;;;:::i;:::-;;42404:83;;;;42050:194;42837:114;;;;;-1:-1:-1;;42837:114:25;;;41013:30;42837:114;;;;;805:57977;;42103:54;41013:30;42103:54;;805:57977;;;;;;;;42103:54;;;;;;:::i;:::-;805:57977;42093:65;;42180:15;42217:8;;;34840:420;;;34882:261;;;;;;;;;805:57977;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;36332:119;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;35616:18;805:57977;35644:19;805:57977;;35703:2;805:57977;;35678:27;35674:158;35703:2;;;-1:-1:-1;;;;;35719:26:25;;;:::i;:::-;805:57977;;;35674:158;-1:-1:-1;;;;;805:57977:25;;;35846:23;35842:67;;35674:158;-1:-1:-1;805:57977:25;;35703:2;35923:28;35703:2;;35966:27;-1:-1:-1;;;;;35966:27:25;36194:114;35966:27;;;:::i;:::-;805:57977;;;35919:164;-1:-1:-1;;;;;805:57977:25;;;36097:24;36093:77;;35919:164;-1:-1:-1;;36232:15:25;;;;-1:-1:-1;;;;;805:57977:25;;;36194:114;;:::i;:::-;805:57977;;36371:16;;;;:58;-1:-1:-1;;;;;805:57977:25;;;36332:119;;:::i;:::-;805:57977;;3651:42;-1:-1:-1;;;;;805:57977:25;;;36466:16;36462:54;;36371:58;-1:-1:-1;;;;;36560:10:25;805:57977;36560:10;;;;;;;805:57977;;;;36619:27;36615:119;36619:15;;;36560:10;;;36615:119;805:57977;;;;36801:15;805:57977;;;;36867:7;36801:15;805:57977;;;;;;;;;;36913:13;;805:57977;36913:13;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36913:13;;;;;;:::i;:::-;805:57977;36903:24;;805:57977;;;;36889:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3651:42;36889:6;805:57977;;;3651:42;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;805:57977:25;;;;;;;;;;35163:91;;34882:261;35163:91;34840:420::o;36615:119::-;36706:28;;;;:::i;:::-;36689:45;;;36615:119;;36462:54;3651:42;;;;;36492:9;:23;3651:42;;36462:54;;;;;;36371:58;805:57977;;36404:25;-1:-1:-1;;;;;805:57977:25;;;36404:25;:::i;:::-;805:57977;36371:58;;36093:77;805:57977;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;36093:77;;;;35919:164;36194:114;36058:24;;;36036:47;36058:24;-1:-1:-1;;;;;36058:24:25;;:::i;36036:47::-;36008:75;805:57977;;;35919:164;;35842:67;805:57977;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;35842:67;;;35674:158;-1:-1:-1;;;;;35808:23:25;;35786:46;35808:23;;;:::i;35786:46::-;35760:72;805:57977;;;35674:158;;805:57977;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;:::o;38496:1532::-;;805:57977;38724:2;805:57977;;;38702:46;;38724:2;-1:-1:-1;;;;;38702:46:25;;38722:1;805:57977;;38702:46;:::i;:::-;805:57977;;38767:10;;38763:315;;805:57977;;39133:3;805:57977;;;;;;39129:3;805:57977;;;;39113:53;39142:24;39113:53;;;;;:129;;;;38496:1532;39092:189;;;805:57977;;39726:271;39421:34;39726:271;39421:34;805:57977;39421:34;;;;:::i;:::-;39379:76;;;;;;805:57977;;39473:24;39469:51;;38496:1532;39538:13;39534:51;;38496:1532;805:57977;;;;;39957:22;-1:-1:-1;;;;;39817:36:25;39634:46;805:57977;;;39133:3;805:57977;;39634:46;;805:57977;;39634:46;:::i;:::-;39764:31;;;;;;805:57977;;;;;;:::i;:::-;;;;;;;;;39764:31;39817:36;:::i;:::-;805:57977;;39957:22;:::i;:::-;805:57977;;;;;;;;;;;;39726:271;;;805:57977;;;;;;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;39726:271;;-1:-1:-1;;39726:271:25;;;;;;:::i;39764:31::-;805:57977;;;;;;:::i;:::-;;;;;;;;;39764:31;39817:36;:::i;39534:51::-;39564:21;;;;;;;;;-1:-1:-1;;;;;39817:36:25;39634:46;805:57977;39564:21;;39133:3;805:57977;39564:21;39957:22;39564:21;;:::i;:::-;805:57977;39534:51;;;;;;;;;;;;;;;;39469;805:57977;;;-1:-1:-1;805:57977:25;39507:5;805:57977;;;;-1:-1:-1;805:57977:25;;:::i;:::-;39469:51;;;39092:189;39264:17;-1:-1:-1;39264:17:25;38722:1;-1:-1:-1;39264:17:25;39113:129;805:57977;;;39219:23;-1:-1:-1;39190:52:25;;;39113:129;;;38763:315;38832:213;38907:30;;805:57977;38907:30;;;805:57977;38832:213;39001:22;38907:30;;;;:::i;:::-;39001:22;;:::i;:::-;805:57977;;38832:213;;;805:57977;38832:213;;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;38832:213;;-1:-1:-1;;38832:213:25;;;;;;:::i;8987:1026:20:-;;9132:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:1026;9132:875;;;;;;;8987:1026::o;9132:875::-;;;;;;;;;;;;;;;;;;;;3909:342;4024:221;3909:342;;;4024:221;;;;;;;3909:342::o;4024:221::-;;;;;;;4713:42:25;;;;;;;-1:-1:-1;;;;;4713:42:25;;;;;;805:57977;;;;4713:42;;;805:57977;;4713:42;;;805:57977;4713:42;;;;805:57977;4713:42;;;805:57977;4713:42;;;;;;;;;;:::i;:::-;;;805:57977;4713:42::o;:::-;;;;;;-1:-1:-1;;;;;4713:42:25;;;;;805:57977;;;;4713:42;;;805:57977;;4713:42;;;805:57977;4713:42;;;;805:57977;4713:42;;;805:57977;4713:42;;;;;;;;;;:::i;22382:3468::-;;;;;805:57977;22627:14;805:57977;;22704:2;805:57977;;22681:25;22677:137;22704:2;;;22717:24;;;:::i;:::-;22677:137;;-1:-1:-1;;;;;805:57977:25;;22828:20;22824:59;;22677:137;22912:30;;;:::i;:::-;-1:-1:-1;22986:48:25;;-1:-1:-1;22986:13:25;;;;;22970:73;22986:48;;22970:73;;:::i;:::-;23070:22;;;;:::i;:::-;23118:13;;;:::i;:::-;805:57977;23146:17;;:39;;;;22986:48;23142:547;;;805:57977;23217:9;805:57977;;;;;;23217:9;805:57977;;;;;;;23142:547;;-1:-1:-1;;;;;805:57977:25;;3651:42;23703:13;3651:42;;23768:9;;;:20;3651:42;;23908:25;;;;;;;;;;;;;;23955;;;;23964:10;;23955:25;;805:57977;;24090:550;;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;;;;24090:550;805:57977;24090:550;-1:-1:-1;;24090:550:25;;;;;;;;:::i;:::-;805:57977;;23814:911;;;;;6169:54;23814:911;;24684:15;805:57977;23814:911;4713:42;23814:911;;;;;;:::i;:::-;;;;;4843:42;24090:550;23814:911;;;;;;;;;;23807:918;;:::o;23814:911::-;;;24090:550;23814:911;;24090:550;23814:911;;;;;;6169:54;23814:911;;;:::i;:::-;;;6169:54;;;;;23807:918;:::o;23814:911::-;;;-1:-1:-1;23814:911:25;;;805:57977;;6169:54;;;;;;;;23955:25;;;;23908;23923:10;23908:25;;;3651:42;;;;23699:2145;24814:4;;;;;;24821:7;24814:4;;;;;;;24794:10;24821:7;;:::i;:::-;4843:42;15943:691:20;;;;;;805:57977:25;15943:691:20;;805:57977:25;15943:691:20;;;;;;;;805:57977:25;15943:691:20;;;;;;23699:2145:25;15943:691:20;805:57977:25;15943:691:20;;805:57977:25;;25184:550;;;15943:691:20;25184:550:25;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;15943:691:20;805:57977:25;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;15943:691:20;805:57977:25;;;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;15943:691:20;805:57977:25;;;;;25184:550;15943:691:20;25184:550:25;-1:-1:-1;;25184:550:25;;;;;;;;:::i;:::-;805:57977;;24928:891;;;;;;;6169:54;24928:891;;25778:15;805:57977;24794:10;;4713:42;24928:891;;;;;;:::i;:::-;;;;805:57977;4843:42;15943:691:20;24928:891:25;;;;;;;805:57977;24928:891;;;24921:898;;:::o;15943:691:20:-;;;;;;;;;;;;;;;805:57977:25;15943:691:20;;;;23142:547:25;805:57977;23247:14;;:33;;;;23142:547;23243:446;;;805:57977;23312:6;805:57977;;;;;;23312:6;805:57977;;;;;;;23243:446;23142:547;;23243:446;805:57977;23339:15;;:35;;;;23243:446;23335:354;;;805:57977;23406:7;805:57977;;;;;;23406:7;805:57977;;;;;;;23335:354;23142:547;;23335:354;805:57977;23434:16;;:37;;;;23335:354;23430:259;;;805:57977;23503:7;805:57977;;;;;;23503:7;805:57977;;;;;;;23430:259;23142:547;;23430:259;805:57977;23531:15;;:35;;;;;23430:259;-1:-1:-1;23527:162:25;;;23598:8;805:57977;;;;;;23598:8;805:57977;;;;;;;23527:162;23142:547;;23531:35;805:57977;23550:16;;;23531:35;;;23434:37;23454:17;805:57977;23454:17;;23434:37;;23339:35;23358:16;805:57977;23358:16;;23339:35;;23247:33;23265:15;805:57977;23265:15;;23247:33;;23146:39;23167:18;805:57977;23167:18;;23146:39;;22986:48;22970:73;23013:21;;805:57977;23013:21;;;:::i;:::-;805:57977;22986:48;;22824:59;805:57977;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;22824:59;;;22677:137;22799:14;;22777:37;22799:14;;;:::i;22777:37::-;22756:58;;22677:137;;;22382:3468;;;805:57977;;22704:2;805:57977;;22681:25;22677:137;22704:2;;;22717:24;;;:::i;:::-;22677:137;;-1:-1:-1;;;;;805:57977:25;;22828:20;22824:59;;22677:137;22912:30;;;:::i;:::-;-1:-1:-1;22986:48:25;;-1:-1:-1;22986:13:25;;;;;22970:73;22986:48;;22970:73;;:::i;:::-;23070:22;;;;:::i;:::-;23118:13;;;:::i;:::-;805:57977;23146:17;;:39;;;;22986:48;23142:547;;;805:57977;23217:9;805:57977;;;;;;23217:9;805:57977;;;;;;;23142:547;;-1:-1:-1;;;;;805:57977:25;;3651:42;23703:13;3651:42;;23768:9;;;:20;3651:42;;805:57977;;24090:550;;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;21866:4;805:57977;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;21866:4;805:57977;;;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;24090:550;805:57977;;;;;;;;;;21866:4;805:57977;;;;;24090:550;21866:4;24090:550;-1:-1:-1;;24090:550:25;;;;;;;;:::i;:::-;805:57977;;23814:911;;;;;6169:54;23814:911;;24684:15;805:57977;23964:10;;;4713:42;23814:911;;;;;;:::i;:::-;;;;;4843:42;24090:550;23814:911;;;;;;;805:57977;23814:911;;;23807:918;;:::o;23699:2145::-;24814:4;;;;24821:7;24814:4;;;;24794:10;24821:7;;:::i;:::-;4843:42;15943:691:20;;;;;;805:57977:25;15943:691:20;;805:57977:25;15943:691:20;;;;;;;21866:4:25;805:57977;15943:691:20;;;;;;23699:2145:25;15943:691:20;805:57977:25;15943:691:20;;805:57977:25;;25184:550;;;15943:691:20;25184:550:25;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;21866:4;805:57977;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;21866:4;805:57977;;;;-1:-1:-1;;;805:57977:25;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;;;;-1:-1:-1;;;805:57977:25;;;;15943:691:20;805:57977:25;;;;;;;;;;21866:4;805:57977;;;;;25184:550;21866:4;25184:550;-1:-1:-1;;25184:550:25;;;;;;;;:::i;:::-;805:57977;;24928:891;;;;;;;6169:54;24928:891;;25778:15;805:57977;24794:10;;24928:891;4713:42;24928:891;;;;;;:::i;15943:691:20:-;;;;;;;;;;;;;23142:547:25;805:57977;23247:14;;:33;;;;23142:547;23243:446;;;805:57977;23312:6;805:57977;;;;;;23312:6;805:57977;;;;;;;23243:446;23142:547;;23243:446;805:57977;23339:15;;:35;;;;23243:446;23335:354;;;805:57977;23406:7;805:57977;;;;;;23406:7;805:57977;;;;;;;23335:354;23142:547;;23335:354;805:57977;23434:16;;:37;;;;23335:354;23430:259;;;805:57977;23503:7;805:57977;;;;;;23503:7;805:57977;;;;;;;23430:259;23142:547;;23430:259;805:57977;23531:15;;:35;;;;;23430:259;-1:-1:-1;23527:162:25;;;23598:8;805:57977;;;;;;23598:8;805:57977;;;;;;;23527:162;23142:547;;23531:35;805:57977;23550:16;;;23531:35;;;23434:37;23454:17;805:57977;23454:17;;23434:37;;23339:35;23358:16;805:57977;23358:16;;23339:35;;23247:33;23265:15;805:57977;23265:15;;23247:33;;23146:39;23167:18;805:57977;23167:18;;23146:39;;22986:48;22970:73;23013:21;;805:57977;23013:21;;;:::i;:::-;805:57977;22986:48;;22824:59;805:57977;;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;22824:59;;;22677:137;22799:14;;22777:37;22799:14;;;:::i;22777:37::-;22756:58;;22677:137;;;44107:884;;44211:774;;;;;;;-1:-1:-1;;44211:774:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44107:884::o;15387:656::-;805:57977;15512:17;805:57977;15549:14;805:57977;15549:14;;:34;;;;15387:656;15545:56;;805:57977;15615:15;;15611:37;;4039:42;15662:15;;:36;;;;15387:656;15658:58;;4169:42;15730:14;;15726:36;;4301:42;15776:15;;15772:38;;4301:42;15824:15;;:33;;;;15387:656;15824:55;;;;15387:656;15820:77;;3909:42;15911:16;;:37;;;;15387:656;15911:56;;;;15387:656;15907:81;;4441:42;16002:15;15998:38;;15387:656::o;15998:38::-;4578:42;;-1:-1:-1;16033:2:25;;-1:-1:-1;16019:17:25:o;15907:81::-;-1:-1:-1;4441:42:25;;-1:-1:-1;15985:2:25;;-1:-1:-1;15969:19:25:o;15911:56::-;15952:15;3909:42;15952:15;;15911:56;;:37;15931:17;3909:42;15931:17;;15911:37;;15820:77;-1:-1:-1;3909:42:25;;-1:-1:-1;15895:1:25;;-1:-1:-1;15881:16:25:o;15824:55::-;15861:18;4301:42;15861:18;;15824:55;;:33;15843:14;4301:42;15843:14;;15824:33;;15772:38;-1:-1:-1;3781:42:25;;-1:-1:-1;15807:2:25;;-1:-1:-1;15793:17:25:o;15726:36::-;-1:-1:-1;4301:42:25;;-1:-1:-1;15759:2:25;;-1:-1:-1;15746:16:25:o;15658:58::-;-1:-1:-1;4169:42:25;;-1:-1:-1;15714:1:25;;-1:-1:-1;15700:16:25:o;15662:36::-;15681:17;4039:42;15681:17;;15662:36;;15611:37;-1:-1:-1;4039:42:25;;-1:-1:-1;15646:1:25;;-1:-1:-1;15632:16:25:o;15545:56::-;-1:-1:-1;3651:42:25;;-1:-1:-1;15598:2:25;;-1:-1:-1;15585:16:25:o;15549:34::-;15567:16;805:57977;15567:16;;15549:34;;805:57977;;;;;;;;;;;;;:::o;54873:720::-;55004:2;805:57977;;54992:14;54988:42;;805:57977;55089:1;55072:460;55092:7;55004:2;55092:7;;;;805:57977;-1:-1:-1;;;;;805:57977:25;;;54873:720;:::o;55101:3::-;805:57977;;;55170:4;;;;:::i;:::-;805:57977;;;55197:7;55202:2;55197:7;;;:18;;;55101:3;55193:325;;;805:57977;;;;;;;55193:325;;805:57977;55077:13;;;;55193:325;55289:2;55284:7;;;:18;;;55193:325;55280:238;;;805:57977;;;;;;;55280:238;55193:325;;55280:238;55376:2;55371:7;;;:19;;;55280:238;55367:151;;;805:57977;;;;;;;55367:151;55193:325;;55371:19;55382:8;55387:3;55382:8;;;55371:19;;55284:18;55295:7;55300:2;55295:7;;;55284:18;;55197;55208:7;55213:2;55208:7;;;55197:18;;5094:152:19;9302:399;5094:152;805:57977:25;5094:152:19;5204:10;9890:208;;;-1:-1:-1;9890:208:19;9302:399;-1:-1:-1;9302:399:19;;761:6;9302:399;;;;;;;;805:57977:25;5094:152:19;:::o;805:57977:25:-;;;;;;;:::o;:::-;;;;;;;;;;53055:1736;;;805:57977;53305:10;;;:::i;:::-;805:57977;53333:26;;:57;;;;;53055:1736;53329:180;;;805:57977;;53559:15;805:57977;53588:21;805:57977;53623:17;805:57977;53660:9;805:57977;53671:7;;;;;;53655:601;54310:11;;;;;54306:185;54310:11;;;805:57977;;54351:2;805:57977;;54306:185;;54539:236;;53055:1736;;:::o;54539:236::-;54613:77;;54717:43;;-1:-1:-1;;;;;805:57977:25;;3651:42;54613:12;3651:42;;54628:10;;:18;54649:9;805:57977;54613:77;;54745:2;805:57977;54739:3;805:57977;;;54717:43;:::i;54613:77::-;54661:29;54679:10;;54661:29;;:::i;:::-;54613:77;;;54306:185;54390:24;;;;;;54386:105;;54306:185;;;;54386:105;805:57977;;54444:2;805:57977;;;;;54386:105;;;53680:3;53714:4;;;;:::i;:::-;805:57977;;;;5532:10;53740:9;;;:22;;;53680:3;53736:506;;;805:57977;;;53804:2;805:57977;;5532:10;805:57977;;;;;;;;53844:102;;;53736:506;805:57977;53736:506;;805:57977;53660:9;;;;;53844:102;805:57977;;;53890:26;;;;53886:37;53844:102;53886:37;53918:5;;;;;53736:506;53974:9;;5532:10;53974:9;;;;;;:24;;;53736:506;53970:272;;;54022:17;;805:57977;54022:17;53970:272;53736:506;;53970:272;5532:10;54068:9;;;;;;:25;;;53970:272;54064:178;;;54117:19;;805:57977;54117:19;54064:178;53736:506;;54064:178;54165:9;;;;;54161:81;;805:57977;54064:178;53736:506;;54161:81;54205:18;805:57977;54205:18;;805:57977;54205:18;54068:25;805:57977;-1:-1:-1;;805:57977:25;;54081:12;;54068:25;;53974:24;53987:11;;;53974:24;;53740:22;53753:9;5532:10;53753:9;;;53740:22;;53329:180;-1:-1:-1;53417:77:25;;-1:-1:-1;;;;;;;805:57977:25;;3651:42;53417:12;3651:42;;53432:10;;:18;53453:9;805:57977;53410:84;:::o;53417:77::-;53465:29;53483:10;;53465:29;;:::i;53333:57::-;805:57977;53363:27;;;53333:57;;;45055:799;45200:648;;;;;;;;;;;;;;;-1:-1:-1;;45200:648:25;;;;;;;45055:799;:::o;45200:648::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;45200:648:25;;805:57977;;;50419:1;805:57977;;;;;;;:::o;:::-;;;50473:1;805:57977;;;;;;;:::o;:::-;;;50527:1;805:57977;;;;;;;:::o;:::-;;;48444:1;805:57977;;;;;;;:::o;:::-;;;49502:1;805:57977;;;;;;;:::o;:::-;;;50068:1;805:57977;;;;;;;:::o;:::-;;;49178:1;805:57977;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;48016:2722::-;48362:29;;;:::i;:::-;805:57977;;48444:1;48428:17;;48444:1;;48509:8;;48472:47;48482:36;48509:8;;;:::i;:::-;;48482:36;;:::i;:::-;48472:47;:::i;:::-;48509:8;;;48748:36;48608;48635:8;;;:::i;48608:36::-;48717:8;48775;48690:36;48717:8;;;:::i;48690:36::-;48775:8;;:::i;:::-;;48748:36;;:::i;:::-;48565:261;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;48565:261;;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;48565:261;:::o;48533:609::-;48960:8;49049:36;48933;48960:8;;;:::i;:::-;;48933:36;;:::i;:::-;49018:8;49076;48991:36;49018:8;;;:::i;49049:36::-;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;48865:262;;;805:57977;;;;;;;:::i;48424:2308::-;49178:1;49162:17;;49178:1;;49260:8;;;49233:36;49260:8;;;:::i;:::-;;49233:36;;:::i;:::-;49314:8;49395:36;49287;49314:8;;;:::i;:::-;;49287:36;;:::i;:::-;49368:8;49422;49341:36;49368:8;;;:::i;49341:36::-;49422:8;;:::i;49395:36::-;49195:270;;;;805:57977;;;;;;;:::i;49158:1574::-;49502:1;49486:17;;49502:1;;49567:8;49530:47;49540:36;49567:8;;;:::i;49530:47::-;49567:8;;;49671:36;49698:8;;;:::i;49671:36::-;49869;49753;49780:8;;;:::i;49753:36::-;49838:8;49896;49811:36;49838:8;;;:::i;49811:36::-;49896:8;;:::i;49869:36::-;49623:300;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;49623:300;;;;:::o;49591:687::-;50035:36;50062:8;;;:::i;50035:36::-;50120:8;50209:36;50093;50120:8;;;:::i;50209:36::-;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;49962:301;;;;;:::o;49482:1250::-;50314:1;50298:17;50314:1;;50386:36;50413:8;;;:::i;50386:36::-;50440;50467:8;;;:::i;50440:36::-;50521:8;50602:36;50494;50521:8;;;:::i;50494:36::-;50575:8;50629;50548:36;50575:8;;;:::i;50548:36::-;50629:8;;:::i;50602:36::-;50361:291;;;;;;:::o;46808:1138::-;47132:29;;;:::i;:::-;47191:1;805:57977;;47175:17;47171:339;;805:57977;;47539:1;47523:17;47539:1;;47581:36;47608:8;;;:::i;47581:36::-;47635;47662:8;;;:::i;47635:36::-;47716:8;47797:36;47689;47716:8;;;:::i;47689:36::-;47770:8;47824;47743:36;47770:8;;;:::i;47171:339::-;47233:36;47260:8;;;:::i;47233:36::-;47287;47314:8;;;:::i;47287:36::-;47368:8;47449:36;47341;47368:8;;;:::i;47341:36::-;47422:8;47476;47395:36;47422:8;;;:::i;47395:36::-;47476:8;;:::i;45924:814::-;46140:29;;;:::i;:::-;805:57977;46199:1;805:57977;;46183:17;46179:231;;805:57977;;46439:1;46423:17;46439:1;;46589:36;46481;46508:8;;;:::i;46481:36::-;46562:8;46616;46535:36;46562:8;;;:::i;46535:36::-;46616:8;;:::i;46589:36::-;46456:183;;;;:::o;46179:231::-;46349:36;46241;46268:8;;;:::i;46241:36::-;46322:8;46376;46295:36;46322:8;;;:::i;46295:36::-;46376:8;;:::i;30075:1849::-;;805:57977;-1:-1:-1;;;;;805:57977:25;;-1:-1:-1;;;;;805:57977:25;;30248:15;30244:88;805:57977;;;30265:17;30278:4;30244:88;;30349:36;;;;:::i;:::-;805:57977;-1:-1:-1;;;;;805:57977:25;;30399:18;30395:1523;;30075:1849;;:::o;30395:1523::-;805:57977;;;-1:-1:-1;;;;;805:57977:25;;;;30440:5;805:57977;;;;;-1:-1:-1;;;;;805:57977:25;;-1:-1:-1;805:57977:25;;;-1:-1:-1;;;;;805:57977:25;-1:-1:-1;805:57977:25;;;30479:18;;;30475:1433;;30075:1849;;:::o;30475:1433::-;-1:-1:-1;;;;;30535:37:25;;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;32778:222;32216:325;805:57977;32216:325;;805:57977;32216:325;;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;805:57977;;;;;:::i;:::-;;;;;;;;;30940:19;;;30936:157;;30475:1433;31114:19;;;31110:228;;30475:1433;31359:20;;;31355:231;;30475:1433;31607:21;;;31603:234;;30475:1433;805:57977;;;;30475:1433;30075:1849::o;31603:234::-;31663:29;;;;:::i;:::-;805:57977;31724:11;;3651:42;31718:17;;31714:105;31603:234;31714:105;805:57977;;;;;;;;;;:::i;:::-;;;;;31773:23;;805:57977;31714:105;;31603:234;;31355:231;31414:28;;;;:::i;:::-;805:57977;31474:11;;3651:42;31468:17;;31464:104;;31355:231;;;;31464:104;805:57977;;;;;;;;;;;:::i;:::-;;;;;31523:22;;805:57977;31464:104;;;;;31110:228;31168:27;;;;:::i;:::-;805:57977;31227:11;;3651:42;31221:17;;31217:103;;31110:228;;;;31217:103;805:57977;;;;;;;;;;;:::i;:::-;;;;;31276:21;;805:57977;31217:103;;;;;30936:157;30994:27;;;;;;;:::i;:::-;805:57977;;;;;;;:::i;:::-;;;;;31053:21;;805:57977;30936:157;;;;30244:88;30316:16;30244:88;;;13442:1275;;;;;805:57977;13870:18;805:57977;13898:19;805:57977;;13949:2;805:57977;;13931:20;13927:135;13949:2;;;13964:19;;;:::i;:::-;13927:135;;-1:-1:-1;;;;;805:57977:25;;14076:22;14072:65;;13927:135;-1:-1:-1;805:57977:25;;13949:2;14151:21;13949:2;;14186:20;;;;;;:::i;:::-;14147:141;;-1:-1:-1;;;;;805:57977:25;;14302:23;14298:68;;14147:141;-1:-1:-1;14507:113:25;;14419:54;;;;14401:83;;14419:15;;;;:54;14401:83;:::i;:::-;14542:57;:16;;;;:57;14507:113;:::i;:::-;805:57977;;;14631:79;;13442:1275;:::o;14631:79::-;14674:36;;;;;:::i;:::-;14657:53;;;14631:79;13442:1275::o;14298:68::-;14507:113;805:57977;;;;;-1:-1:-1;;;;;805:57977:25;;14401:83;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;14298:68;;;;;;;;14147:141;14270:17;;;;14248:40;14270:17;;;:::i;14248:40::-;14221:67;;14147:141;;;14072:65;-1:-1:-1;;;;;805:57977:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14072:65;;;;13927:135;14045:16;14023:39;14045:16;;;:::i;14023:39::-;13998:64;13927:135;;;56537:818;;56883:36;805:57977;56802:36;805:57977;;;56802:36;:::i;:::-;805:57977;;56883:36;:::i;:::-;38934:2;805:57977;;56940:40;;;57024:37;805:57977;57024:37;805:57977;;;57024:37;;;805:57977;57024:37;;;805:57977;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;57024:37;;-1:-1:-1;;57024:37:25;;;;;;:::i;:::-;56933:144;;56940:40;57107:43;56940:40;;;;57107:43;:::i;:::-;805:57977;;57168:33;57164:93;;805:57977;57024:37;805:57977;;;57284:53;805:57977;;;;;;;;;;;;57284:53;;;805:57977;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;57284:53;;-1:-1:-1;;57284:53:25;;;;;;:::i;57164:93::-;57221:21;;:::o;56537:818::-;;;;805:57977;56743:2;805:57977;56812:25;56802:36;56812:25;;;;:::i;:::-;56802:36;:::i;:::-;805:57977;;;;;56883:36;805:57977;;56883:36;:::i;:::-;805:57977;;;56940:40;;;57024:37;805:57977;57024:37;805:57977;;;57024:37;;;805:57977;57024:37;;;805:57977;;;;;;;;;;;;;-1:-1:-1;805:57977:25;;;;57024:37;;-1:-1:-1;;57024:37:25;;;;;;:::i;:::-;56933:144;;56940:40;57107:43;56940:40;;;;57107:43;:::i;805:57977::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;805:57977:25;;;;:::i;:::-;;;;;;;;:::o;55666:531::-;;805:57977;;;;;;:::i;:::-;55808:2;805:57977;;;;;;;;-1:-1:-1;55841:7:25;55846:2;55841:7;;;;-1:-1:-1;56164:16:25;-1:-1:-1;55666:531:25:o;55850:3::-;805:57977;;;55897:43;56122:1;805:57977;;55931:2;805:57977;;;;-1:-1:-1;;;;;805:57977:25;;55897:43;:::i;:::-;805:57977;;5532:10;;;;;;;56112:24;;805:57977;;56127:9;;805:57977;;;;;;56085:9;5532:10;56085:9;:::i;:::-;805:57977;;56074:20;805:57977;;;56074:20;;-1:-1:-1;56074:20:25;;;:::i;:::-;;5532:10;805:57977;;;;;;;;;5532:10;;;56127:9;:::i;:::-;-1:-1:-1;56112:24:25;805:57977;;56112:24;;:::i;:::-;;805:57977;55830:9;;16140:501;805:57977;16276:17;-1:-1:-1;;;;;805:57977:25;;;4039:42;16313:13;;16309:37;;4169:42;16360:13;;16356:37;;4301:42;16407:12;;16403:36;;3781:42;16453:13;;16449:38;;3909:42;16501:13;;16497:37;;4441:42;16548:15;;16544:42;;4578;16600:13;16596:38;;16140:501::o;16596:38::-;805:57977;;;;;;;;;:::i;:::-;;;;;;;;;16615:19;16631:2;16615:19;:::o;16544:42::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16565:21;16583:2;16565:21;:::o;16497:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16516:18;16532:1;16516:18;:::o;16449:38::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16468:19;16484:2;16468:19;:::o;16403:36::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16421:18;16436:2;16421:18;:::o;16356:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16375:18;16391:1;16375:18;:::o;16309:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16328:18;16344:1;16328:18;:::o;52506:483::-;;805:57977;;52681:3;805:57977;;52666:13;;;;52723:2;52714:4;;;;:::i;:::-;805:57977;;;52708:17;;:38;;;52681:3;52704:228;;;805:57977;52800:4;52788:2;805:57977;;52800:4;;;;:::i;:::-;805:57977;;;;;;;;52704:228;805:57977;52655:9;;;52708:38;52735:4;52744:2;52735:4;;;;:::i;:::-;805:57977;;;52729:17;;52708:38;;52666:13;;-1:-1:-1;;52506:483:25:o;34102:440::-;34247:289;;;34102:440;;;;34247:289;;;;;;;;;;34102:440;:::o;805:57977::-;;;;;;;;;;;:::o;51065:916::-;;805:57977;;51285:17;51301:1;51363:9;-1:-1:-1;51374:8:25;;;;;;805:57977;-1:-1:-1;;805:57977:25;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;805:57977:25;;;;;;51508:31;;;-1:-1:-1;51584:13:25;-1:-1:-1;51674:9:25;-1:-1:-1;51685:8:25;;;;;;805:57977;51923:41;805:57977;;;;;;;;;;:::i;:::-;;;;51942:22;;805:57977;51923:41;;;;:::i;:::-;;;:::i;:::-;;51065:916::o;51695:3::-;-1:-1:-1;;;805:57977:25;51722:7;;;;:::i;:::-;805:57977;;51722:20;51718:143;;51695:3;51301:1;805:57977;51674:9;;51718:143;805:57977;;51766:41;805:57977;;;;;;;:::i;:::-;;;51787:20;805:57977;51787:20;;805:57977;51301:1;51772:11;805:57977;51766:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;51301:1:25;805:57977;;;51718:143;;805:57977;;;;;;;;:::i;:::-;-1:-1:-1;805:57977:25;;-1:-1:-1;805:57977:25;;;;;;;;;;;;;51384:3;-1:-1:-1;;;805:57977:25;51411:7;;;;:::i;:::-;805:57977;;51411:20;51407:74;;51384:3;51301:1;805:57977;51363:9;;51407:74;51301:1;805:57977;;;;51407:74;;52048:393;;;52246:32;52256:8;;;3651:42;;;805:57977;;52246:32;:::i;:::-;52297:9;-1:-1:-1;52328:3:25;805:57977;;52308:18;;;;3651:42;805:57977;52363:20;805:57977;3651:42;;;805:57977;52363:20;;:::i;:::-;805:57977;;-1:-1:-1;52351:32:25;;;;;:::i;:::-;;805:57977;52297:9;;52308:18;-1:-1:-1;52308:18:25;;-1:-1:-1;;52048:393:25:o;50825:172::-;805:57977;50911:10;;;:::i;:::-;:19;50907:36;;805:57977;;;;;;;;5532:10;805:57977;;;;50961:12;;:28;;;;50953:37;;50825:172;:::o;50961:28::-;805:57977;;;;;;;;5532:10;805:57977;;;50977:12;;50825:172;:::o;50907:36::-;50932:11;50939:4;50932:11;:::o;16714:733::-;;;-1:-1:-1;;;;;805:57977:25;;;4441:42;16871:16;;:34;;;16714:733;16867:89;;4578:42;16970:14;;:32;;;16714:733;16966:87;;4039:42;17067:14;;:32;;;16714:733;17063:87;;3781:42;17164:14;;:32;;;16714:733;17160:87;;4301:42;17261:13;;:31;;;16714:733;17257:86;;3909:42;17357:14;:32;;;;16714:733;17353:87;;;16714:733::o;17353:87::-;17398:42;;-1:-1:-1;17391:49:25:o;17357:32::-;3781:42;805:57977;;-1:-1:-1;;;;;805:57977:25;17375:14;17357:32;;;17257:86;-1:-1:-1;17301:42:25;;-1:-1:-1;;17294:49:25:o;17261:31::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:25;;17278:14;17261:31;;17160:87;-1:-1:-1;17205:42:25;;-1:-1:-1;;17198:49:25:o;17164:32::-;805:57977;4169:42;-1:-1:-1;;;;;805:57977:25;;17182:14;17164:32;;17063:87;-1:-1:-1;17108:42:25;;-1:-1:-1;;17101:49:25:o;17067:32::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:25;;17085:14;17067:32;;16966:87;-1:-1:-1;17011:42:25;;-1:-1:-1;;17004:49:25:o;16970:32::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:25;;16988:14;16970:32;;16867:89;-1:-1:-1;16914:42:25;;-1:-1:-1;;16907:49:25:o;16871:34::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:25;;16891:14;16871:34;;58152:628;;58246:528;;;-1:-1:-1;;58246:528:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;58246:528:25;;;;;;;;;-1:-1:-1;;58246:528:25;;;;;;;;58152:628::o;57413:570::-;;805:57977;;57555:10;;57610:79;57617:8;;;:32;;;57610:79;57617:32;;;-1:-1:-1;;805:57977:25;57610:79;;57617:32;;;57706:10;;57702:67;;57810:14;;;:::i;:::-;57843:9;57624:1;57854:8;;;;;;-1:-1:-1;57939:27:25;;-1:-1:-1;;57413:570:25:o;57864:3::-;57905:6;805:57977;57905:6;805:57977;57905:6;;;:::i;:::-;805:57977;;57624:1;57887:24;;;;;:::i;:::-;;805:57977;57843:9;;57617:32;805:57977;5532:10;805:57977;57629:12;-1:-1:-1;;805:57977:25;;57629:12;;:::i;:::-;805:57977;;57629:20;57617:32;;56274:193;805:57977;;;;56395:3;56384:14;56432:2;56428:6;;56432:2;;;56437:4;56428:20;;805:57977;;5532:10;;56274:193;:::o;56428:20::-;56444:4;56428:20;;","linkReferences":{}},"methodIdentifiers":{"addresses(string)":"bdfe7d47","cancelOrder(bytes32)":"7489ec23","checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"a35e6511","command(string)":"5fcc4500","command(string[])":"52a13e88","escrow(string,string,string,string,string)":"1db51297","executeOrder(bytes32)":"049b76c4","lock(string,string,string,string,string)":"fdbfc0a6","names(address)":"5cf3d346","order(string,string,string,string,string)":"d315e54f","orderHashes(uint256)":"df69558c","orders(bytes32)":"9c3f1e90","pairs(address,address)":"69454b86","previewCommand(string)":"bfe68676","send(string,string,string)":"5615264d","setName(address,string)":"3121db1c","setPair(address,address,address)":"7bb41012","swap(string,string,string,string,string)":"6662c9e3","translateCommand(bytes)":"04659197","translateExecute(bytes)":"f12a64eb","translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"579a8c4c","whatIsTheAddressOf(string)":"c47d04e2","whatIsTheNameOf(address)":"5a274d62"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"PairSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"addresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"checkUserOp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"intentMatched\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"intents\",\"type\":\"string[]\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"executeOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addresses\",\"type\":\"address\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"order\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orderHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"expiry\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"pairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"previewCommand\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executeCallData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOutMin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateCommand\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateExecute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"translateUserOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"whatIsTheAddressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"whatIsTheNameOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"nani.eth (https://github.com/NaniDAO/ie)\",\"custom:version\":\"2.3.0\",\"details\":\"V2 simulates typical commands (sending and swapping tokens) and includes execution. IE also has a workflow to verify the intent of ERC4337 account userOps against calldata. Example commands include \\\"send nani 100 dai\\\" or \\\"swap usdc for 1 eth\\\" and such variants.\",\"errors\":{\"InsufficientSwap()\":[{\"details\":\"Insufficient swap output.\"}],\"InvalidCharacter()\":[{\"details\":\"Non-numeric character.\"}],\"InvalidReceiver()\":[{\"details\":\"Invalid out receiver.\"}],\"InvalidSelector()\":[{\"details\":\"Invalid selector for spend.\"}],\"InvalidSwap()\":[{\"details\":\"0-liquidity.\"}],\"InvalidSyntax()\":[{\"details\":\"Invalid command.\"}],\"OrderExpired()\":[{\"details\":\"Order expiry has arrived.\"}],\"Overflow()\":[{\"details\":\"Bad math.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"Unauthorized()\":[{\"details\":\"Invalid function caller.\"}]},\"events\":{\"NameSet(address,string)\":{\"details\":\"Logs the setting of a token name.\"},\"PairSet(address,address,address)\":{\"details\":\"Logs the setting of a swap pool pair on Uniswap V3.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOrder(bytes32)\":{\"details\":\"Cancels a standing order by the `maker`.\"},\"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`.\"},\"command(string)\":{\"details\":\"Executes a text command from an `intent` string.\"},\"command(string[])\":{\"details\":\"Executes batch of text commands from an `intents` string.\"},\"constructor\":{\"details\":\"Constructs this IE on Ethereum with ENS `ASCII_MAP`.\"},\"escrow(string,string,string,string,string)\":{\"details\":\"Executes an `escrow` command from the parts of a matched intent string.\"},\"executeOrder(bytes32)\":{\"details\":\"Executes a standing order for the `receiver`.\"},\"lock(string,string,string,string,string)\":{\"details\":\"Executes a `lock` command from the parts of a matched intent string.\"},\"order(string,string,string,string,string)\":{\"details\":\"Executes an `order` command from the parts of a matched intent string.\"},\"previewCommand(string)\":{\"details\":\"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'.\"},\"send(string,string,string)\":{\"details\":\"Executes a `send` command from the parts of a matched intent string.\"},\"setName(address,string)\":{\"details\":\"Sets a public `name` tag for a given `token` address. Governed by DAO.\"},\"setPair(address,address,address)\":{\"details\":\"Sets a public pool `pair` for swapping tokens. Governed by DAO.\"},\"swap(string,string,string,string,string)\":{\"details\":\"Executes a `swap` command from the parts of a matched intent string.\"},\"translateCommand(bytes)\":{\"details\":\"Translates an `intent` from raw `command()` calldata.\"},\"translateExecute(bytes)\":{\"details\":\"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match.\"},\"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Translate packed ERC4337 userOp `callData` into readable `intent`.\"},\"whatIsTheAddressOf(string)\":{\"details\":\"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address.\"},\"whatIsTheNameOf(address)\":{\"details\":\"Returns ENS reverse name resolution details.\"}},\"stateVariables\":{\"ASCII_MAP\":{\"details\":\"String mapping for `ENSAsciiNormalizer` logic.\"},\"CURIA\":{\"details\":\"The resolution registry smart account.\"},\"DAI\":{\"details\":\"The Maker DAO USD stablecoin address.\"},\"DAO\":{\"details\":\"The governing DAO address.\"},\"ENS_REGISTRY\":{\"details\":\"ENS fallback registry contract.\"},\"ENS_REVERSE\":{\"details\":\"ENS reverse registrar contract.\"},\"ENS_WRAPPER\":{\"details\":\"ENS name wrapper token contract.\"},\"ESCROWS\":{\"details\":\"The Escrows protocol singleton.\"},\"ETH\":{\"details\":\"The conventional ERC7528 ETH address.\"},\"MAX_SQRT_RATIO_MINUS_ONE\":{\"details\":\"The maximum value that can be returned from `getSqrtRatioAtTick` (minus one).\"},\"MIN_SQRT_RATIO_PLUS_ONE\":{\"details\":\"The minimum value that can be returned from `getSqrtRatioAtTick` (plus one).\"},\"RETH\":{\"details\":\"The Rocket Pool Staked ETH token address.\"},\"UNISWAP_V3_FACTORY\":{\"details\":\"The address of the Uniswap V3 Factory.\"},\"UNISWAP_V3_POOL_INIT_CODE_HASH\":{\"details\":\"The Uniswap V3 Pool `initcodehash`.\"},\"USDC\":{\"details\":\"The Circle USD stablecoin address.\"},\"USDT\":{\"details\":\"The Tether USD stablecoin address.\"},\"WBTC\":{\"details\":\"The popular wrapped BTC address.\"},\"WETH\":{\"details\":\"The canonical wrapped ETH address.\"},\"WSTETH\":{\"details\":\"The Lido Wrapped Staked ETH token address.\"},\"_REENTRANCY_GUARD_SLOT\":{\"details\":\"Equivalent to: `uint72(bytes9(keccak256(\\\"_REENTRANCY_GUARD_SLOT\\\")))`.\"},\"_idnamap\":{\"details\":\"Each index in idnamap refers to an ascii code point. If idnamap[char] > 2, char maps to a valid ascii character. Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. Modified from `ENSAsciiNormalizer` deployed by royalfork.eth (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758).\"},\"addresses\":{\"details\":\"DAO-governed token names to addresses.\"},\"names\":{\"details\":\"DAO-governed token addresses to names.\"},\"orderHashes\":{\"details\":\"Array of onchain order struct hashes.\"},\"orders\":{\"details\":\"Open order book for p2p asset exchange.\"},\"pairs\":{\"details\":\"DAO-governed token swap pool routing on Uniswap V3.\"}},\"title\":\"Intents Engine (IE) on Ethereum (IETH)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple helper contract for turning transactional intents into executable code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSwap"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidSelector"},{"inputs":[],"type":"error","name":"InvalidSwap"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"type":"error","name":"OrderExpired"},{"inputs":[],"type":"error","name":"Overflow"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":false},{"internalType":"address","name":"token1","type":"address","indexed":false},{"internalType":"address","name":"pair","type":"address","indexed":false}],"type":"event","name":"PairSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelOrder"},{"inputs":[{"internalType":"string","name":"intent","type":"string"},{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"checkUserOp","outputs":[{"internalType":"bool","name":"intentMatched","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"intents","type":"string[]"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"executeOrder"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"lock","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"addresses","type":"address"}],"stateMutability":"view","type":"function","name":"names","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"order","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orderHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"uint48","name":"expiry","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"previewCommand","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"executeCallData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"}],"stateMutability":"payable","type":"function","name":"send"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"payable","type":"function","name":"setName"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"payable","type":"function","name":"setPair"},{"inputs":[{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOutMin","type":"string"},{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"swap"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"translateCommand","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"view","type":"function","name":"translateExecute","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"translateUserOp","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"whatIsTheAddressOf","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"whatIsTheNameOf","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"cancelOrder(bytes32)":{"details":"Cancels a standing order by the `maker`."},"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`."},"command(string)":{"details":"Executes a text command from an `intent` string."},"command(string[])":{"details":"Executes batch of text commands from an `intents` string."},"constructor":{"details":"Constructs this IE on Ethereum with ENS `ASCII_MAP`."},"escrow(string,string,string,string,string)":{"details":"Executes an `escrow` command from the parts of a matched intent string."},"executeOrder(bytes32)":{"details":"Executes a standing order for the `receiver`."},"lock(string,string,string,string,string)":{"details":"Executes a `lock` command from the parts of a matched intent string."},"order(string,string,string,string,string)":{"details":"Executes an `order` command from the parts of a matched intent string."},"previewCommand(string)":{"details":"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'."},"send(string,string,string)":{"details":"Executes a `send` command from the parts of a matched intent string."},"setName(address,string)":{"details":"Sets a public `name` tag for a given `token` address. Governed by DAO."},"setPair(address,address,address)":{"details":"Sets a public pool `pair` for swapping tokens. Governed by DAO."},"swap(string,string,string,string,string)":{"details":"Executes a `swap` command from the parts of a matched intent string."},"translateCommand(bytes)":{"details":"Translates an `intent` from raw `command()` calldata."},"translateExecute(bytes)":{"details":"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match."},"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Translate packed ERC4337 userOp `callData` into readable `intent`."},"whatIsTheAddressOf(string)":{"details":"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address."},"whatIsTheNameOf(address)":{"details":"Returns ENS reverse name resolution details."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addresses","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"cancelOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkUserOp","inputs":[{"name":"intent","type":"string","internalType":"string"},{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intentMatched","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"command","inputs":[{"name":"intents","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"command","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"escrow","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"executeOrder","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lock","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"},{"name":"time","type":"string","internalType":"string"},{"name":"unit","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"names","inputs":[{"name":"addresses","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"order","inputs":[{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"orderHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"orders","inputs":[{"name":"orderHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"maker","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"nonce","type":"uint48","internalType":"uint48"},{"name":"expiry","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"token0","type":"address","internalType":"address"},{"name":"token1","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"previewCommand","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"executeCallData","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"send","inputs":[{"name":"to","type":"string","internalType":"string"},{"name":"amount","type":"string","internalType":"string"},{"name":"token","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setName","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setPair","inputs":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"pair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"swap","inputs":[{"name":"amountIn","type":"string","internalType":"string"},{"name":"amountOutMin","type":"string","internalType":"string"},{"name":"tokenIn","type":"string","internalType":"string"},{"name":"tokenOut","type":"string","internalType":"string"},{"name":"receiver","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"translateCommand","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"translateExecute","inputs":[{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"translateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct IETH.PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"intent","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheAddressOf","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"node","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"whatIsTheNameOf","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"NameSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PairSet","inputs":[{"name":"token0","type":"address","indexed":false,"internalType":"address"},{"name":"token1","type":"address","indexed":false,"internalType":"address"},{"name":"pair","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InsufficientSwap","inputs":[]},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidReceiver","inputs":[]},{"type":"error","name":"InvalidSelector","inputs":[]},{"type":"error","name":"InvalidSwap","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"Overflow","inputs":[]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}],"bytecode":{"object":"0x60806040525f5b61000e6100e2565b5181146100d35761002a6100206100e2565b600183019061015e565b5160f81c5f5b6100418361003c6100e2565b61015e565b5160f81c60ff8216146100c957600454680100000000000000008110156100b55760018101806004558110156100a15760ff9160019160045f5260205f208160051c019060f882549160031b16908587831b921b19161790550116610030565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5050600201610006565b604051615f3490816101708239f35b60405190608082016001600160401b038111838210176100b5576040908152604483527f2d00020101000a010700016101620163016401650166016701680169016a016b60208401527f016c016d016e016f0170017101720173017401750176017701780179017a060090830152621a010560e81b6060830152565b9081518110156100a157016020019056fe6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea26469706673582212206cecd1868f608f96249b8a7381a49133f282850304cf4714a82ab48f347fc82164736f6c634300081c0033","sourceMap":"805:57977:27:-:0;;;-1:-1:-1;7708:6:27;805:57977;;:::i;:::-;6334:141;7685:21;;;;7745:16;805:57977;;:::i;:::-;7759:1;805:57977;;7745:16;;:::i;:::-;6334:141;;;-1:-1:-1;7819:3:27;7804:12;805:57977;;;:::i;:::-;7804:12;:::i;:::-;6334:141;;;;;;7793:24;;;7846:8;6334:141;;;;;;;7759:1;6334:141;;;7846:8;6334:141;;;;;;;;7759:1;6334:141;7846:8;-1:-1:-1;6334:141:27;;-1:-1:-1;6334:141:27;;;;;;;;;;;;;;;;;;;;;;;;;;;7784:7;;6334:141;805:57977;;;-1:-1:-1;6334:141:27;;7846:8;6334:141;;-1:-1:-1;6334:141:27;;805:57977;;;-1:-1:-1;805:57977:27;;7846:8;805:57977;;-1:-1:-1;805:57977:27;7793:24;;;7713:1;805:57977;7674:9;;7685:21;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;:::o;6334:141::-;;;;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561018e575b361561017157600435609a3560601c6024355f83131580610167575b61013f5761003d60ae3560601c83614de6565b9281330361013b576084355f1a15610116575050811561011057825b5f3881808473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af150336014526034526fa9059cbb0000000000000000000000005f525f38604460108373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1505f6034525b6085355f1a6100bf57005b610107926100d2921561010957506118f5565b632e1a7d4d5f52806020525f386024601c8373c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af15060c23560601c6131ee565b005b90506118f5565b80610059565b61012f9184156101345785915b60863560601c90613187565b6100b4565b8391610123565b3838fd5b7f11157667000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f81131561002a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2330361013b57005b5f3560e01c80630465919714611167578063049b76c414610f9b5780631db5129714610f845780633121db1c14610d3a57806352a13e8814610c565780635615264d14610bdf578063579a8c4c14610b045780635a274d62146108e65780635cf3d346146108ae5780635fcc4500146108795780636662c9e31461086457806369454b86146108075780637489ec23146106a65780637bb41012146105a45780639c3f1e9014610504578063a35e651114610496578063bdfe7d4714610438578063bfe68676146103b1578063c47d04e214610356578063d315e54f1461033f578063df69558c14610307578063f12a64eb146102ae5763fdbfc0a60361000e5760206102a661029d366112b9565b939290926139e6565b604051908152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb6102e56102ff92369060040161119a565b90612e50565b6040519182916020835260208301906111c8565b0390f35b5f80fd5b34610303576020600319360112610303576004356005548110156103035761033060209161149f565b90549060031b1c604051908152f35b60206102a661034d366112b9565b93929092612a03565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b03610399610394606093369060040161129b565b6125d8565b91929081604051941684521660208301526040820152f35b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036102ff61042a6103fa6103f48495369060040161119a565b90611e85565b959497929093604051998a991689526020890152604088015216606086015260c0608086015260c08501906111c8565b9083820360a08501526111c8565b346103035760206003193601126103035760043567ffffffffffffffff8111610303576001600160a01b036020806104758194369060040161129b565b604051928184925191829101835e81015f8152030190205416604051908152f35b346103035760406003193601126103035760043567ffffffffffffffff8111610303576104c790369060040161119a565b906024359067ffffffffffffffff8211610303576101206003198336030112610303576020926104fa9260040191611e30565b6040519015158152f35b34610303576020600319360112610303576004355f52600260205261010060405f206001600160a01b03815416906001600160a01b0360018201541690600281015460038201549060056001600160a01b036004850154169301549360405195865260208601526040850152606084015260808301526001600160a01b03811660a083015265ffffffffffff8160a01c1660c083015260d01c60e0820152f35b6060600319360112610303576105b8611364565b6105c061137a565b906044356001600160a01b0381168091036103035782908273da000000000000d2885f108500803dfbaab2f2aa330361013b577f0664a178e530b983dd853e440d433bbd0e0bb8991c3e7293c2360df7dc79751d94846001600160a01b03606096166001600160a01b03831610610694575b50506001600160a01b0380911692835f52600360205260405f208282165f5260205260405f20837fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384521660208301526040820152a1005b935090506001600160a01b0380610632565b34610303576020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f206001600160a01b03604051916106f8836111ed565b81815416835281600182015416602084015260028101549360408401948552600382015460608501526005836004840154169260808601938452015483811660a086015265ffffffffffff8160a01c1660c086015260d01c60e08501525f52600260205261078660405f2060055f918281558260018201558260028201558260038201558260048201550155565b511633036107d257516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146107c1575b3868929eee149b4bd2126855005b6107cc9051336131ee565b806107b3565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ab143c065f526004601cfd5b3461030357604060031936011261030357610820611364565b6001600160a01b0361083061137a565b91165f5260036020526001600160a01b0360405f2091165f5260205260206001600160a01b0360405f205416604051908152f35b610107610870366112b9565b93929092611921565b60206003193601126103035760043567ffffffffffffffff8111610303576108a861010791369060040161119a565b90611654565b34610303576020600319360112610303576001600160a01b036108cf611364565b165f5260016020526102ff6102eb60405f206113e1565b34610303576020600319360112610303576108ff611364565b6001600160a01b03604051917fbffbe61c00000000000000000000000000000000000000000000000000000000835216600482015260208160248173a58e81fe9b61b5c3fe2afd33cf304c454abfc7cb5afa908115610a93575f91610ad2575b506040517f0178b8bf0000000000000000000000000000000000000000000000000000000081528160048201526020816024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa8015610a93576001600160a01b03925f928392610a9e575b5060249060405194859384927f691f34310000000000000000000000000000000000000000000000000000000084526004840152165afa8015610a93575f90610a18575b6102ff906040519182916020835260208301906111c8565b503d805f833e610a288183611226565b8101906020818303126103035780519067ffffffffffffffff821161030357019080601f83011215610303578151610a5f81611249565b91610a6d6040519384611226565b81835260208285010111610303576020815f92826102ff96018386015e83010152610a00565b6040513d5f823e3d90fd5b6024919250610ac49060203d602011610acb575b610abc8183611226565b810190611635565b91906109bc565b503d610ab2565b90506020813d602011610afc575b81610aed60209383611226565b8101031261030357518161095f565b3d9150610ae0565b346103035760206003193601126103035760043567ffffffffffffffff8111610303578060040161012060031983360301126103035760646102ff9201907fb61d27f6000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000610b8e84846114d3565b90358281169160048110610bca575b50501603610bb2576102eb916102e5916114d3565b610bc591610bbf916114d3565b906114b7565b6102eb565b839250829060040360031b1b16168680610b9d565b60606003193601126103035760043567ffffffffffffffff811161030357610c0b90369060040161129b565b60243567ffffffffffffffff811161030357610c2b90369060040161129b565b906044359167ffffffffffffffff831161030357610c5061010793369060040161129b565b91611546565b60206003193601126103035760043567ffffffffffffffff811161030357366023820112156103035780600401359067ffffffffffffffff82116103035760248101903660248460051b83010111610303575f5b838103610cb357005b83811015610d0d57610cd06108a860248360051b850101856114d3565b5f198114610ce057600101610caa565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604060031936011261030357610d4e611364565b60243567ffffffffffffffff811161030357610d6e90369060040161119a565b9073da000000000000d2885f108500803dfbaab2f2aa330361013b57610da1610da6916001600160a01b03933691611265565b614080565b911690815f52600160205260405f209181519267ffffffffffffffff8411610f5757610dd28154611390565b601f8111610f12575b50602093601f8111600114610e9157807fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda175955f91610e86575b505f198260011b9260031b1c19161790555b604051602081845180838701835e81015f815203019020817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055610e8160405192839283526040602084015260408301906111c8565b0390a1005b905084015186610e14565b601f19811694825f52805f20955f5b818110610efa57509582916001937fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda1759810610ee2575b5050811b019055610e26565b8601515f1960f88460031b161c191690558680610ed6565b86830151885560019097019660209283019201610ea0565b815f5260205f20601f860160051c81019160208710610f4d575b601f0160051c01905b818110610f425750610ddb565b5f8155600101610f35565b9091508190610f2c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206102a6610f92366112b9565b939290926132ad565b6020600319360112610303576004353068929eee149b4bd2126854146107fa573068929eee149b4bd2126855805f52600260205260405f20604051610fdf816111ed565b6001600160a01b0382541681526001600160a01b0360018301541660208201908152600283015492604083019384526003810154936060840194855265ffffffffffff60056001600160a01b036004850154169360808701948552015460a08601976001600160a01b0382168952828260a01c1660c088015260e087019160d01c82525f52600260205261109360405f2060055f918281558260018201558260028201558260038201558260048201550155565b5116421161113f576001600160a01b038094511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81145f1461112957506110d1915051336131ee565b511673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee810361110b5750513403610303576107b3906001600160a01b03349151166131ee565b906001600160a01b036111249351169051913390613187565b6107b3565b8461113a9351169151913391613187565b6110d1565b7fc56873ba000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103035760206003193601126103035760043567ffffffffffffffff8111610303576102eb610bbf6102ff9236906004015b9181601f840112156103035782359167ffffffffffffffff8311610303576020838186019501011161030357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b610100810190811067ffffffffffffffff821117610f5757604052565b6040810190811067ffffffffffffffff821117610f5757604052565b90601f601f19910116810190811067ffffffffffffffff821117610f5757604052565b67ffffffffffffffff8111610f5757601f01601f191660200190565b92919261127182611249565b9161127f6040519384611226565b829481845281830111610303578281602093845f960137010152565b9080601f83011215610303578160206112b693359101611265565b90565b60a06003198201126103035760043567ffffffffffffffff811161030357816112e49160040161129b565b9160243567ffffffffffffffff811161030357826113049160040161129b565b9160443567ffffffffffffffff811161030357816113249160040161129b565b9160643567ffffffffffffffff811161030357826113449160040161129b565b916084359067ffffffffffffffff8211610303576112b69160040161129b565b600435906001600160a01b038216820361030357565b602435906001600160a01b038216820361030357565b90600182811c921680156113d7575b60208310146113aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161139f565b9060405191825f8254926113f484611390565b808452936001811690811561145f575060011461141b575b5061141992500383611226565b565b90505f9291925260205f20905f915b818310611443575050906020611419928201015f61140c565b602091935080600191548385890101520191019091849261142a565b602093506114199592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f61140c565b600554811015610d0d5760055f5260205f2001905f90565b9080600411610303576112b69160046003193693019101611265565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610303570180359067ffffffffffffffff82116103035760200191813603831361030357565b602081519101519060208110611538575090565b5f199060200360031b1b1690565b91905f92602a8351145f1461161a5761155e8361442a565b925b6001600160a01b038416156115e4575b5061158f9161157f84926125d8565b5095905080156115d157906145a3565b906001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee036115c5575080340361030357611419916131ee565b91611419923390613187565b5060ff6115dd83614544565b16906145a3565b61157f9350916001600160a01b0360208061158f95604051928184925191829101835e81015f8152030190205416935091611570565b925061162d61162883611524565b6140cd565b939092611560565b9081602091031261030357516001600160a01b03811681036103035790565b610da190611663923691611265565b61166c816148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156118cc575b80156118a3575b801561187a575b156116b65750610c5061141991614c1f565b7f737761700000000000000000000000000000000000000000000000000000000081148015611851575b8015611828575b80156117ff575b15611700575061087061141991614971565b7f6c6f636b00000000000000000000000000000000000000000000000000000000811480156117d6575b156117425761173b61029d83614b8e565b5f5260205ff35b7f657363726f77000000000000000000000000000000000000000000000000000081036117755761173b610f9283614b8e565b7f6f72646572000000000000000000000000000000000000000000000000000000036117ae576117a761173b91614971565b9391612a03565b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b507f6c6f636b75700000000000000000000000000000000000000000000000000000811461172a565b507f7374616b6500000000000000000000000000000000000000000000000000000081146116ee565b507f65786368616e676500000000000000000000000000000000000000000000000081146116e7565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146116e0565b507f6772616e7400000000000000000000000000000000000000000000000000000081146116a4565b507f7061790000000000000000000000000000000000000000000000000000000000811461169d565b507f7472616e736665720000000000000000000000000000000000000000000000008114611696565b7f80000000000000000000000000000000000000000000000000000000000000008114610ce0575f0390565b91939260405160a0810181811067ffffffffffffffff821117610f57576040525f81525f602082015260408101945f865260608201945f865260808301945f86525f945f99602a8151145f14611e11576001600160a01b036119828261442a565b168a525b6001600160a01b038a511615611de5575b508051602a03611dc6576001600160a01b036119b28261442a565b1688525b6001600160a01b0388511615611d9a575b505f988151611d57575b5050805115938415611cf85750507f8000000000000000000000000000000000000000000000000000000000000000875b8086521015611cd05785859173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038351161480808652611cb7575b94611b92604097956001600160a01b03955f9587957fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009a611c9b575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8784511614806020860152611c7f575b8051158814611c665750611ab88a92878033945b511691511690614de6565b9d8e9b919a6020860151158a14611c5f5783975b158a14611c4f57519b5b8914611c3357816401000276a49e5b602087511515970151151592519051928f519760f81b602089015260f81b60218801523360601b602288015260601b16603686015260601b16604a84015260601b16605e82015260528152611b3b607282611226565b8389519a8b998a9889967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528d15156024870152604486015216606484015260a0608484015260a48301906111c8565b0393165af1908115610a93575f905f92611bf9575b5083611bb4575b50505050565b611bc3921561010957506118f5565b10611bd1575f808080611bae565b7fc1328a53000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150506040813d604011611c2b575b81611c1560409383611226565b810103126103035760208151910151905f611ba7565b3d9150611c08565b8173fffd8963efd1fc6a506488495d951d5263988d259e611ae5565b611c5990516118f5565b9b611ad6565b3097611acc565b8a928780611c76611ab8946125d8565b50905094611aad565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28352611a99565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28252611a74565b9250948093915051340361030357919386908692611a38565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f800000000000000000000000000000000000000000000000000000000000000091611d36918015611d3b575b6001600160a01b038a5116916145a3565b611a02565b5060ff611d516001600160a01b038b5116614544565b16611d25565b919850611d76918015611d7e575b6001600160a01b03885116916145a3565b965f806119d1565b5060ff611d946001600160a01b03895116614544565b16611d65565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541687525f6119c7565b6001600160a01b039950611ddc61162882611524565b9a1688526119b6565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541689525f611997565b6001600160a01b039650611e2761162882611524565b97168a52611986565b90611e3a91611e85565b94505050505080519060608301611e5181856114d3565b90508303611e7d57611e72926020611e6b930120936114d3565b3691611265565b602081519101201490565b505050505f90565b5f91611e99610da160609384933691611265565b91611ea3836148ab565b7f73656e6400000000000000000000000000000000000000000000000000000000811480156125af575b8015612586575b801561255d575b1561208257505050611eec90614c1f565b80515f949392606091602a0361206c57611f058361442a565b925b6001600160a01b0384161561203a575b5082611f5691611f4673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614966125d8565b5098905080156115d157906145a3565b928015611fe5575b8015611fde5785905b15611fd857835b6001600160a01b03604051927fb61d27f6000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260606064820152611fd181611fc360848201856111c8565b03601f198101835282611226565b9091929495565b5f611f6e565b8290611f67565b90506040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b038616602482015283604482015260448152612034606482611226565b90611f5e565b611f569193506020806001600160a01b0392604051928184925191829101835e81015f81520301902054169290611f17565b945061207a61162883611524565b959092611f07565b90919493507f737761700000000000000000000000000000000000000000000000000000000081148015612534575b801561250b575b80156124e2575b156121235750506120d26120db91614971565b9392909261514b565b94919590959293947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519160601b16602082015260148152612120603482611226565b91565b7f6c6f636b000000000000000000000000000000000000000000000000000000008195939294951480156124b9575b8015612490575b15612414575061216890614b8e565b909395925f959295505f96602a8751145f146123fe576121878761442a565b965b6001600160a01b038816156123be575b506121be876121ca936121ae6121c4946125d8565b509b905080156115d157906145a3565b956157c2565b91611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015612395575b156122065750603c025b420193929495565b7f64617900000000000000000000000000000000000000000000000000000000008114801561236c575b15612240575062015180026121fe565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015612343575b1561227a575062093a80026121fe565b7f6d6f6e74680000000000000000000000000000000000000000000000000000008114801561231a575b156122b457506224ea00026121fe565b7f796561720000000000000000000000000000000000000000000000000000000081149081156122f0575b50156117ae576301dfe200026121fe565b7f79656172730000000000000000000000000000000000000000000000000000009150145f6122df565b507f6d6f6e746873000000000000000000000000000000000000000000000000000081146122a4565b507f7765656b73000000000000000000000000000000000000000000000000000000811461226a565b507f64617973000000000000000000000000000000000000000000000000000000008114612230565b507f6d696e757465730000000000000000000000000000000000000000000000000081146121f4565b6121ae97506121c4916121ca936001600160a01b036020806121be95604051928184925191829101835e81015f8152030190205416995093509150612199565b965061240c61162887611524565b979096612189565b909392907f6f72646572000000000000000000000000000000000000000000000000000000036117ae5761246b6120d27fffffffffffffffffffffffffffffffffffffffff00000000000000000000000095614971565b604051951b909716602085015260148452919490939192909190612120603482611226565b507f657363726f7700000000000000000000000000000000000000000000000000008114612159565b507f6c6f636b757000000000000000000000000000000000000000000000000000008114612152565b507f7374616b6500000000000000000000000000000000000000000000000000000081146120bf565b507f65786368616e676500000000000000000000000000000000000000000000000081146120b8565b507f73656c6c0000000000000000000000000000000000000000000000000000000081146120b1565b507f6772616e740000000000000000000000000000000000000000000000000000008114611edb565b507f70617900000000000000000000000000000000000000000000000000000000008114611ed4565b507f7472616e736665720000000000000000000000000000000000000000000000008114611ecd565b80515f92918391602a81036125f157506121209061442a565b60209394506126619250600491818592604051968793018484015e81017f2e657468000000000000000000000000000000000000000000000000000000008382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe4810184520182611226565b5f9080518081600454905b6128d2575090806020920392010120604051906020820192835260408201526040815261269a606082611226565b51902090604051917f02571be30000000000000000000000000000000000000000000000000000000083528060048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93575f936128b1575b5073d4416b13d2b3a9abae7acd5d6c2bbdbe256864016001600160a01b03841614612832575b604051917f0178b8bf0000000000000000000000000000000000000000000000000000000083528160048401526020836024816e0c2e074ec69a0dfb2997ba6c7d2e1e5afa928315610a93576001600160a01b03936020915f91612815575b506024604051809681937f3b3b57de000000000000000000000000000000000000000000000000000000008352876004840152165afa928315610a93575f936127f4575b506001600160a01b038316156127cc57565b7f1e4ec46b000000000000000000000000000000000000000000000000000000005f5260045ffd5b61280e91935060203d602011610acb57610abc8183611226565b915f6127ba565b61282c9150823d8411610acb57610abc8183611226565b5f612776565b91506040517f6352211e00000000000000000000000000000000000000000000000000000000815282600482015260208160248173d4416b13d2b3a9abae7acd5d6c2bbdbe256864015afa908115610a93575f91612892575b5091612717565b6128ab915060203d602011610acb57610abc8183611226565b5f61288b565b6128cb91935060203d602011610acb57610abc8183611226565b915f6126f1565b915f198101906128e28286614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f2e0000000000000000000000000000000000000000000000000000000000000081146129c9577f8000000000000000000000000000000000000000000000000000000000000000111561030357848160f81c1015610d0d5760ff9060045f5260f86107f88260fd1c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01549260f51c16161c168015610303575f1992600182116129b7575b50505b01918261266c565b6129c19087614419565b535f806129ac565b50509194825f199296036020848701012060405190602082019283526040820152604081526129f9606082611226565b51902094916129af565b90923068929eee149b4bd2126854146107fa573068929eee149b4bd2126855604051612a2e816111ed565b5f815260208101955f8752604082015f815260608301915f8352612b0960808501955f875260a08601995f8b5260c08701985f8a5260e088019a5f8c528d5f905f93602a8151145f14612e0b576001600160a01b03612a8c8261442a565b168c525b6001600160a01b038c511615612ddf575b508451602a03612dbc57846001600160a01b03612ac1612aef969761442a565b1682525b6001600160a01b0382511615612d8f575b50508015611d3b576001600160a01b038a5116916145a3565b85528015612d73575b6001600160a01b038c5116916145a3565b835273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0385511614612d5f575b6001600160a01b039460059386959386933384528051155f14612d4d575083335b168b5265ffffffffffff4216895265ffffffffffff62093a804201168a52838c8c8260405191816020840194818c511686525116604084015285516060840152865160808401528188511660a0840152511660c082015265ffffffffffff8c511660e082015265ffffffffffff8d51166101008201526101008152612bd961012082611226565b5190209c8d5f526002602052818060405f20985116167fffffffffffffffffffffffff00000000000000000000000000000000000000008854161787555116846001870191167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555160028501555160038401555116836004830191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905501945116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835551906001600160a01b0379ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000008554935160d01b169360a01b1691161717905560055468010000000000000000811015610f5757806001612d2b920160055561149f565b81549060031b905f1984831b921b1916179055903868929eee149b4bd2126855565b612d5785916125d8565b509050612b52565b819293915134036103035792919092612b31565b5060ff612d896001600160a01b038d5116614544565b16612af8565b60405181516001600160a01b0392602091839181908401835e81015f815203019020541690528e5f612ad6565b612aef935084612dd66116286001600160a01b0397611524565b96168252612ac5565b60405181516001600160a01b0392602091839181908401835e81015f81520301902054168b525f612aa1565b6001600160a01b039250612e2161162882611524565b93168c52612a90565b91908260409103126103035781356001600160a01b038116810361030357916020013590565b90806044116103035781612e7260446001600160a01b03940160048301612e2a565b931692806130e85750816088119283610303577fffffffff00000000000000000000000000000000000000000000000000000000608483013516937fa9059cbb00000000000000000000000000000000000000000000000000000000851494851590816130ba575b5061309257610303576020936112b693600693612ef684615529565b929094859380965115613077575b15613038575b5087928380612f7d6001600160a01b03612f76612f3160019a986088869982019101612e2a565b9b909815612ffb57604051612f47604082611226565b600581527f73656e6420000000000000000000000000000000000000000000000000000000868201529b615376565b961661543e565b946040519b898d9a5191829101848c015e8901908282015f8152815193849201905e010190600160fd1b82528051928391018683015e01907f20746f203078000000000000000000000000000000000000000000000000000084830152805192839101600783015e01015f838201520301601f198101835282611226565b604051613009604082611226565b600881527f617070726f766520000000000000000000000000000000000000000000000000868201529b615376565b8880809592819498506001600160a01b03612f76612f3160019a98608860ff613063612f7d97614544565b169d995050989a5050505050505092612f0a565b9350805f526001895261308c60405f206113e1565b93612f04565b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b9150507f095ea7b3000000000000000000000000000000000000000000000000000000005f9114155f612eda565b6112b69250600a91509260256020613109613103829761527b565b9361543e565b6040519687947f73656e6420000000000000000000000000000000000000000000000000000000828701528051918291018587015e8401907f2045544820746f2030780000000000000000000000000000000000000000000084830152805192839101602f83015e01015f838201520301601f198101835282611226565b916040519360605260405260601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f511416156131d0575b50505f606052604052565b3b153d1710156131e1575f806131c5565b637939f4245f526004601cfd5b5f80809338935af1156131fd57565b63b12d13eb5f526004601cfd5b9695949161325a936001600160a01b0380928160c09895168b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b930152565b95949390926001600160a01b0361325a938160c0965f8b521660208a01521660408801526d1d8a2e7bf6bc369525a2654aa2986060880152608087015260e060a087015260e08601906111c8565b929493905f935f90602a8551145f146139d0576132c98561442a565b925b6001600160a01b038416156139a7575b6132e4826125d8565b50939050848115613991576132fa915b836145a3565b946133048a6157c2565b61330d82611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015613968575b1561378c5750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361357857508534036135745787989986979850895f1461356d57845b8a15613567575033935b604051998a94602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e0160050188600182015203600101601f19810187526134c99087611226565b60405195869485947f8e3de7ab00000000000000000000000000000000000000000000000000000000865242019260048601946135059561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f191821561355b579161352c575090565b90506020813d602011613553575b8161354760209383611226565b81010312610303575190565b3d915061353a565b604051903d90823e3d90fd5b93613398565b339461338e565b8780fd5b94959697509161358f879a9294999a303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f5114161561376e575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f19810185526137079085611226565b604051948594859485947f8e3de7ab0000000000000000000000000000000000000000000000000000000086524201923360048701956137469661320a565b035a925f6d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b3d863b1517101561377f575f6135d0565b633e3f8f735f526004601cfd5b7f64617900000000000000000000000000000000000000000000000000000000008114801561393f575b156137d9575062015180810290808204620151801490151715610ce05794613352565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613916575b15613826575062093a8081029080820462093a801490151715610ce05794613352565b7f6d6f6e7468000000000000000000000000000000000000000000000000000000811480156138ed575b1561387357506224ea008102908082046224ea001490151715610ce05794613352565b7f796561720000000000000000000000000000000000000000000000000000000081149081156138c3575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613352565b7f79656172730000000000000000000000000000000000000000000000000000009150145f61389e565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613850565b507f7765656b730000000000000000000000000000000000000000000000000000008114613803565b507f646179730000000000000000000000000000000000000000000000000000000081146137b6565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613337565b6132fa915060ff6139a182614544565b166132f4565b92506001600160a01b03604051602081885180838b01835e81015f8152030190205416926132db565b90506139de61162885611524565b9190926132cb565b92905f94602a8451145f1461406a576139fe8461442a565b925b6001600160a01b03841615614041575b613a19866125d8565b5097905084811561402b57613a2f915b856145a3565b95613a39826157c2565b613a4284611524565b7f6d696e757465000000000000000000000000000000000000000000000000000081148015614002575b15613e265750603c810290808204603c1490151715610ce057945b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03613c4b575086340361030357604051958694602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018352613be59083611226565b60405193849283927f8e3de7ab00000000000000000000000000000000000000000000000000000000845242019085336004860194613c239561325f565b03815a936d44992cb97cb1a57a32e271c04c11602095f1908115610a93575f9161352c575090565b93929190613c5d889798303388613187565b6d44992cb97cb1a57a32e271c04c11601452866034526f095ea7b30000000000000000000000005f5260205f6044601082895af18060015f51141615613e15575b505f603452604051978894602086017f6c6f636b00000000000000000000000000000000000000000000000000000000905260248601600160fd1b905280516020819201602588015e850160258101600160fd1b905281516020819301602683015e0160250160018101600160fd1b9052600281017f666f720000000000000000000000000000000000000000000000000000000000905260058101600160fd1b905281516020819301600683015e0160010160058101600160fd1b9052600681017f666f720000000000000000000000000000000000000000000000000000000000905260098101600160fd1b905281516020819301600a83015e0160050160058101600160fd1b905281516020819301600683015e01600501600181015f905203600101601f1981018552613dd59085611226565b604051948594859485947f8e3de7ab000000000000000000000000000000000000000000000000000000008652420192339060048701956137469661320a565b3d863b1517101561377f575f613c9e565b7f646179000000000000000000000000000000000000000000000000000000000081148015613fd9575b15613e73575062015180810290808204620151801490151715610ce05794613a87565b7f7765656b0000000000000000000000000000000000000000000000000000000081148015613fb0575b15613ec0575062093a8081029080820462093a801490151715610ce05794613a87565b7f6d6f6e746800000000000000000000000000000000000000000000000000000081148015613f87575b15613f0d57506224ea008102908082046224ea001490151715610ce05794613a87565b7f79656172000000000000000000000000000000000000000000000000000000008114908115613f5d575b50156117ae576301dfe2008102908082046301dfe2001490151715610ce05794613a87565b7f79656172730000000000000000000000000000000000000000000000000000009150145f613f38565b507f6d6f6e74687300000000000000000000000000000000000000000000000000008114613eea565b507f7765656b730000000000000000000000000000000000000000000000000000008114613e9d565b507f64617973000000000000000000000000000000000000000000000000000000008114613e50565b507f6d696e75746573000000000000000000000000000000000000000000000000008114613a6c565b613a2f915060ff61403b82614544565b16613a29565b92506001600160a01b03604051602081875180838a01835e81015f815203019020541692613a10565b945061407861162884611524565b959092613a00565b90815191604051835b5f19810190601f8185015160ff1660206bffffffc00000000000000000821c161891840101538061408957505050604080519280845283015f602082015201604052565b5f915f917f6574680000000000000000000000000000000000000000000000000000000000811480156143f0575b6143d2577f757364630000000000000000000000000000000000000000000000000000000081146143b4577f75736474000000000000000000000000000000000000000000000000000000008114801561438b575b61436d577f6461690000000000000000000000000000000000000000000000000000000000811461434f577f77657468000000000000000000000000000000000000000000000000000000008114614331577f776274630000000000000000000000000000000000000000000000000000000081148015614308575b80156142df575b6142c1577f737465746800000000000000000000000000000000000000000000000000000081148015614298575b801561426f575b614251577f72657468000000000000000000000000000000000000000000000000000000001461423457565b73ae78736cd615f374d3085123a210448e74fc6393925060129150565b50737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0925060129150565b507f6c69646f000000000000000000000000000000000000000000000000000000008114614208565b507f77737465746800000000000000000000000000000000000000000000000000008114614201565b50732260fac5e5542a773aa44fbcfedf7c193bc2c599925060089150565b507f626974636f696e0000000000000000000000000000000000000000000000000081146141d3565b507f627463000000000000000000000000000000000000000000000000000000000081146141cc565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2925060129150565b50736b175474e89094c44da98b954eedeac495271d0f925060129150565b5073dac17f958d2ee523a2206206994597c13d831ec7925060069150565b507f74657468657200000000000000000000000000000000000000000000000000008114614150565b5073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48925060069150565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee925060129150565b507f657468657200000000000000000000000000000000000000000000000000000081146140fb565b908151811015610d0d570160200190565b602a8151036117ae575f6002915b602a830361444f57506001600160a01b0391501690565b9060041b61445d8383614419565b5160f81c90603082101580614539575b156144a55760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0600193011601925b019190614438565b60418210158061452e575b156144e45760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc96001930116019261449d565b606182101580614523575b156117ae5760ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa96001930116019261449d565b5060668211156144ef565b5060468211156144b0565b50603982111561446d565b60208060ff9263313ce56760045260045f52815f5191620186a0fa601f3d1116602051021690565b8115614576570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b92915f6145af85611524565b7f616c6c00000000000000000000000000000000000000000000000000000000008114908115614881575b50614845578451945f905f905f975f5b81811061467c575b50505090155f1461465c575082600a0a02935b61460d575050565b91926112b6926001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361464b575033313401915b600a0a606402910261456c565b61465690339061584b565b9161463e565b83819692961061466d575b50614605565b8303600a0a909402935f614667565b6146868184614419565b517fff0000000000000000000000000000000000000000000000000000000000000081167f30000000000000000000000000000000000000000000000000000000000000008110158061481b575b1561473257508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c910201019561471d575b6001905b019392936145ea565b936001019387851115614710579392936145f2565b90507f2e0000000000000000000000000000000000000000000000000000000000000081969295961480614813575b1561477157505060018093614714565b7f2500000000000000000000000000000000000000000000000000000000000000819b92959b1480614807575b156147ae57505060018099614714565b9099907fe000000000000000000000000000000000000000000000000000000000000000016147df57600190614714565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f1983018b1461479e565b508115614761565b507f39000000000000000000000000000000000000000000000000000000000000008111156146d4565b50919250506001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0361487657503331340190565b6112b690339061584b565b7f31303025000000000000000000000000000000000000000000000000000000009150145f6145da565b602001516020905f5b602081106148cd575b50905f199060200360031b1b1690565b81811a602081159114176148e3576001016148b4565b91505f196148bd565b805160011015610d0d5760400190565b805160041015610d0d5760a00190565b805160021015610d0d5760600190565b805160051015610d0d5760c00190565b805160071015610d0d576101000190565b805160031015610d0d5760800190565b805160061015610d0d5760e00190565b8051821015610d0d5760209160051b010190565b61497a8161588c565b805160058103614a475750906149a161499c614995846148ec565b51836159ee565b615a59565b156149fc576149d26149b5614995846148ec565b916149cb6149c56149958661490c565b946148fc565b51906159ee565b90926040516149e2602082611226565b5f81529291906040516149f6602082611226565b5f815290565b91614a23614a13614a0c8461493d565b51856159ee565b936149cb6149c5614995866148ec565b90604051614a32602082611226565b5f8152939291906040516149f6602082611226565b60068103614aa557509091614a65614a5e836148ec565b51846159ee565b90614a92614a7c614a75856148fc565b51866159ee565b946149cb614a8c6149958761490c565b9561491c565b91939291906040516149f6602082611226565b60078103614b415750614abd61499c614a5e836148ec565b15614b0c57614ace614995826148ec565b614af3614add614a0c8461490c565b936149cb614aed614995866148fc565b9461494d565b9093604051614b03602082611226565b5f815293929190565b614b186149958261493d565b92614b28614add614a0c846148ec565b90604051614b37602082611226565b5f81529493929190565b6008036117ae57614b54614995826148ec565b614b60614a5e836148fc565b93614b86614b70614a758561490c565b946149cb614b806149958761491c565b9561492c565b919493929190565b614b978161588c565b6007815114614be15780516008036117ae57614bb5614995826148fc565b614bc1614a5e836148ec565b93614b86614bd1614a758561490c565b946149cb614b806149958761494d565b614bed614995826148ec565b614bf9614a5e8361490c565b93614b86614c09614a758561493d565b946149cb614c196149958761491c565b9561494d565b8051916001925f5b818103614d9b5750601f19614c54614c3e86615874565b95614c4c6040519788611226565b808752615874565b015f5b818110614d785750505f905f905f5b818103614cfc575090614c99929160405191614c818361120a565b82526020820152614c92828761495d565b528461495d565b506004835114614cd75782516005036117ae57614cd1614cbb614a5e856148fc565b926149cb614ccb614995876148ec565b9561490c565b91929190565b614cd1614ce6614a5e856148ec565b926149cb614cf66149958761490c565b9561493d565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614d2c8389614419565b511614614d3c575b600101614c66565b9192614d6d9060405194614d4f8661120a565b85528360208601526001810194614d66828a61495d565b528761495d565b506001820191614d34565b602090604051614d878161120a565b5f81525f8382015282828901015201614c57565b600160fd1b7fff00000000000000000000000000000000000000000000000000000000000000614dcb8387614419565b511614614ddb575b600101614c27565b600190940193614dd3565b915f6001600160a01b0383166001600160a01b038516105f1461514457506001915b614e128185615b3e565b936001600160a01b03851615614e26575050565b9093506001600160a01b0381165f52600360205260405f206001600160a01b0385165f526020526001600160a01b0360405f205416938415614e66575050565b6001600160a01b039294506060604051838152826020820152606460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f60355260606040518281528360208201526101f460408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20915f6035526060604051838152826020820152610bb860408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000600152601552606060555f20915f60355260405190848252602082015261271060408201522060ff5f537fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546035527f1f98431c8ad98523631ae4a59f267346ea31f98400000000000000000000000060015260155260555f20925f6035526040516150388161120a565b5f81525f602082015294803b61511a575b50803b6150dc575b50803b61509e575b50813b615068575b5050511691565b816150729161584b565b602083015181111561506157909150826040519261508f8461120a565b16825260208201525f80615061565b6150a8818361584b565b602085015181116150ba575b50615059565b9091935084604051926150cc8461120a565b1682526020820152915f806150b4565b6150e6818461584b565b602086015181116150f8575b50615051565b90919450856040519261510a8461120a565b1682526020820152925f806150f2565b909450615127818461584b565b86604051926151358461120a565b1682526020820152935f615049565b9192614e08565b949291925f915f965f97602a8751145f14615267576151698761442a565b965b6001600160a01b03881615615238575b508551602a03615220579086916151918761442a565b965b6001600160a01b038816156151e4575b506151c993879390926151bc9280156115d157906145a3565b9880156115d157906145a3565b9480516151d35750565b6151de9192506125d8565b50905090565b6151c994929750926001600160a01b036020806151bc9496604051928184925191829101835e81015f81520301902054169792945092906151a3565b9750859061523061162887611524565b999096615193565b6001600160a01b0391975060208091604051928184925191829101835e81015f8152030190205416955f61517b565b5061527461162887611524565b909661516b565b9061529a670de0b6b3a7640000615293818504615d99565b9306615d99565b60128151146152fb576152f660216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b61529a565b61530790929192615de0565b80511561537257600160209283806112b6946040519684889551918291018487015e8401907f2e0000000000000000000000000000000000000000000000000000000000000083830152805192839101602183015e01015f838201520301601f198101835282611226565b5090565b91909182600a0a9061539061538b838361456c565b615d99565b918015614576576153a19106615d99565b83815114615401576153fc60216020926040519384917f3000000000000000000000000000000000000000000000000000000000000000828401528051918291018484015e81015f838201520301601f198101835282611226565b6153a1565b61530791929350615de0565b9061541782611249565b6154246040519182611226565b828152601f196154348294611249565b0190602036910137565b9060405161544d606082611226565b6028815260403660208301375f5b6014810361546857509150565b8060ff806154896001809560130360031b1b6001600160a01b03891661456c565b161660f481901b7f0f000000000000000000000000000000000000000000000000000000000000001690615522908490615518907fff000000000000000000000000000000000000000000000000000000000000009060ff60f0610ff0826154f08a615eb9565b998d6155028d8b1b809d5f1a92614419565b5360f81c1660041b161691160360f81b16615eb9565b5f1a920185614419565b530161545b565b6060916001600160a01b035f921673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881146157805773dac17f958d2ee523a2206206994597c13d831ec7811461573e57736b175474e89094c44da98b954eedeac495271d0f81146156fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281146156ba57732260fac5e5542a773aa44fbcfedf7c193bc2c599811461567857737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081146156365773ae78736cd615f374d3085123a210448e74fc6393146155f557565b915050604051615606604082611226565b600481527f5245544800000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615648604082611226565b600681527f5753544554480000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161568a604082611226565b600481527f5742544300000000000000000000000000000000000000000000000000000000602082015290600890565b509150506040516156cc604082611226565b600481527f5745544800000000000000000000000000000000000000000000000000000000602082015290601290565b5091505060405161570e604082611226565b600381527f4441490000000000000000000000000000000000000000000000000000000000602082015290601290565b50915050604051615750604082611226565b600481527f5553445400000000000000000000000000000000000000000000000000000000602082015290600690565b50915050604051615792604082611226565b600481527f5553444300000000000000000000000000000000000000000000000000000000602082015290600690565b905f805b835182146158465760306157da8386614419565b5160f81c10158061582e575b156147df57600190600a60ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd061581d8689614419565b5160f81c01169102019101906157c6565b50603961583b8386614419565b5160f81c11156157e6565b925050565b602460106020939284936f70a082310000000000000000000000005f526014525afa5060205190565b67ffffffffffffffff8111610f575760051b60200190565b908151906001915f5b8181036159a35750601f196158c26158ac85615874565b946158ba6040519687611226565b808652615874565b015f5b818110615980575050825f915f905f5b81810361590b575061590894959650604051916158f18361120a565b82526020820152615902838361495d565b5261495d565b50565b600160fd1b7fff0000000000000000000000000000000000000000000000000000000000000061593b838b614419565b51161461594b575b6001016158d5565b9193615975906040519561595e8761120a565b86528360208701526001810195614c92828761495d565b506001820191615943565b60209060405161598f8161120a565b5f81525f83820152828288010152016158c5565b600160fd1b7fff000000000000000000000000000000000000000000000000000000000000006159d38388614419565b5116146159e3575b600101615895565b6001909301926159db565b9190615a0160208201518251900361540d565b905f5b82518114615a5257807fff00000000000000000000000000000000000000000000000000000000000000615a3d60019385510188614419565b51165f1a615a4b8286614419565b5301615a04565b5090925050565b7f616c6c0000000000000000000000000000000000000000000000000000000000615a8382611524565b14615b3857805115610d0d57602081017f30000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082511610159182615ae557505090565b9091505115610d0d577fff000000000000000000000000000000000000000000000000000000000000007f3900000000000000000000000000000000000000000000000000000000000000915116111590565b50600190565b91906001600160a01b035f9316737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0811480615d73575b615d585773ae78736cd615f374d3085123a210448e74fc6393811480615d32575b615d175773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48811480615cf1575b615cd65773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811480615cb0575b615c9557736b175474e89094c44da98b954eedeac495271d0f811480615c6f575b615c5457732260fac5e5542a773aa44fbcfedf7c193bc2c599149081615c2d575b50615c1457565b734585fe77225b41b697c938b018e2ac67ac5a20c09150565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291506001600160a01b0316145f615c0d565b5073c2e9f25be6257c210d7adf0d4cd6e3e881ba25f8925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615bec565b507311b815efb8f581194ae79006d24e0d814b7697f6925050565b5073dac17f958d2ee523a2206206994597c13d831ec76001600160a01b03831614615bcb565b507388e6a0c2ddd26feeb64f039a2c41296fcb3f5640925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615baa565b5073553e9c493678d8606d6a5ba284643db2110df823925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b89565b5073109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa925050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03831614615b68565b90604051600a5f19608083019460a084016040525f8652945b0193818106603001855304928315615dce575f19600a91615db2565b9250608083601f199203019201918252565b90815190815b80151580615e61575b15615dfc575f1901615de6565b9091811461590857615e0d8161540d565b905f5b818103615e1e575090925050565b807fff00000000000000000000000000000000000000000000000000000000000000615e4c60019388614419565b51165f1a615e5a8286614419565b5301615e10565b507f30000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000615eb15f19840187614419565b511614615def565b7fff000000000000000000000000000000000000000000000000000000000000009060f81c600f16600a811015615ef6576030905b0160f81b1690565b605790615eee56fea26469706673582212206cecd1868f608f96249b8a7381a49133f282850304cf4714a82ab48f347fc82164736f6c634300081c0033","sourceMap":"805:57977:27:-:0;;;;;;;;;-1:-1:-1;805:57977:27;;;;;28765:475;;;;;;;-1:-1:-1;29253:17:27;;;;:38;;-1:-1:-1;29249:64:27;;29357:38;28765:475;;;;29357:38;;:::i;:::-;29405:113;;;;;;28765:475;;-1:-1:-1;28765:475:27;;;;-1:-1:-1;;29569:40:27;;;;;;-1:-1:-1;33151:503:27;;;;;;;;29405:113;33151:503;;;;;-1:-1:-1;33151:503:27;-1:-1:-1;33151:503:27;;;;;;;;-1:-1:-1;33151:503:27;;29527:214;28765:475;;-1:-1:-1;28765:475:27;29750:184;;805:57977;29750:184;29916:6;;29801:43;;29803:40;;;;29801:43;:::i;:::-;33791:230;-1:-1:-1;33791:230:27;;;;-1:-1:-1;33791:230:27;28765:475;33791:230;;;;;;28765:475;;;;29916:6;:::i;:::-;29750:184;29803:40;;;29801:43;:::i;29569:40::-;;;;29527:214;29680:49;;29688:40;;;;;;;28765:475;;;;29680:49;;:::i;:::-;29527:214;;29688:40;;;;;29405:113;;;;29249:64;29300:13;-1:-1:-1;29300:13:27;805:57977;-1:-1:-1;29300:13:27;29253:38;29274:17;-1:-1:-1;29274:17:27;;;29253:38;;805:57977;34667:113;;;;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21792:79;805:57977;;;:::i;:::-;21792:79;;;;;:::i;:::-;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;7437:28;805:57977;7437:28;;;;;;805:57977;7437:28;;:::i;:::-;805:57977;;;;;;;;;;;;;;35568:12;805:57977;;;:::i;:::-;35568:12;;;;;:::i;805:57977::-;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;6825:49;805:57977;;;;;;-1:-1:-1;;;;;805:57977:27;;;6825:49;-1:-1:-1;;;;;805:57977:27;6825:49;;805:57977;;6825:49;;;;805:57977;6825:49;;;805:57977;6825:49;;-1:-1:-1;;;;;805:57977:27;6825:49;;805:57977;;6825:49;;805:57977;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;43675:112;;;;;43867:53;805:57977;;-1:-1:-1;;;;;805:57977:27;;;-1:-1:-1;;;;;805:57977:27;;43800:15;43796:56;;805:57977;;;-1:-1:-1;;;;;805:57977:27;;;;;;;43891:5;805:57977;;;;;;;;-1:-1:-1;805:57977:27;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;43867:53;805:57977;43796:56;43817:35;-1:-1:-1;43817:35:27;-1:-1:-1;;;;;;805:57977:27;43796:56;;805:57977;;;;;-1:-1:-1;;805:57977:27;;;;;;;34882:261;;;;;;;;;805:57977;;;37127:6;805:57977;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;37127:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37127:6;805:57977;;37149:19;805:57977;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;37149:19;805:57977;;37182:10;:21;37178:48;;805:57977;-1:-1:-1;;;;;805:57977:27;3651:42;37240:16;37236:60;;805:57977;35163:91;34882:261;35163:91;805:57977;37236:60;37285:10;3651:42;;37182:10;37285;:::i;:::-;37236:60;;;37178:48;37212:14;805:57977;37212:14;805:57977;;37212:14;34882:261;;805:57977;34882:261;805:57977;34882:261;;805:57977;;;;;-1:-1:-1;;805:57977:27;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:27;;:::i;:::-;;;;;6946:74;805:57977;;-1:-1:-1;;;;;805:57977:27;;;6946:74;805:57977;-1:-1:-1;805:57977:27;;;;-1:-1:-1;;;;;805:57977:27;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:27;;;;;-1:-1:-1;;;;;805:57977:27;;:::i;:::-;;;;6716:49;805:57977;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;805:57977:27;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:27;;41565:22;6169:54;41565:22;;805:57977;;41565:22;;805:57977;;41565:22;;;6180:42;41565:22;;;;;;;805:57977;41565:22;;;805:57977;;;;6169:54;41615:27;;;805:57977;41615:27;;805:57977;;41615:27;41565:22;41615:27;5865:42;41615:27;;;;;;-1:-1:-1;;;;;41615:27:27;805:57977;41615:27;;;;;805:57977;;41565:22;805:57977;;;41604:50;;;;;6169:54;41604:50;;805:57977;41604:50;;805:57977;;41604:50;;;;;;805:57977;41604:50;;;805:57977;;;;;;;;;;;;;;;;:::i;41604:50::-;;;;805:57977;41604:50;;;;;;:::i;:::-;;;5854:54;805:57977;5854:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;805:57977;;;;;;;:::i;:::-;5854:54;;;805:57977;5854:54;;;;;;;805:57977;5854:54;805:57977;5854:54;;805:57977;5854:54;;;;;805:57977;;;;;41604:50;;;805:57977;;6169:54;805:57977;6169:54;;;;;41615:27;41565:22;41615:27;;;;;805:57977;41615:27;805:57977;41615:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;41565:22;;;805:57977;41565:22;;805:57977;41565:22;;;;;;6169:54;41565:22;;;:::i;:::-;;;6169:54;;;;;41565:22;;;;;;-1:-1:-1;41565:22:27;;805:57977;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;40287:15;805:57977;40287:15;;;40307:26;805:57977;40287:15;;;;:::i;:::-;40280:23;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:27;40280:53;40307:26;;40348:33;40365:15;;;;:::i;40280:149::-;40396:33;40413:15;;;;:::i;:::-;40396:33;;:::i;:::-;40280:149;;805:57977;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20527:19;;;;;;805:57977;20548:3;805:57977;;;;;;20575:10;805:57977;;;;;;;;;;:::i;20575:10::-;-1:-1:-1;;805:57977:27;;;;;;20516:9;;805:57977;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43210:112;;;;;;805:57977;43365:23;805:57977;-1:-1:-1;;;;;805:57977:27;;;;:::i;:::-;43365:23;:::i;:::-;805:57977;;;;;;43399:5;805:57977;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;43439:50;805:57977;;;;;;;-1:-1:-1;;805:57977:27;43399:5;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43439:50;;;805:57977;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;43439:50;805:57977;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43399:5;805:57977;;;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;;;22210:80;805:57977;;;:::i;:::-;22210:80;;;;;:::i;805:57977::-;;-1:-1:-1;;805:57977:27;;;;;;;34882:261;;;;;;;;;805:57977;;;37459:6;805:57977;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;805:57977:27;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;37459:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;37459:6;805:57977;;37481:19;805:57977;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;37481:19;805:57977;;37514:15;:26;37510:53;;-1:-1:-1;;;;;805:57977:27;;;;3651:42;37577:16;;37573:134;3651:42;;;;37622:10;3651:42;;;37595:10;37622;:::i;:::-;805:57977;;3651:42;37721:17;;3651:42;;;;37762:9;:24;3651:42;;37828:9;37762;-1:-1:-1;;;;;37762:9:27;805:57977;;;37828:9;:::i;37717:227::-;805:57977;-1:-1:-1;;;;;37921:11:27;805:57977;;;3651:42;;37897:10;;37921:11;;:::i;:::-;37717:227;;37573:134;805:57977;37696:10;805:57977;;;3651:42;;37684:10;;37696;;:::i;:::-;37573:134;;37510:53;37549:14;805:57977;37549:14;805:57977;;37549:14;805:57977;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;805:57977:27;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;805:57977:27;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:57977:27;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;805:57977:27;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;805:57977:27;;;;;-1:-1:-1;805:57977:27;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7437:28;805:57977;;;;;;7437:28;-1:-1:-1;805:57977:27;;-1:-1:-1;805:57977:27;;;-1:-1:-1;805:57977:27;:::o;38098:182::-;;805:57977;38269:1;805:57977;;;;;38269:1;-1:-1:-1;;805:57977:27;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;805:57977:27;;;;;;;;:::o;20691:774::-;;;-1:-1:-1;805:57977:27;20904:2;805:57977;;20881:25;20877:144;20904:2;;;20917:24;;;:::i;:::-;20877:144;;-1:-1:-1;;;;;805:57977:27;;21035:20;21031:51;;20877:144;21111:22;21173:80;21111:22;;;;;:::i;:::-;-1:-1:-1;21196:48:27;;-1:-1:-1;21196:13:27;;;;:48;21173:80;:::i;:::-;805:57977;-1:-1:-1;;;;;805:57977:27;;3651:42;21268:13;3651:42;;21305:9;;;:20;3651:42;;21360:7;;;:::i;21264:195::-;21423:10;21440:7;21423:10;;21440:7;;:::i;21196:48::-;21223:21;805:57977;21223:21;;;:::i;:::-;805:57977;21196:48;21173:80;:::i;21031:51::-;21111:22;805:57977;;;-1:-1:-1;;;;;805:57977:27;;21173:80;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;;;21031:51;;;;;20877:144;20999:21;;20977:44;20999:21;;;:::i;:::-;20977:44;:::i;:::-;20956:65;;20877:144;;;5854:54;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;5854:54;:::o;17590:2767::-;805:57977;17590:2767;17690:25;17590:2767;805:57977;;;:::i;17690:25::-;17742:23;;;:::i;:::-;805:57977;17779:16;;:40;;;;17590:2767;17779:59;;;;17590:2767;17779:80;;;;17590:2767;17775:2576;;;17936:24;;18007:13;17936:24;;:::i;17775:2576::-;805:57977;18055:16;;:36;;;;17775:2576;18055:60;;;;17775:2576;18055:81;;;;17775:2576;18038:2313;;;18376:24;;18575:16;18376:24;;:::i;18038:2313::-;805:57977;18626:16;;:38;;;;18038:2313;18622:1729;;;21792:79;18873:24;;;:::i;21792:79::-;-1:-1:-1;19013:108:27;;-1:-1:-1;19013:108:27;18622:1729;805:57977;19141:18;;805:57977;;22210:80;19368:24;;;:::i;19137:1214::-;805:57977;19654:17;805:57977;;19899:24;35568:12;19899:24;;:::i;:::-;35568:12;;;:::i;19650:701::-;20298:15;-1:-1:-1;20298:15:27;;-1:-1:-1;20298:15:27;18626:38;18646:18;805:57977;18646:18;;18626:38;;18055:81;18119:17;805:57977;18119:17;;18055:81;;:60;18095:20;805:57977;18095:20;;18055:60;;:36;18075:16;805:57977;18075:16;;18055:36;;17779:80;17842:17;805:57977;17842:17;;17779:80;;:59;17823:15;805:57977;17823:15;;17779:59;;:40;17799:20;805:57977;17799:20;;17779:40;;3781:42;;;;;;;;;:::o;25938:2483::-;;;;805:57977;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;-1:-1:-1;805:57977:27;;;;;;;;-1:-1:-1;805:57977:27;;;;;;-1:-1:-1;805:57977:27;;;;;;-1:-1:-1;805:57977:27;;-1:-1:-1;26212:19:27;-1:-1:-1;805:57977:27;26270:2;805:57977;;26245:27;26241:164;26270:2;;;-1:-1:-1;;;;;26289:26:27;;;:::i;:::-;805:57977;;;26241:164;-1:-1:-1;;;;;805:57977:27;;;26419:26;26415:65;;26241:164;-1:-1:-1;805:57977:27;;26270:2;26494:28;26270:2;;-1:-1:-1;;;;;26540:27:27;;;:::i;:::-;805:57977;;;26490:170;-1:-1:-1;;;;;805:57977:27;;;26674:27;26670:68;;26490:170;26749:14;-1:-1:-1;805:57977:27;;;26773:239;;26490:170;-1:-1:-1;;805:57977:27;;27038:27;;27091:204;;;;;;27327:8;27091:204;;805:57977;;;27310:25;;27306:48;;805:57977;;;3651:42;-1:-1:-1;;;;;805:57977:27;;;27377:19;805:57977;;;;27406:51;;27091:204;27467:35;5532:10;805:57977;27467:35;;-1:-1:-1;;;;;27467:35:27;-1:-1:-1;27467:35:27;;;5532:10;27467:35;;;27091:204;3651:42;805:57977;;;;27526:20;805:57977;;;;;27556:37;;27091:204;805:57977;;27635:27;:15;;;;27676:10;27791:48;27676:10;;;;;27631:115;;805:57977;;;;;27791:48;;:::i;:::-;805:57977;;;;;;;;;;27920:40;;;;;;;27998:9;;;;;3651:42;27998:58;;28070:63;;;;;5532:10;28070:63;;805:57977;;;;;;;;;;;;;;;;;5532:10;;;805:57977;28147:123;;5532:10;;;;;;;28206;805:57977;5532:10;;;;;805:57977;5532:10;;;;;;805:57977;5532:10;;;;;;805:57977;5532:10;;;;;;28147:123;;;;;;;:::i;:::-;805:57977;;;27884:396;;;;;;;6169:54;27884:396;;805:57977;27884:396;;;805:57977;;;;5532:10;;;805:57977;5532:10;;;805:57977;;5532:10;;;805:57977;;5532:10;;;;;;;;;:::i;:::-;27884:396;805:57977;;27884:396;;;;;;;-1:-1:-1;;;27884:396:27;;;28070:63;28295:11;;28291:124;;28070:63;25938:2483;;;;:::o;28291:124::-;28334:33;;28336:30;;;;28334:33;:::i;:::-;28326:51;28322:82;;28291:124;;;;;;28322:82;28386:18;-1:-1:-1;28386:18:27;27884:396;-1:-1:-1;28386:18:27;27884:396;;;;805:57977;27884:396;;805:57977;27884:396;;;;;;805:57977;27884:396;;;:::i;:::-;;;5532:10;;;;805:57977;5532:10;;;;;27884:396;;;;;;;-1:-1:-1;27884:396:27;;28070:63;;5701:49;28070:63;;;27998:58;28034:22;3651:42;;28034:22;:::i;:::-;27998:58;;;27920:40;27955:4;27920:40;;;27631:115;27718:28;;;;;27791:48;27718:28;;:::i;:::-;27701:45;;;27631:115;;;27556:37;3781:42;805:57977;;27556:37;;27467:35;3781:42;805:57977;;27467:35;;27406:51;3651:42;;;;;;;;27430:9;:26;3651:42;;27406:51;;;;;;;;27306:48;27344:10;-1:-1:-1;27344:10:27;;-1:-1:-1;27344:10:27;27091:204;27327:8;;27135:160;;27193:15;;;;:58;-1:-1:-1;;;;;805:57977:27;;;27135:160;;:::i;:::-;27091:204;;27193:58;805:57977;;27224:27;-1:-1:-1;;;;;805:57977:27;;;27224:27;:::i;:::-;805:57977;27193:58;;26773:239;26895:61;;-1:-1:-1;26833:168:27;;26895:16;;;;:61;-1:-1:-1;;;;;805:57977:27;;;26833:168;;:::i;:::-;26773:239;;;;;26895:61;805:57977;;26928:28;-1:-1:-1;;;;;805:57977:27;;;26928:28;:::i;:::-;805:57977;26895:61;;26670:68;805:57977;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;;;;;26670:68;;;26490:170;-1:-1:-1;;;;;26635:24:27;;26613:47;26635:24;;;:::i;26613:47::-;26582:78;805:57977;;;26490:170;;26415:65;805:57977;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;;;;;;;26415:65;;;26241:164;-1:-1:-1;;;;;26381:23:27;;26359:46;26381:23;;;:::i;26359:46::-;26330:75;805:57977;;;26241:164;;14889:394;;15105:22;14889:394;15105:22;:::i;:::-;805:57977;;;;;;;;15167:15;;;;;;;;:::i;:::-;15141:48;;;;15137:66;;805:57977;;;15260:15;805:57977;;15220:26;15260:15;;:::i;:::-;805:57977;;;:::i;:::-;;;;;;15250:26;15220:56;14889:394;:::o;15137:66::-;15191:12;;;;805:57977;15191:12;:::o;8254:2536::-;805:57977;8575:21;8762:25;805:57977;;8648:28;;805:57977;;;;:::i;8762:25::-;8814:23;;;;:::i;:::-;805:57977;8851:16;;:40;;;;8254:2536;8851:59;;;;8254:2536;8851:80;;;;8254:2536;8847:1937;;;9011:24;;;;;;:::i;:::-;805:57977;;;;9098:34;;805:57977;;11250:2;11234:18;11250:2;;11263:17;;;:::i;:::-;11230:123;;-1:-1:-1;;;;;805:57977:27;;11367:20;11363:59;;11230:123;805:57977;;11529:73;805:57977;11479:30;3651:42;-1:-1:-1;;;;;805:57977:27;;11445:13;11479:30;;:::i;:::-;-1:-1:-1;11545:48:27;;-1:-1:-1;11545:13:27;;;;:48;11529:73;:::i;:::-;11617:6;;;11613:70;;11545:48;11758:20;;;;;;;11780:19;;;;;-1:-1:-1;;;;;805:57977:27;;11723:88;;;;;;805:57977;11723:88;;;805:57977;;;;;;;;;;11723:88;805:57977;;;;;;;:::i;:::-;11723:88;-1:-1:-1;;11723:88:27;;;;;;:::i;:::-;9049:83;;;;8847:1937;8254:2536::o;11780:19::-;805:57977;11780:19;;11758:20;;;;;11613:70;805:57977;;;;11636:47;;;;;-1:-1:-1;;;;;805:57977:27;;11636:47;;;805:57977;;;;;;;11636:47;;;;;;:::i;:::-;11613:70;;;11363:59;11529:73;805:57977;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;11363:59;;;;11230:123;11338:14;;11316:37;11338:14;;;:::i;11316:37::-;11295:58;;11230:123;;;8847:1937;9166:16;;;;;805:57977;9166:16;;:36;;;;8847:1937;9166:60;;;;8847:1937;9166:81;;;;8847:1937;9149:1635;;;9487:24;;;9619:65;9487:24;;:::i;:::-;9619:65;;;;;:::i;:::-;9556:128;;;;;;;805:57977;5532:10;805:57977;;5532:10;805:57977;5532:10;;9709:27;;;5532:10;9709:27;;;;;;;:::i;:::-;9149:1635;8254:2536::o;9149:1635::-;805:57977;9757:16;;;;;;;:38;;;;9149:1635;9757:60;;;;9149:1635;9753:1031;;;10031:24;;;;:::i;:::-;10133:48;;;;805:57977;10133:48;;;12210:16;805:57977;;12256:2;805:57977;;12240:18;12236:123;12256:2;;;12269:17;;;:::i;:::-;12236:123;;-1:-1:-1;;;;;805:57977:27;;12373:20;12369:59;;12236:123;12449:30;12499:73;12449:30;12647:13;12449:30;;12599:22;12449:30;;:::i;:::-;-1:-1:-1;12515:48:27;;-1:-1:-1;12515:13:27;;;;:48;12499:73;:::i;:::-;12599:22;;:::i;:::-;12647:13;;:::i;:::-;805:57977;12699:17;;:39;;;;12515:48;12695:595;;;805:57977;12774:9;805:57977;12695:595;13314:15;805:57977;10069:112;;;9753:1031;805:57977::o;12695:595::-;805:57977;12808:14;;:33;;;;12695:595;12804:486;;;805:57977;12877:6;805:57977;12695:595;;12804:486;805:57977;12908:15;;:35;;;;12804:486;12904:386;;;805:57977;12979:7;805:57977;12695:595;;12904:386;805:57977;13011:16;;:37;;;;12904:386;13007:283;;;805:57977;13084:7;805:57977;12695:595;;13007:283;805:57977;13116:15;;:35;;;;;13007:283;-1:-1:-1;13112:178:27;;;13187:8;805:57977;12695:595;;13116:35;805:57977;13135:16;;;13116:35;;;13011:37;13031:17;805:57977;13031:17;;13011:37;;12908:35;12927:16;805:57977;12927:16;;12908:35;;12808:33;12826:15;805:57977;12826:15;;12808:33;;12699:39;12720:18;805:57977;12720:18;;12699:39;;12369:59;12449:30;805:57977;;12599:22;805:57977;12647:13;805:57977;-1:-1:-1;;;;;805:57977:27;;12499:73;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;12369:59;;;;;;;;12236:123;12344:14;;12322:37;12344:14;;;:::i;12322:37::-;12301:58;;12236:123;;;9753:1031;10202:17;;;;805:57977;10202:17;805:57977;;10579:62;10447:24;5532:10;10447:24;;:::i;10579:62::-;805:57977;;5532:10;;;;;10666:27;;;5532:10;10666:27;;;10516:125;;;;;;;;;10666:27;;805:57977;10666:27;:::i;9757:60::-;9799:18;805:57977;9799:18;;9757:60;;:38;9777:18;805:57977;9777:18;;9757:38;;9166:81;9230:17;805:57977;9230:17;;9166:81;;:60;9206:20;805:57977;9206:20;;9166:60;;:36;9186:16;805:57977;9186:16;;9166:36;;8851:80;8914:17;805:57977;8914:17;;8851:80;;:59;8895:15;805:57977;8895:15;;8851:59;;:40;8871:20;805:57977;8871:20;;8851:40;;40671:722;805:57977;;;;40671:722;805:57977;;40906:2;40884:24;;40906:2;;40935:23;;;;:::i;40880:507::-;41013:30;805:57977;;;41013:30;805:57977;;;;;;;;;;;;;41013:30;;;805:57977;;;;;;;;41013:30;;;;;;;;;;:::i;:::-;805:57977;;;;41910:19;805:57977;;;41963:538;41970:6;;;42837:114;;;41013:30;42837:114;;;;;;805:57977;;42537:54;41013:30;42537:54;;805:57977;;;;;;;;42537:54;;;;;;:::i;:::-;805:57977;42527:65;;805:57977;;;41067:24;6169:54;41067:24;;;805:57977;41067:24;;805:57977;41013:30;41067:24;;;5865:42;41067:24;;;;;;;805:57977;41067:24;;;41963:538;41059:32;6023:42;-1:-1:-1;;;;;41059:32:27;805:57977;41109:32;41105:80;;41963:538;805:57977;;41221:27;6169:54;41221:27;;;805:57977;41221:27;;805:57977;41013:30;41221:27;41067:24;41221:27;5865:42;41221:27;;;;;;;-1:-1:-1;;;;;41221:27:27;41013:30;41221:27;805:57977;41221:27;;;41963:538;805:57977;41067:24;805:57977;;41210:50;;;;6169:54;41210:50;;;805:57977;41210:50;;805:57977;;41210:50;;;;;;;805:57977;41210:50;;;41963:538;41199:61;-1:-1:-1;;;;;41199:61:27;805:57977;41299:22;41295:52;;40671:722::o;41295:52::-;41330:17;805:57977;41330:17;805:57977;;41330:17;41210:50;;;;;41013:30;41210:50;41013:30;41210:50;;;;;;;:::i;:::-;;;;;41221:27;;;;;;;;;;;;;;:::i;:::-;;;;41105:80;805:57977;;;;6169:54;41151:34;;;805:57977;41151:34;;805:57977;41013:30;41151:34;41067:24;41151:34;6023:42;41151:34;;;;;;;805:57977;41151:34;;;41105:80;41143:42;41105:80;;;41151:34;;;;41013:30;41151:34;41013:30;41151:34;;;;;;;:::i;:::-;;;;41067:24;;;;;41013:30;41067:24;41013:30;41067:24;;;;;;;:::i;:::-;;;;;41978:3;805:57977;-1:-1:-1;;805:57977:27;;42012:20;;;;;:::i;:::-;805:57977;;;;;42054:8;;42050:194;;5532:10;-1:-1:-1;3651:42:27;;;805:57977;;5532:10;805:57977;;;;;;;;;;5532:10;805:57977;;;;;;;;;;;;;;42351:34;;3651:42;;-1:-1:-1;;42408:12:27;42030:1;42408:12;;42404:83;;41978:3;;;41963:538;805:57977;41963:538;;;;42404:83;42444:24;;;;:::i;:::-;;42404:83;;;;42050:194;42837:114;;;;;-1:-1:-1;;42837:114:27;;;41013:30;42837:114;;;;;805:57977;;42103:54;41013:30;42103:54;;805:57977;;;;;;;;42103:54;;;;;;:::i;:::-;805:57977;42093:65;;42180:15;42217:8;;;34840:420;;;34882:261;;;;;;;;;805:57977;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;36332:119;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;35616:18;805:57977;35644:19;805:57977;;35703:2;805:57977;;35678:27;35674:158;35703:2;;;-1:-1:-1;;;;;35719:26:27;;;:::i;:::-;805:57977;;;35674:158;-1:-1:-1;;;;;805:57977:27;;;35846:23;35842:67;;35674:158;-1:-1:-1;805:57977:27;;35703:2;35923:28;35703:2;;35966:27;-1:-1:-1;;;;;35966:27:27;36194:114;35966:27;;;:::i;:::-;805:57977;;;35919:164;-1:-1:-1;;;;;805:57977:27;;;36097:24;36093:77;;35919:164;-1:-1:-1;;36232:15:27;;;;-1:-1:-1;;;;;805:57977:27;;;36194:114;;:::i;:::-;805:57977;;36371:16;;;;:58;-1:-1:-1;;;;;805:57977:27;;;36332:119;;:::i;:::-;805:57977;;3651:42;-1:-1:-1;;;;;805:57977:27;;;36466:16;36462:54;;36371:58;-1:-1:-1;;;;;36560:10:27;805:57977;36560:10;;;;;;;805:57977;;;;36619:27;36615:119;36619:15;;;36560:10;;;36615:119;805:57977;;;;36801:15;805:57977;;;;36867:7;36801:15;805:57977;;;;;;;;;;36913:13;;805:57977;36913:13;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36913:13;;;;;;:::i;:::-;805:57977;36903:24;;805:57977;;;;36889:6;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3651:42;36889:6;805:57977;;;3651:42;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;805:57977:27;;;;;;;;;;35163:91;;34882:261;35163:91;34840:420::o;36615:119::-;36706:28;;;;:::i;:::-;36689:45;;;36615:119;;36462:54;3651:42;;;;;36492:9;:23;3651:42;;36462:54;;;;;;36371:58;805:57977;;36404:25;-1:-1:-1;;;;;805:57977:27;;;36404:25;:::i;:::-;805:57977;36371:58;;36093:77;805:57977;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;36093:77;;;;35919:164;36194:114;36058:24;;;36036:47;36058:24;-1:-1:-1;;;;;36058:24:27;;:::i;36036:47::-;36008:75;805:57977;;;35919:164;;35842:67;805:57977;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;35842:67;;;35674:158;-1:-1:-1;;;;;35808:23:27;;35786:46;35808:23;;;:::i;35786:46::-;35760:72;805:57977;;;35674:158;;805:57977;;;;;;;;;;;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;:::o;38496:1532::-;;805:57977;38724:2;805:57977;;;38702:46;;38724:2;-1:-1:-1;;;;;38702:46:27;;38722:1;805:57977;;38702:46;:::i;:::-;805:57977;;38767:10;;38763:315;;805:57977;;39133:3;805:57977;;;;;;39129:3;805:57977;;;;39113:53;39142:24;39113:53;;;;;:129;;;;38496:1532;39092:189;;;805:57977;;39726:271;39421:34;39726:271;39421:34;805:57977;39421:34;;;;:::i;:::-;39379:76;;;;;;805:57977;;39473:24;39469:51;;38496:1532;39538:13;39534:51;;38496:1532;805:57977;;;;;39957:22;-1:-1:-1;;;;;39817:36:27;39634:46;805:57977;;;39133:3;805:57977;;39634:46;;805:57977;;39634:46;:::i;:::-;39764:31;;;;;;805:57977;;;;;;:::i;:::-;;;;;;;;;39764:31;39817:36;:::i;:::-;805:57977;;39957:22;:::i;:::-;805:57977;;;;;;;;;;;;39726:271;;;805:57977;;;;;;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;39726:271;;-1:-1:-1;;39726:271:27;;;;;;:::i;39764:31::-;805:57977;;;;;;:::i;:::-;;;;;;;;;39764:31;39817:36;:::i;39534:51::-;39564:21;;;;;;;;;-1:-1:-1;;;;;39817:36:27;39634:46;805:57977;39564:21;;39133:3;805:57977;39564:21;39957:22;39564:21;;:::i;:::-;805:57977;39534:51;;;;;;;;;;;;;;;;39469;805:57977;;;-1:-1:-1;805:57977:27;39507:5;805:57977;;;;-1:-1:-1;805:57977:27;;:::i;:::-;39469:51;;;39092:189;39264:17;-1:-1:-1;39264:17:27;38722:1;-1:-1:-1;39264:17:27;39113:129;805:57977;;;39219:23;-1:-1:-1;39190:52:27;;;39113:129;;;38763:315;38832:213;38907:30;;805:57977;38907:30;;;805:57977;38832:213;39001:22;38907:30;;;;:::i;:::-;39001:22;;:::i;:::-;805:57977;;38832:213;;;805:57977;38832:213;;;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;38832:213;;-1:-1:-1;;38832:213:27;;;;;;:::i;8987:1026:20:-;;9132:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:1026;9132:875;;;;;;;8987:1026::o;9132:875::-;;;;;;;;;;;;;;;;;;;;3909:342;4024:221;3909:342;;;4024:221;;;;;;;3909:342::o;4024:221::-;;;;;;;4713:42:27;;;;;;;-1:-1:-1;;;;;4713:42:27;;;;;;805:57977;;;;4713:42;;;805:57977;;4713:42;;;805:57977;4713:42;;;;805:57977;4713:42;;;805:57977;4713:42;;;;;;;;;;:::i;:::-;;;805:57977;4713:42::o;:::-;;;;;;-1:-1:-1;;;;;4713:42:27;;;;;805:57977;;;;4713:42;;;805:57977;;4713:42;;;805:57977;4713:42;;;;805:57977;4713:42;;;805:57977;4713:42;;;;;;;;;;:::i;22382:3468::-;;;;;805:57977;22627:14;805:57977;;22704:2;805:57977;;22681:25;22677:137;22704:2;;;22717:24;;;:::i;:::-;22677:137;;-1:-1:-1;;;;;805:57977:27;;22828:20;22824:59;;22677:137;22912:30;;;:::i;:::-;-1:-1:-1;22986:48:27;;-1:-1:-1;22986:13:27;;;;;22970:73;22986:48;;22970:73;;:::i;:::-;23070:22;;;;:::i;:::-;23118:13;;;:::i;:::-;805:57977;23146:17;;:39;;;;22986:48;23142:547;;;805:57977;23217:9;805:57977;;;;;;23217:9;805:57977;;;;;;;23142:547;;-1:-1:-1;;;;;805:57977:27;;3651:42;23703:13;3651:42;;23768:9;;;:20;3651:42;;23908:25;;;;;;;;;;;;;;23955;;;;23964:10;;23955:25;;805:57977;;24090:550;;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;;;;24090:550;805:57977;24090:550;-1:-1:-1;;24090:550:27;;;;;;;;:::i;:::-;805:57977;;23814:911;;;;;6169:54;23814:911;;24684:15;805:57977;23814:911;4713:42;23814:911;;;;;;:::i;:::-;;;;;4843:42;24090:550;23814:911;;;;;;;;;;23807:918;;:::o;23814:911::-;;;24090:550;23814:911;;24090:550;23814:911;;;;;;6169:54;23814:911;;;:::i;:::-;;;6169:54;;;;;23807:918;:::o;23814:911::-;;;-1:-1:-1;23814:911:27;;;805:57977;;6169:54;;;;;;;;23955:25;;;;23908;23923:10;23908:25;;;3651:42;;;;23699:2145;24814:4;;;;;;24821:7;24814:4;;;;;;;24794:10;24821:7;;:::i;:::-;4843:42;15943:691:20;;;;;;805:57977:27;15943:691:20;;805:57977:27;15943:691:20;;;;;;;;805:57977:27;15943:691:20;;;;;;23699:2145:27;15943:691:20;805:57977:27;15943:691:20;;805:57977:27;;25184:550;;;15943:691:20;25184:550:27;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;15943:691:20;805:57977:27;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;15943:691:20;805:57977:27;;;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;15943:691:20;805:57977:27;;;;;25184:550;15943:691:20;25184:550:27;-1:-1:-1;;25184:550:27;;;;;;;;:::i;:::-;805:57977;;24928:891;;;;;;;6169:54;24928:891;;25778:15;805:57977;24794:10;;4713:42;24928:891;;;;;;:::i;:::-;;;;805:57977;4843:42;15943:691:20;24928:891:27;;;;;;;805:57977;24928:891;;;24921:898;;:::o;15943:691:20:-;;;;;;;;;;;;;;;805:57977:27;15943:691:20;;;;23142:547:27;805:57977;23247:14;;:33;;;;23142:547;23243:446;;;805:57977;23312:6;805:57977;;;;;;23312:6;805:57977;;;;;;;23243:446;23142:547;;23243:446;805:57977;23339:15;;:35;;;;23243:446;23335:354;;;805:57977;23406:7;805:57977;;;;;;23406:7;805:57977;;;;;;;23335:354;23142:547;;23335:354;805:57977;23434:16;;:37;;;;23335:354;23430:259;;;805:57977;23503:7;805:57977;;;;;;23503:7;805:57977;;;;;;;23430:259;23142:547;;23430:259;805:57977;23531:15;;:35;;;;;23430:259;-1:-1:-1;23527:162:27;;;23598:8;805:57977;;;;;;23598:8;805:57977;;;;;;;23527:162;23142:547;;23531:35;805:57977;23550:16;;;23531:35;;;23434:37;23454:17;805:57977;23454:17;;23434:37;;23339:35;23358:16;805:57977;23358:16;;23339:35;;23247:33;23265:15;805:57977;23265:15;;23247:33;;23146:39;23167:18;805:57977;23167:18;;23146:39;;22986:48;22970:73;23013:21;;805:57977;23013:21;;;:::i;:::-;805:57977;22986:48;;22824:59;805:57977;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;22824:59;;;22677:137;22799:14;;22777:37;22799:14;;;:::i;22777:37::-;22756:58;;22677:137;;;22382:3468;;;805:57977;;22704:2;805:57977;;22681:25;22677:137;22704:2;;;22717:24;;;:::i;:::-;22677:137;;-1:-1:-1;;;;;805:57977:27;;22828:20;22824:59;;22677:137;22912:30;;;:::i;:::-;-1:-1:-1;22986:48:27;;-1:-1:-1;22986:13:27;;;;;22970:73;22986:48;;22970:73;;:::i;:::-;23070:22;;;;:::i;:::-;23118:13;;;:::i;:::-;805:57977;23146:17;;:39;;;;22986:48;23142:547;;;805:57977;23217:9;805:57977;;;;;;23217:9;805:57977;;;;;;;23142:547;;-1:-1:-1;;;;;805:57977:27;;3651:42;23703:13;3651:42;;23768:9;;;:20;3651:42;;805:57977;;24090:550;;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;21866:4;805:57977;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;21866:4;805:57977;;;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;24090:550;805:57977;;;;;;;;;;21866:4;805:57977;;;;;24090:550;21866:4;24090:550;-1:-1:-1;;24090:550:27;;;;;;;;:::i;:::-;805:57977;;23814:911;;;;;6169:54;23814:911;;24684:15;805:57977;23964:10;;;4713:42;23814:911;;;;;;:::i;:::-;;;;;4843:42;24090:550;23814:911;;;;;;;805:57977;23814:911;;;23807:918;;:::o;23699:2145::-;24814:4;;;;24821:7;24814:4;;;;24794:10;24821:7;;:::i;:::-;4843:42;15943:691:20;;;;;;805:57977:27;15943:691:20;;805:57977:27;15943:691:20;;;;;;;21866:4:27;805:57977;15943:691:20;;;;;;23699:2145:27;15943:691:20;805:57977:27;15943:691:20;;805:57977:27;;25184:550;;;15943:691:20;25184:550:27;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;21866:4;805:57977;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;21866:4;805:57977;;;;-1:-1:-1;;;805:57977:27;;;;;4713:42;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;;;;-1:-1:-1;;;805:57977:27;;;;15943:691:20;805:57977:27;;;;;;;;;;21866:4;805:57977;;;;;25184:550;21866:4;25184:550;-1:-1:-1;;25184:550:27;;;;;;;;:::i;:::-;805:57977;;24928:891;;;;;;;6169:54;24928:891;;25778:15;805:57977;24794:10;;24928:891;4713:42;24928:891;;;;;;:::i;15943:691:20:-;;;;;;;;;;;;;23142:547:27;805:57977;23247:14;;:33;;;;23142:547;23243:446;;;805:57977;23312:6;805:57977;;;;;;23312:6;805:57977;;;;;;;23243:446;23142:547;;23243:446;805:57977;23339:15;;:35;;;;23243:446;23335:354;;;805:57977;23406:7;805:57977;;;;;;23406:7;805:57977;;;;;;;23335:354;23142:547;;23335:354;805:57977;23434:16;;:37;;;;23335:354;23430:259;;;805:57977;23503:7;805:57977;;;;;;23503:7;805:57977;;;;;;;23430:259;23142:547;;23430:259;805:57977;23531:15;;:35;;;;;23430:259;-1:-1:-1;23527:162:27;;;23598:8;805:57977;;;;;;23598:8;805:57977;;;;;;;23527:162;23142:547;;23531:35;805:57977;23550:16;;;23531:35;;;23434:37;23454:17;805:57977;23454:17;;23434:37;;23339:35;23358:16;805:57977;23358:16;;23339:35;;23247:33;23265:15;805:57977;23265:15;;23247:33;;23146:39;23167:18;805:57977;23167:18;;23146:39;;22986:48;22970:73;23013:21;;805:57977;23013:21;;;:::i;:::-;805:57977;22986:48;;22824:59;805:57977;;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;22824:59;;;22677:137;22799:14;;22777:37;22799:14;;;:::i;22777:37::-;22756:58;;22677:137;;;44107:884;;44211:774;;;;;;;-1:-1:-1;;44211:774:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44107:884::o;15387:656::-;805:57977;15512:17;805:57977;15549:14;805:57977;15549:14;;:34;;;;15387:656;15545:56;;805:57977;15615:15;;15611:37;;4039:42;15662:15;;:36;;;;15387:656;15658:58;;4169:42;15730:14;;15726:36;;4301:42;15776:15;;15772:38;;4301:42;15824:15;;:33;;;;15387:656;15824:55;;;;15387:656;15820:77;;3909:42;15911:16;;:37;;;;15387:656;15911:56;;;;15387:656;15907:81;;4441:42;16002:15;15998:38;;15387:656::o;15998:38::-;4578:42;;-1:-1:-1;16033:2:27;;-1:-1:-1;16019:17:27:o;15907:81::-;-1:-1:-1;4441:42:27;;-1:-1:-1;15985:2:27;;-1:-1:-1;15969:19:27:o;15911:56::-;15952:15;3909:42;15952:15;;15911:56;;:37;15931:17;3909:42;15931:17;;15911:37;;15820:77;-1:-1:-1;3909:42:27;;-1:-1:-1;15895:1:27;;-1:-1:-1;15881:16:27:o;15824:55::-;15861:18;4301:42;15861:18;;15824:55;;:33;15843:14;4301:42;15843:14;;15824:33;;15772:38;-1:-1:-1;3781:42:27;;-1:-1:-1;15807:2:27;;-1:-1:-1;15793:17:27:o;15726:36::-;-1:-1:-1;4301:42:27;;-1:-1:-1;15759:2:27;;-1:-1:-1;15746:16:27:o;15658:58::-;-1:-1:-1;4169:42:27;;-1:-1:-1;15714:1:27;;-1:-1:-1;15700:16:27:o;15662:36::-;15681:17;4039:42;15681:17;;15662:36;;15611:37;-1:-1:-1;4039:42:27;;-1:-1:-1;15646:1:27;;-1:-1:-1;15632:16:27:o;15545:56::-;-1:-1:-1;3651:42:27;;-1:-1:-1;15598:2:27;;-1:-1:-1;15585:16:27:o;15549:34::-;15567:16;805:57977;15567:16;;15549:34;;805:57977;;;;;;;;;;;;;:::o;54873:720::-;55004:2;805:57977;;54992:14;54988:42;;805:57977;55089:1;55072:460;55092:7;55004:2;55092:7;;;;805:57977;-1:-1:-1;;;;;805:57977:27;;;54873:720;:::o;55101:3::-;805:57977;;;55170:4;;;;:::i;:::-;805:57977;;;55197:7;55202:2;55197:7;;;:18;;;55101:3;55193:325;;;805:57977;;;;;;;55193:325;;805:57977;55077:13;;;;55193:325;55289:2;55284:7;;;:18;;;55193:325;55280:238;;;805:57977;;;;;;;55280:238;55193:325;;55280:238;55376:2;55371:7;;;:19;;;55280:238;55367:151;;;805:57977;;;;;;;55367:151;55193:325;;55371:19;55382:8;55387:3;55382:8;;;55371:19;;55284:18;55295:7;55300:2;55295:7;;;55284:18;;55197;55208:7;55213:2;55208:7;;;55197:18;;5094:152:19;9302:399;5094:152;805:57977:27;5094:152:19;5204:10;9890:208;;;-1:-1:-1;9890:208:19;9302:399;-1:-1:-1;9302:399:19;;761:6;9302:399;;;;;;;;805:57977:27;5094:152:19;:::o;805:57977:27:-;;;;;;;:::o;:::-;;;;;;;;;;53055:1736;;;805:57977;53305:10;;;:::i;:::-;805:57977;53333:26;;:57;;;;;53055:1736;53329:180;;;805:57977;;53559:15;805:57977;53588:21;805:57977;53623:17;805:57977;53660:9;805:57977;53671:7;;;;;;53655:601;54310:11;;;;;54306:185;54310:11;;;805:57977;;54351:2;805:57977;;54306:185;;54539:236;;53055:1736;;:::o;54539:236::-;54613:77;;54717:43;;-1:-1:-1;;;;;805:57977:27;;3651:42;54613:12;3651:42;;54628:10;;:18;54649:9;805:57977;54613:77;;54745:2;805:57977;54739:3;805:57977;;;54717:43;:::i;54613:77::-;54661:29;54679:10;;54661:29;;:::i;:::-;54613:77;;;54306:185;54390:24;;;;;;54386:105;;54306:185;;;;54386:105;805:57977;;54444:2;805:57977;;;;;54386:105;;;53680:3;53714:4;;;;:::i;:::-;805:57977;;;;5532:10;53740:9;;;:22;;;53680:3;53736:506;;;805:57977;;;53804:2;805:57977;;5532:10;805:57977;;;;;;;;53844:102;;;53736:506;805:57977;53736:506;;805:57977;53660:9;;;;;53844:102;805:57977;;;53890:26;;;;53886:37;53844:102;53886:37;53918:5;;;;;53736:506;53974:9;;5532:10;53974:9;;;;;;:24;;;53736:506;53970:272;;;54022:17;;805:57977;54022:17;53970:272;53736:506;;53970:272;5532:10;54068:9;;;;;;:25;;;53970:272;54064:178;;;54117:19;;805:57977;54117:19;54064:178;53736:506;;54064:178;54165:9;;;;;54161:81;;805:57977;54064:178;53736:506;;54161:81;54205:18;805:57977;54205:18;;805:57977;54205:18;54068:25;805:57977;-1:-1:-1;;805:57977:27;;54081:12;;54068:25;;53974:24;53987:11;;;53974:24;;53740:22;53753:9;5532:10;53753:9;;;53740:22;;53329:180;-1:-1:-1;53417:77:27;;-1:-1:-1;;;;;;;805:57977:27;;3651:42;53417:12;3651:42;;53432:10;;:18;53453:9;805:57977;53410:84;:::o;53417:77::-;53465:29;53483:10;;53465:29;;:::i;53333:57::-;805:57977;53363:27;;;53333:57;;;45055:799;45200:648;;;;;;;;;;;;;;;-1:-1:-1;;45200:648:27;;;;;;;45055:799;:::o;45200:648::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;45200:648:27;;805:57977;;;50419:1;805:57977;;;;;;;:::o;:::-;;;50473:1;805:57977;;;;;;;:::o;:::-;;;50527:1;805:57977;;;;;;;:::o;:::-;;;48444:1;805:57977;;;;;;;:::o;:::-;;;49502:1;805:57977;;;;;;;:::o;:::-;;;50068:1;805:57977;;;;;;;:::o;:::-;;;49178:1;805:57977;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;48016:2722::-;48362:29;;;:::i;:::-;805:57977;;48444:1;48428:17;;48444:1;;48509:8;;48472:47;48482:36;48509:8;;;:::i;:::-;;48482:36;;:::i;:::-;48472:47;:::i;:::-;48509:8;;;48748:36;48608;48635:8;;;:::i;48608:36::-;48717:8;48775;48690:36;48717:8;;;:::i;48690:36::-;48775:8;;:::i;:::-;;48748:36;;:::i;:::-;48565:261;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;48565:261;;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;48565:261;:::o;48533:609::-;48960:8;49049:36;48933;48960:8;;;:::i;:::-;;48933:36;;:::i;:::-;49018:8;49076;48991:36;49018:8;;;:::i;49049:36::-;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;48865:262;;;805:57977;;;;;;;:::i;48424:2308::-;49178:1;49162:17;;49178:1;;49260:8;;;49233:36;49260:8;;;:::i;:::-;;49233:36;;:::i;:::-;49314:8;49395:36;49287;49314:8;;;:::i;:::-;;49287:36;;:::i;:::-;49368:8;49422;49341:36;49368:8;;;:::i;49341:36::-;49422:8;;:::i;49395:36::-;49195:270;;;;805:57977;;;;;;;:::i;49158:1574::-;49502:1;49486:17;;49502:1;;49567:8;49530:47;49540:36;49567:8;;;:::i;49530:47::-;49567:8;;;49671:36;49698:8;;;:::i;49671:36::-;49869;49753;49780:8;;;:::i;49753:36::-;49838:8;49896;49811:36;49838:8;;;:::i;49811:36::-;49896:8;;:::i;49869:36::-;49623:300;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;49623:300;;;;:::o;49591:687::-;50035:36;50062:8;;;:::i;50035:36::-;50120:8;50209:36;50093;50120:8;;;:::i;50209:36::-;805:57977;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;49962:301;;;;;:::o;49482:1250::-;50314:1;50298:17;50314:1;;50386:36;50413:8;;;:::i;50386:36::-;50440;50467:8;;;:::i;50440:36::-;50521:8;50602:36;50494;50521:8;;;:::i;50494:36::-;50575:8;50629;50548:36;50575:8;;;:::i;50548:36::-;50629:8;;:::i;50602:36::-;50361:291;;;;;;:::o;46808:1138::-;47132:29;;;:::i;:::-;47191:1;805:57977;;47175:17;47171:339;;805:57977;;47539:1;47523:17;47539:1;;47581:36;47608:8;;;:::i;47581:36::-;47635;47662:8;;;:::i;47635:36::-;47716:8;47797:36;47689;47716:8;;;:::i;47689:36::-;47770:8;47824;47743:36;47770:8;;;:::i;47171:339::-;47233:36;47260:8;;;:::i;47233:36::-;47287;47314:8;;;:::i;47287:36::-;47368:8;47449:36;47341;47368:8;;;:::i;47341:36::-;47422:8;47476;47395:36;47422:8;;;:::i;47395:36::-;47476:8;;:::i;45924:814::-;805:57977;;51285:17;51301:1;51363:9;-1:-1:-1;51374:8:27;;;;;;805:57977;-1:-1:-1;;805:57977:27;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;805:57977:27;;;;;;51508:31;;-1:-1:-1;51584:13:27;-1:-1:-1;51674:9:27;-1:-1:-1;51685:8:27;;;;;;805:57977;;51923:41;805:57977;;;;;;;;:::i;:::-;;;;51942:22;;805:57977;51923:41;;;;:::i;:::-;;;;:::i;:::-;;46199:1;805:57977;;46183:17;46179:231;;805:57977;;46439:1;46423:17;46439:1;;46589:36;46481;46508:8;;;:::i;46481:36::-;46562:8;46616;46535:36;46562:8;;;:::i;46535:36::-;46616:8;;:::i;46589:36::-;46456:183;;;;:::o;46179:231::-;46349:36;46241;46268:8;;;:::i;46241:36::-;46322:8;46376;46295:36;46322:8;;;:::i;46295:36::-;46376:8;;:::i;51695:3::-;-1:-1:-1;;;805:57977:27;51722:7;;;;:::i;:::-;805:57977;;51722:20;51718:143;;51695:3;51301:1;805:57977;51674:9;;51718:143;805:57977;;51766:41;805:57977;;;;;;;:::i;:::-;;;51787:20;805:57977;51787:20;;805:57977;51301:1;51772:11;805:57977;51766:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;51301:1:27;805:57977;;;51718:143;;805:57977;;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;51384:3;-1:-1:-1;;;805:57977:27;51411:7;;;;:::i;:::-;805:57977;;51411:20;51407:74;;51384:3;51301:1;805:57977;51363:9;;51407:74;51301:1;805:57977;;;;51407:74;;30075:1849;;805:57977;-1:-1:-1;;;;;805:57977:27;;-1:-1:-1;;;;;805:57977:27;;30248:15;30244:88;805:57977;;;30265:17;30278:4;30244:88;;30349:36;;;;:::i;:::-;805:57977;-1:-1:-1;;;;;805:57977:27;;30399:18;30395:1523;;30075:1849;;:::o;30395:1523::-;805:57977;;;-1:-1:-1;;;;;805:57977:27;;;;30440:5;805:57977;;;;;-1:-1:-1;;;;;805:57977:27;;-1:-1:-1;805:57977:27;;;-1:-1:-1;;;;;805:57977:27;-1:-1:-1;805:57977:27;;;30479:18;;;30475:1433;;30075:1849;;:::o;30475:1433::-;-1:-1:-1;;;;;30535:37:27;;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;32778:222;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;32778:222;32216:325;805:57977;32216:325;;805:57977;32216:325;;805:57977;32778:222;;;;;805:57977;32778:222;;;805:57977;;32778:222;;;;32216:325;805:57977;32216:325;;;;;;;;;;805:57977;32216:325;;805:57977;32216:325;;805:57977;;;;;:::i;:::-;;;;;;;;;30940:19;;;30936:157;;30475:1433;31114:19;;;31110:228;;30475:1433;31359:20;;;31355:231;;30475:1433;31607:21;;;31603:234;;30475:1433;805:57977;;;;30475:1433;30075:1849::o;31603:234::-;31663:29;;;;:::i;:::-;805:57977;31724:11;;3651:42;31718:17;;31714:105;31603:234;31714:105;805:57977;;;;;;;;;;:::i;:::-;;;;;31773:23;;805:57977;31714:105;;31603:234;;31355:231;31414:28;;;;:::i;:::-;805:57977;31474:11;;3651:42;31468:17;;31464:104;;31355:231;;;;31464:104;805:57977;;;;;;;;;;;:::i;:::-;;;;;31523:22;;805:57977;31464:104;;;;;31110:228;31168:27;;;;:::i;:::-;805:57977;31227:11;;3651:42;31221:17;;31217:103;;31110:228;;;;31217:103;805:57977;;;;;;;;;;;:::i;:::-;;;;;31276:21;;805:57977;31217:103;;;;;30936:157;30994:27;;;;;;;:::i;:::-;805:57977;;;;;;;:::i;:::-;;;;;31053:21;;805:57977;30936:157;;;;30244:88;30316:16;30244:88;;;13442:1275;;;;;805:57977;13870:18;805:57977;13898:19;805:57977;;13949:2;805:57977;;13931:20;13927:135;13949:2;;;13964:19;;;:::i;:::-;13927:135;;-1:-1:-1;;;;;805:57977:27;;14076:22;14072:65;;13927:135;-1:-1:-1;805:57977:27;;13949:2;14151:21;13949:2;;14186:20;;;;;;:::i;:::-;14147:141;;-1:-1:-1;;;;;805:57977:27;;14302:23;14298:68;;14147:141;-1:-1:-1;14507:113:27;;14419:54;;;;14401:83;;14419:15;;;;:54;14401:83;:::i;:::-;14542:57;:16;;;;:57;14507:113;:::i;:::-;805:57977;;;14631:79;;13442:1275;:::o;14631:79::-;14674:36;;;;;:::i;:::-;14657:53;;;14631:79;13442:1275::o;14298:68::-;14507:113;805:57977;;;;;-1:-1:-1;;;;;805:57977:27;;14401:83;805:57977;;;;;;;;;;;;;;;;;;;;;;;;;;14298:68;;;;;;;;14147:141;14270:17;;;;14248:40;14270:17;;;:::i;14248:40::-;14221:67;;14147:141;;;14072:65;-1:-1:-1;;;;;805:57977:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14072:65;;;;13927:135;14045:16;14023:39;14045:16;;;:::i;14023:39::-;13998:64;13927:135;;;56537:818;;56883:36;805:57977;56802:36;805:57977;;;56802:36;:::i;:::-;805:57977;;56883:36;:::i;:::-;38934:2;805:57977;;56940:40;;;57024:37;805:57977;57024:37;805:57977;;;57024:37;;;805:57977;57024:37;;;805:57977;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;57024:37;;-1:-1:-1;;57024:37:27;;;;;;:::i;:::-;56933:144;;56940:40;57107:43;56940:40;;;;57107:43;:::i;:::-;805:57977;;57168:33;57164:93;;805:57977;57024:37;805:57977;;;57284:53;805:57977;;;;;;;;;;;;57284:53;;;805:57977;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;57284:53;;-1:-1:-1;;57284:53:27;;;;;;:::i;57164:93::-;57221:21;;:::o;56537:818::-;;;;805:57977;56743:2;805:57977;56812:25;56802:36;56812:25;;;;:::i;:::-;56802:36;:::i;:::-;805:57977;;;;;56883:36;805:57977;;56883:36;:::i;:::-;805:57977;;;56940:40;;;57024:37;805:57977;57024:37;805:57977;;;57024:37;;;805:57977;57024:37;;;805:57977;;;;;;;;;;;;;-1:-1:-1;805:57977:27;;;;57024:37;;-1:-1:-1;;57024:37:27;;;;;;:::i;:::-;56933:144;;56940:40;57107:43;56940:40;;;;57107:43;:::i;805:57977::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;805:57977:27;;;;:::i;:::-;;;;;;;;:::o;55666:531::-;;805:57977;;;;;;:::i;:::-;55808:2;805:57977;;;;;;;;-1:-1:-1;55841:7:27;55846:2;55841:7;;;;-1:-1:-1;56164:16:27;-1:-1:-1;55666:531:27:o;55850:3::-;805:57977;;;55897:43;56122:1;805:57977;;55931:2;805:57977;;;;-1:-1:-1;;;;;805:57977:27;;55897:43;:::i;:::-;805:57977;;5532:10;;;;;;;56112:24;;805:57977;;56127:9;;805:57977;;;;;;56085:9;5532:10;56085:9;:::i;:::-;805:57977;;56074:20;805:57977;;;56074:20;;-1:-1:-1;56074:20:27;;;:::i;:::-;;5532:10;805:57977;;;;;;;;;5532:10;;;56127:9;:::i;:::-;-1:-1:-1;56112:24:27;805:57977;;56112:24;;:::i;:::-;;805:57977;55830:9;;16140:501;805:57977;16276:17;-1:-1:-1;;;;;805:57977:27;;;4039:42;16313:13;;16309:37;;4169:42;16360:13;;16356:37;;4301:42;16407:12;;16403:36;;3781:42;16453:13;;16449:38;;3909:42;16501:13;;16497:37;;4441:42;16548:15;;16544:42;;4578;16600:13;16596:38;;16140:501::o;16596:38::-;805:57977;;;;;;;;;:::i;:::-;;;;;;;;;16615:19;16631:2;16615:19;:::o;16544:42::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16565:21;16583:2;16565:21;:::o;16497:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16516:18;16532:1;16516:18;:::o;16449:38::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16468:19;16484:2;16468:19;:::o;16403:36::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16421:18;16436:2;16421:18;:::o;16356:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16375:18;16391:1;16375:18;:::o;16309:37::-;805:57977;;;;;;;;;;:::i;:::-;;;;;;;;;16328:18;16344:1;16328:18;:::o;52506:483::-;;805:57977;;52681:3;805:57977;;52666:13;;;;52723:2;52714:4;;;;:::i;:::-;805:57977;;;52708:17;;:38;;;52681:3;52704:228;;;805:57977;52800:4;52788:2;805:57977;;52800:4;;;;:::i;:::-;805:57977;;;;;;;;52704:228;805:57977;52655:9;;;52708:38;52735:4;52744:2;52735:4;;;;:::i;:::-;805:57977;;;52729:17;;52708:38;;52666:13;;-1:-1:-1;;52506:483:27:o;34102:440::-;34247:289;;;34102:440;;;;34247:289;;;;;;;;;;34102:440;:::o;805:57977::-;;;;;;;;;;;:::o;51065:916::-;;805:57977;;51285:17;51301:1;51363:9;-1:-1:-1;51374:8:27;;;;;;805:57977;-1:-1:-1;;805:57977:27;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;-1:-1:-1;805:57977:27;;;;;;51508:31;;;-1:-1:-1;51584:13:27;-1:-1:-1;51674:9:27;-1:-1:-1;51685:8:27;;;;;;805:57977;51923:41;805:57977;;;;;;;;;;:::i;:::-;;;;51942:22;;805:57977;51923:41;;;;:::i;:::-;;;:::i;:::-;;51065:916::o;51695:3::-;-1:-1:-1;;;805:57977:27;51722:7;;;;:::i;:::-;805:57977;;51722:20;51718:143;;51695:3;51301:1;805:57977;51674:9;;51718:143;805:57977;;51766:41;805:57977;;;;;;;:::i;:::-;;;51787:20;805:57977;51787:20;;805:57977;51301:1;51772:11;805:57977;51766:41;;;;;:::i;:::-;-1:-1:-1;51301:1:27;805:57977;;;51718:143;;805:57977;;;;;;;;:::i;:::-;-1:-1:-1;805:57977:27;;-1:-1:-1;805:57977:27;;;;;;;;;;;;;51384:3;-1:-1:-1;;;805:57977:27;51411:7;;;;:::i;:::-;805:57977;;51411:20;51407:74;;51384:3;51301:1;805:57977;51363:9;;51407:74;51301:1;805:57977;;;;51407:74;;52048:393;;;52246:32;52256:8;;;3651:42;;;805:57977;;52246:32;:::i;:::-;52297:9;-1:-1:-1;52328:3:27;805:57977;;52308:18;;;;3651:42;805:57977;52363:20;805:57977;3651:42;;;805:57977;52363:20;;:::i;:::-;805:57977;;-1:-1:-1;52351:32:27;;;;;:::i;:::-;;805:57977;52297:9;;52308:18;-1:-1:-1;52308:18:27;;-1:-1:-1;;52048:393:27:o;50825:172::-;805:57977;50911:10;;;:::i;:::-;:19;50907:36;;805:57977;;;;;;;;5532:10;805:57977;;;;50961:12;;:28;;;;50953:37;;50825:172;:::o;50961:28::-;805:57977;;;;;;;;5532:10;805:57977;;;50977:12;;50825:172;:::o;50907:36::-;50932:11;50939:4;50932:11;:::o;16714:733::-;;;-1:-1:-1;;;;;805:57977:27;;;4441:42;16871:16;;:34;;;16714:733;16867:89;;4578:42;16970:14;;:32;;;16714:733;16966:87;;4039:42;17067:14;;:32;;;16714:733;17063:87;;3781:42;17164:14;;:32;;;16714:733;17160:87;;4301:42;17261:13;;:31;;;16714:733;17257:86;;3909:42;17357:14;:32;;;;16714:733;17353:87;;;16714:733::o;17353:87::-;17398:42;;-1:-1:-1;17391:49:27:o;17357:32::-;3781:42;805:57977;;-1:-1:-1;;;;;805:57977:27;17375:14;17357:32;;;17257:86;-1:-1:-1;17301:42:27;;-1:-1:-1;;17294:49:27:o;17261:31::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:27;;17278:14;17261:31;;17160:87;-1:-1:-1;17205:42:27;;-1:-1:-1;;17198:49:27:o;17164:32::-;805:57977;4169:42;-1:-1:-1;;;;;805:57977:27;;17182:14;17164:32;;17063:87;-1:-1:-1;17108:42:27;;-1:-1:-1;;17101:49:27:o;17067:32::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:27;;17085:14;17067:32;;16966:87;-1:-1:-1;17011:42:27;;-1:-1:-1;;17004:49:27:o;16970:32::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:27;;16988:14;16970:32;;16867:89;-1:-1:-1;16914:42:27;;-1:-1:-1;;16907:49:27:o;16871:34::-;805:57977;3781:42;-1:-1:-1;;;;;805:57977:27;;16891:14;16871:34;;58152:628;;58246:528;;;-1:-1:-1;;58246:528:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;58246:528:27;;;;;;;;;-1:-1:-1;;58246:528:27;;;;;;;;58152:628::o;57413:570::-;;805:57977;;57555:10;;57610:79;57617:8;;;:32;;;57610:79;57617:32;;;-1:-1:-1;;805:57977:27;57610:79;;57617:32;;;57706:10;;57702:67;;57810:14;;;:::i;:::-;57843:9;57624:1;57854:8;;;;;;-1:-1:-1;57939:27:27;;-1:-1:-1;;57413:570:27:o;57864:3::-;57905:6;805:57977;57905:6;805:57977;57905:6;;;:::i;:::-;805:57977;;57624:1;57887:24;;;;;:::i;:::-;;805:57977;57843:9;;57617:32;805:57977;5532:10;805:57977;57629:12;-1:-1:-1;;805:57977:27;;57629:12;;:::i;:::-;805:57977;;57629:20;57617:32;;56274:193;805:57977;;;;56395:3;56384:14;56432:2;56428:6;;56432:2;;;56437:4;56428:20;;805:57977;;5532:10;;56274:193;:::o;56428:20::-;56444:4;56428:20;;","linkReferences":{}},"methodIdentifiers":{"addresses(string)":"bdfe7d47","cancelOrder(bytes32)":"7489ec23","checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"a35e6511","command(string)":"5fcc4500","command(string[])":"52a13e88","escrow(string,string,string,string,string)":"1db51297","executeOrder(bytes32)":"049b76c4","lock(string,string,string,string,string)":"fdbfc0a6","names(address)":"5cf3d346","order(string,string,string,string,string)":"d315e54f","orderHashes(uint256)":"df69558c","orders(bytes32)":"9c3f1e90","pairs(address,address)":"69454b86","previewCommand(string)":"bfe68676","send(string,string,string)":"5615264d","setName(address,string)":"3121db1c","setPair(address,address,address)":"7bb41012","swap(string,string,string,string,string)":"6662c9e3","translateCommand(bytes)":"04659197","translateExecute(bytes)":"f12a64eb","translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":"579a8c4c","whatIsTheAddressOf(string)":"c47d04e2","whatIsTheNameOf(address)":"5a274d62"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSwap\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"PairSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"addresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"cancelOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"checkUserOp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"intentMatched\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"intents\",\"type\":\"string[]\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"command\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"executeOrder\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"time\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"unit\",\"type\":\"string\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addresses\",\"type\":\"address\"}],\"name\":\"names\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"order\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"orderHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"orders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"expiry\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"pairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"previewCommand\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"executeCallData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"token\",\"type\":\"string\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"name\":\"setPair\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"amountIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amountOutMin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenIn\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenOut\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateCommand\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"translateExecute\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct IETH.PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"translateUserOp\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"whatIsTheAddressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"whatIsTheNameOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"nani.eth (https://github.com/NaniDAO/ie)\",\"custom:version\":\"2.3.0\",\"details\":\"V2 simulates typical commands (sending and swapping tokens) and includes execution. IE also has a workflow to verify the intent of ERC4337 account userOps against calldata. Example commands include \\\"send nani 100 dai\\\" or \\\"swap usdc for 1 eth\\\" and such variants.\",\"errors\":{\"InsufficientSwap()\":[{\"details\":\"Insufficient swap output.\"}],\"InvalidCharacter()\":[{\"details\":\"Non-numeric character.\"}],\"InvalidReceiver()\":[{\"details\":\"Invalid out receiver.\"}],\"InvalidSelector()\":[{\"details\":\"Invalid selector for spend.\"}],\"InvalidSwap()\":[{\"details\":\"0-liquidity.\"}],\"InvalidSyntax()\":[{\"details\":\"Invalid command.\"}],\"OrderExpired()\":[{\"details\":\"Order expiry has arrived.\"}],\"Overflow()\":[{\"details\":\"Bad math.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"Unauthorized()\":[{\"details\":\"Invalid function caller.\"}]},\"events\":{\"NameSet(address,string)\":{\"details\":\"Logs the setting of a token name.\"},\"PairSet(address,address,address)\":{\"details\":\"Logs the setting of a swap pool pair on Uniswap V3.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOrder(bytes32)\":{\"details\":\"Cancels a standing order by the `maker`.\"},\"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`.\"},\"command(string)\":{\"details\":\"Executes a text command from an `intent` string.\"},\"command(string[])\":{\"details\":\"Executes batch of text commands from an `intents` string.\"},\"constructor\":{\"details\":\"Constructs this IE on Ethereum with ENS `ASCII_MAP`.\"},\"escrow(string,string,string,string,string)\":{\"details\":\"Executes an `escrow` command from the parts of a matched intent string.\"},\"executeOrder(bytes32)\":{\"details\":\"Executes a standing order for the `receiver`.\"},\"lock(string,string,string,string,string)\":{\"details\":\"Executes a `lock` command from the parts of a matched intent string.\"},\"order(string,string,string,string,string)\":{\"details\":\"Executes an `order` command from the parts of a matched intent string.\"},\"previewCommand(string)\":{\"details\":\"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'.\"},\"send(string,string,string)\":{\"details\":\"Executes a `send` command from the parts of a matched intent string.\"},\"setName(address,string)\":{\"details\":\"Sets a public `name` tag for a given `token` address. Governed by DAO.\"},\"setPair(address,address,address)\":{\"details\":\"Sets a public pool `pair` for swapping tokens. Governed by DAO.\"},\"swap(string,string,string,string,string)\":{\"details\":\"Executes a `swap` command from the parts of a matched intent string.\"},\"translateCommand(bytes)\":{\"details\":\"Translates an `intent` from raw `command()` calldata.\"},\"translateExecute(bytes)\":{\"details\":\"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match.\"},\"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))\":{\"details\":\"Translate packed ERC4337 userOp `callData` into readable `intent`.\"},\"whatIsTheAddressOf(string)\":{\"details\":\"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address.\"},\"whatIsTheNameOf(address)\":{\"details\":\"Returns ENS reverse name resolution details.\"}},\"stateVariables\":{\"ASCII_MAP\":{\"details\":\"String mapping for `ENSAsciiNormalizer` logic.\"},\"CURIA\":{\"details\":\"The resolution registry smart account.\"},\"DAI\":{\"details\":\"The Maker DAO USD stablecoin address.\"},\"DAO\":{\"details\":\"The governing DAO address.\"},\"ENS_REGISTRY\":{\"details\":\"ENS fallback registry contract.\"},\"ENS_REVERSE\":{\"details\":\"ENS reverse registrar contract.\"},\"ENS_WRAPPER\":{\"details\":\"ENS name wrapper token contract.\"},\"ESCROWS\":{\"details\":\"The Escrows protocol singleton.\"},\"ETH\":{\"details\":\"The conventional ERC7528 ETH address.\"},\"MAX_SQRT_RATIO_MINUS_ONE\":{\"details\":\"The maximum value that can be returned from `getSqrtRatioAtTick` (minus one).\"},\"MIN_SQRT_RATIO_PLUS_ONE\":{\"details\":\"The minimum value that can be returned from `getSqrtRatioAtTick` (plus one).\"},\"RETH\":{\"details\":\"The Rocket Pool Staked ETH token address.\"},\"UNISWAP_V3_FACTORY\":{\"details\":\"The address of the Uniswap V3 Factory.\"},\"UNISWAP_V3_POOL_INIT_CODE_HASH\":{\"details\":\"The Uniswap V3 Pool `initcodehash`.\"},\"USDC\":{\"details\":\"The Circle USD stablecoin address.\"},\"USDT\":{\"details\":\"The Tether USD stablecoin address.\"},\"WBTC\":{\"details\":\"The popular wrapped BTC address.\"},\"WETH\":{\"details\":\"The canonical wrapped ETH address.\"},\"WSTETH\":{\"details\":\"The Lido Wrapped Staked ETH token address.\"},\"_REENTRANCY_GUARD_SLOT\":{\"details\":\"Equivalent to: `uint72(bytes9(keccak256(\\\"_REENTRANCY_GUARD_SLOT\\\")))`.\"},\"_idnamap\":{\"details\":\"Each index in idnamap refers to an ascii code point. If idnamap[char] > 2, char maps to a valid ascii character. Otherwise, idna[char] returns Rule.DISALLOWED or Rule.VALID. Modified from `ENSAsciiNormalizer` deployed by royalfork.eth (0x4A5cae3EC0b144330cf1a6CeAD187D8F6B891758).\"},\"addresses\":{\"details\":\"DAO-governed token names to addresses.\"},\"names\":{\"details\":\"DAO-governed token addresses to names.\"},\"orderHashes\":{\"details\":\"Array of onchain order struct hashes.\"},\"orders\":{\"details\":\"Open order book for p2p asset exchange.\"},\"pairs\":{\"details\":\"DAO-governed token swap pool routing on Uniswap V3.\"}},\"title\":\"Intents Engine (IE) on Ethereum (IETH)\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple helper contract for turning transactional intents into executable code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[],"type":"error","name":"InsufficientSwap"},{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidReceiver"},{"inputs":[],"type":"error","name":"InvalidSelector"},{"inputs":[],"type":"error","name":"InvalidSwap"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"type":"error","name":"OrderExpired"},{"inputs":[],"type":"error","name":"Overflow"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"NameSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token0","type":"address","indexed":false},{"internalType":"address","name":"token1","type":"address","indexed":false},{"internalType":"address","name":"pair","type":"address","indexed":false}],"type":"event","name":"PairSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelOrder"},{"inputs":[{"internalType":"string","name":"intent","type":"string"},{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"checkUserOp","outputs":[{"internalType":"bool","name":"intentMatched","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"intents","type":"string[]"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"payable","type":"function","name":"command"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"executeOrder"},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"},{"internalType":"string","name":"time","type":"string"},{"internalType":"string","name":"unit","type":"string"}],"stateMutability":"payable","type":"function","name":"lock","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"addresses","type":"address"}],"stateMutability":"view","type":"function","name":"names","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"order","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"orderHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"orders","outputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"uint48","name":"expiry","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"previewCommand","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"executeCallData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"to","type":"string"},{"internalType":"string","name":"amount","type":"string"},{"internalType":"string","name":"token","type":"string"}],"stateMutability":"payable","type":"function","name":"send"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"payable","type":"function","name":"setName"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"payable","type":"function","name":"setPair"},{"inputs":[{"internalType":"string","name":"amountIn","type":"string"},{"internalType":"string","name":"amountOutMin","type":"string"},{"internalType":"string","name":"tokenIn","type":"string"},{"internalType":"string","name":"tokenOut","type":"string"},{"internalType":"string","name":"receiver","type":"string"}],"stateMutability":"payable","type":"function","name":"swap"},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"pure","type":"function","name":"translateCommand","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"view","type":"function","name":"translateExecute","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"struct IETH.PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"view","type":"function","name":"translateUserOp","outputs":[{"internalType":"string","name":"intent","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"whatIsTheAddressOf","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"whatIsTheNameOf","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"cancelOrder(bytes32)":{"details":"Cancels a standing order by the `maker`."},"checkUserOp(string,(address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Checks packed ERC4337 userOp against the output of the command intent. note: This function checks ETH and ERC20 transfers only with `execute()`."},"command(string)":{"details":"Executes a text command from an `intent` string."},"command(string[])":{"details":"Executes batch of text commands from an `intents` string."},"constructor":{"details":"Constructs this IE on Ethereum with ENS `ASCII_MAP`."},"escrow(string,string,string,string,string)":{"details":"Executes an `escrow` command from the parts of a matched intent string."},"executeOrder(bytes32)":{"details":"Executes a standing order for the `receiver`."},"lock(string,string,string,string,string)":{"details":"Executes a `lock` command from the parts of a matched intent string."},"order(string,string,string,string,string)":{"details":"Executes an `order` command from the parts of a matched intent string."},"previewCommand(string)":{"details":"Preview natural language smart contract command. The `send` syntax uses ENS naming: 'send vitalik 20 DAI'. `swap` syntax uses common format: 'swap 100 DAI for WETH'. `lock` syntax uses send format: 'lock 1 WETH for vitalik'."},"send(string,string,string)":{"details":"Executes a `send` command from the parts of a matched intent string."},"setName(address,string)":{"details":"Sets a public `name` tag for a given `token` address. Governed by DAO."},"setPair(address,address,address)":{"details":"Sets a public pool `pair` for swapping tokens. Governed by DAO."},"swap(string,string,string,string,string)":{"details":"Executes a `swap` command from the parts of a matched intent string."},"translateCommand(bytes)":{"details":"Translates an `intent` from raw `command()` calldata."},"translateExecute(bytes)":{"details":"Translates an `intent` for send action from the solution `callData` of standard `execute()`. note: The function selector technically doesn't need to be `execute()` but params should match."},"translateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes))":{"details":"Translate packed ERC4337 userOp `callData` into readable `intent`."},"whatIsTheAddressOf(string)":{"details":"Returns ENS name ownership details. note: The `receiver` should be already set, or, the command should use the raw address."},"whatIsTheNameOf(address)":{"details":"Returns ENS reverse name resolution details."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IETH"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IEth.sol/IEscrows.json b/out/IEth.sol/IEscrows.json index ae302dd..f3bae1c 100644 --- a/out/IEth.sol/IEscrows.json +++ b/out/IEth.sol/IEscrows.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"escrow","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"escrow(address,address,address,address,uint256,string,uint256)":"8e3de7ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Escrows protocol locking interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IEscrows\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IEscrows"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"escrow","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"escrow(address,address,address,address,uint256,string,uint256)":"8e3de7ab"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"escrow\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Escrows protocol locking interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IEscrows\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function","name":"escrow","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IEscrows"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IEth.sol/IExecutor.json b/out/IEth.sol/IExecutor.json index 91bee7f..f285a07 100644 --- a/out/IEth.sol/IExecutor.json +++ b/out/IEth.sol/IExecutor.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"execute","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(address,uint256,bytes)":"b61d27f6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple calldata executor interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"execute","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(address,uint256,bytes)":"b61d27f6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple calldata executor interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IEth.sol/ISwapRouter.json b/out/IEth.sol/ISwapRouter.json index ac60c40..eb3c512 100644 --- a/out/IEth.sol/ISwapRouter.json +++ b/out/IEth.sol/ISwapRouter.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"swap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Uniswap V3 swapping interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"ISwapRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"swap","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"uint160","internalType":"uint160"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"int256","internalType":"int256"},{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"swap(address,bool,int256,uint160,bytes)":"128acb08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple Uniswap V3 swapping interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"ISwapRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint160","name":"","type":"uint160"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"ISwapRouter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IEth.sol/IToken.json b/out/IEth.sol/IToken.json index f06d077..ebb38a2 100644 --- a/out/IEth.sol/IToken.json +++ b/out/IEth.sol/IToken.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple token handler interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":25} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","transfer(address,uint256)":"a9059cbb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Simple token handler interface.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IEth.sol\":\"IToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]},\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]},\"src/IEth.sol\":{\"keccak256\":\"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1\",\"dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IEth.sol":"IToken"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"},"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"},"src/IEth.sol":{"keccak256":"0x7ab9bd4168d306c871598fea17f741b5d651832115bdbf138dd1d0c2788a55c3","urls":["bzz-raw://9e55ecc02f46597be3119141ff5661c09f4e037556d72d89911d854f6ef829e1","dweb:/ipfs/QmZ3VkrbpUN2xaRF8udDApYZUfQxW8zJrNACtYtqyghDEf"],"license":"AGPL-3.0-only"}},"version":1},"id":27} \ No newline at end of file diff --git a/out/IMulticall3.sol/IMulticall3.json b/out/IMulticall3.sol/IMulticall3.json index af2d2cb..fcf29db 100644 --- a/out/IMulticall3.sol/IMulticall3.json +++ b/out/IMulticall3.sol/IMulticall3.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file +{"abi":[{"type":"function","name":"aggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"aggregate3","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"aggregate3Value","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call3Value[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"allowFailure","type":"bool","internalType":"bool"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"blockAndAggregate","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"getBasefee","inputs":[],"outputs":[{"name":"basefee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChainId","inputs":[],"outputs":[{"name":"chainid","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockCoinbase","inputs":[],"outputs":[{"name":"coinbase","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockDifficulty","inputs":[],"outputs":[{"name":"difficulty","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockGasLimit","inputs":[],"outputs":[{"name":"gaslimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEthBalance","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastBlockHash","inputs":[],"outputs":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"tryAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"},{"type":"function","name":"tryBlockAndAggregate","inputs":[{"name":"requireSuccess","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"returnData","type":"tuple[]","internalType":"struct IMulticall3.Result[]","components":[{"name":"success","type":"bool","internalType":"bool"},{"name":"returnData","type":"bytes","internalType":"bytes"}]}],"stateMutability":"payable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"aggregate((address,bytes)[])":"252dba42","aggregate3((address,bool,bytes)[])":"82ad56cb","aggregate3Value((address,bool,uint256,bytes)[])":"174dea71","blockAndAggregate((address,bytes)[])":"c3077fa9","getBasefee()":"3e64a696","getBlockHash(uint256)":"ee82ac5e","getBlockNumber()":"42cbb15c","getChainId()":"3408e470","getCurrentBlockCoinbase()":"a8b0574e","getCurrentBlockDifficulty()":"72425d9d","getCurrentBlockGasLimit()":"86d516e8","getCurrentBlockTimestamp()":"0f28c97d","getEthBalance(address)":"4d2301cc","getLastBlockHash()":"27e86d6e","tryAggregate(bool,(address,bytes)[])":"bce38bd7","tryBlockAndAggregate(bool,(address,bytes)[])":"399542e9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainid\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryAggregate\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"requireSuccess\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":\"IMulticall3\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}]},{"inputs":[{"internalType":"struct IMulticall3.Call3[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call3Value[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"aggregate3Value","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"view","type":"function","name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryAggregate","outputs":[{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"struct IMulticall3.Result[]","name":"returnData","type":"tuple[]","components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}]}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IMulticall3.sol":"IMulticall3"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"}},"version":1},"id":15} \ No newline at end of file diff --git a/out/IUniswap.sol/IUniswap.json b/out/IUniswap.sol/IUniswap.json index 421f0e1..bf49091 100644 --- a/out/IUniswap.sol/IUniswap.json +++ b/out/IUniswap.sol/IUniswap.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"getAmountsOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAmountsOut(uint256,address[])":"d06ca61f","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IUniswap.sol\":\"IUniswap\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IUniswap.sol":"IUniswap"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"}},"version":1},"id":26} \ No newline at end of file +{"abi":[{"type":"function","name":"getAmountsOut","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"swapExactTokensForTokens","inputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMin","type":"uint256","internalType":"uint256"},{"name":"path","type":"address[]","internalType":"address[]"},{"name":"to","type":"address","internalType":"address"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amounts","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getAmountsOut(uint256,address[])":"d06ca61f","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IUniswap.sol\":\"IUniswap\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"stateMutability":"view","type":"function","name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IUniswap.sol":"IUniswap"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"}},"version":1},"id":28} \ No newline at end of file diff --git a/out/IntentEngineTrade.sol/IntentEngine.json b/out/IntentEngineTrade.sol/IntentEngine.json index 69d5989..dc4bd97 100644 --- a/out/IntentEngineTrade.sol/IntentEngine.json +++ b/out/IntentEngineTrade.sol/IntentEngine.json @@ -1 +1 @@ -{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c5991790915551610db390816100f48239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;-1:-1:-1;;;248:42:31;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:31;;;;;;;;193:5629:30;;;-1:-1:-1;;;320:42:31;;;;;248;;;320;;;248;;;;320;248;;;193:5629:30;;-1:-1:-1;;;391:42:31;;;;;248;;;391;;;248;;;;391;248;;;193:5629:30;;-1:-1:-1;;;463:42:31;;;;;248;;;;463;;;248;;;;;463;248;;;;193:5629:30;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea2646970667358221220911ee9e74a0a747d57c72e50ec3b9dfa1d0dc5019e55a12e2cdc5b493eb7759964736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:25;193:5629;;;:::i;:::-;5150:25;:::i;:::-;5213:23;193:5629;;:::i;:::-;5213:23;;:::i;:::-;193:5629;;;;5251:17;5247:45;;193:5629;5333:30;5354:8;;;:::i;:::-;;5333:30;;:::i;:::-;5431:8;193:5629;;5431:8;193:5629;5607:30;5547;5410;5431:8;;;:::i;:::-;;5410:30;;:::i;:::-;193:5629;5568:8;2236:36;2263:8;2190:29;193:5629;;:::i;:::-;2190:29;;:::i;:::-;2263:8;:::i;2236:36::-;5568:8;;:::i;:::-;;5547:30;;:::i;:::-;5607;;:::i;:::-;193:5629;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5247:45;5277:15;193:5629;5277:15;193:5629;;5277:15;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:25;193:5629;;;;;;;;:::i;566:25::-;629:23;193:5629;;:::i;629:23::-;193:5629;;;;667:17;663:45;;749:30;770:8;;;:::i;:::-;;749:30;;:::i;:::-;847:8;1024:30;963;826;847:8;;;:::i;:::-;;826:30;;:::i;:::-;193:5629;984:8;2236:36;2263:8;2190:29;193:5629;;:::i;2236:36::-;984:8;;:::i;963:30::-;1024;;:::i;:::-;193:5629;;;;1092:26;;193:5629;1092:26;193:5629;;;;;;;;;;;;;;;;;1092:26;;-1:-1:-1;;1092:26:30;;;;;;:::i;:::-;193:5629;1082:37;;193:5629;;;1145:27;;193:5629;;;;1145:27;;;;;;;:::i;:::-;193:5629;1135:38;;1082:91;1065:926;;193:5629;;;;;;;;;;;;;;;;;;;;;:::i;1065:926::-;193:5629;;;;;;;;:::i;:::-;2269:1;193:5629;;;;;;;;;;-1:-1:-1;;193:5629:30;;;;;;:::i;:::-;;;;;:::i;:::-;;;1381:24;;;;:::i;:::-;193:5629;1419:24;;;:::i;:::-;193:5629;;;1464:12;;;:::i;:::-;193:5629;;1457:64;193:5629;;1457:64;;;;193:5629;1457:64;;520:10;193:5629;1457:64;;193:5629;1507:4;193:5629;;;;;;;;;1457:64;;;;;;;193:5629;1457:64;193:5629;1457:64;;;1065:926;193:5629;;;;1536:123;;;;193:5629;1536:123;;1579:42;193:5629;1536:123;;193:5629;;;;;;1536:123;;;;;;;;1065:926;1940:15;1958:4;1940:15;193:5629;1940:15;;193:5629;;;;;;;1714:266;;;193:5629;1714:266;;193:5629;;;1714:266;;193:5629;1714:266;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;520:10;;;;;193:5629;520:10;;1457:64;193:5629;;;;;;;1714:266;;;1579:42;1714:266;;;;;;;;193:5629;1065:926;;;1714:266;;;193:5629;1714:266;;;;;;:::i;:::-;;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1714:266;;;;193:5629;;;;;;;;;;;;;1714:266;193:5629;;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;853:1;193:5629;;;;;;;;;;;;;1536:123;;;193:5629;1536:123;193:5629;1536:123;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1457:64;;;;;;;;;;;;;:::i;:::-;;;193:5629;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;193:5629:30;;;;;-1:-1:-1;193:5629:30;;;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;193:5629:30;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;853:1;193:5629;;;;;;;:::o;:::-;;;2269:1;193:5629;;;;;;;:::o;:::-;;;990:1;193:5629;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;3448:329::-;;3567:25;193:5629;;3567:25;:::i;:::-;3607:13;3619:1;3642:3;193:5629;;3622:18;;;;;3672:10;;;;:::i;:::-;193:5629;;;;;3709:9;;;:22;;;3642:3;3708:52;;;-1:-1:-1;193:5629:30;;3753:2;193:5629;;;;;;;;;;;;;3708:52;3619:1;3696:64;;;;;:::i;:::-;;193:5629;3607:13;;3708:52;193:5629;3708:52;;;;;3709:22;3722:9;193:5629;3722:9;;;3709:22;;3622:18;;;3448:329::o;2314:827::-;;;2504:1;193:5629;;2477:28;193:5629;;;;;;;;;;;;;;;2602:1;;2717:7;;;;;;193:5629;2504:1;193:5629;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;2602:1;193:5629;;;;;;2805:35;;;2602:1;2885:13;2602:1;2918:9;2602:1;2929:8;;;;;;;2314:827;;;;;;;:::o;2939:3::-;2966:8;;;:26;;;;2939:3;2962:149;;2939:3;2504:1;193:5629;2918:9;;2962:149;193:5629;;3016:41;193:5629;;;;;;;:::i;:::-;;;3037:20;193:5629;3037:20;;193:5629;2504:1;3022:11;193:5629;3016:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;2504:1:30;193:5629;;;2962:149;;2966:26;2978:7;;193:5629;2978:7;;;;:::i;:::-;193:5629;;2978:14;2966:26;;193:5629;;;;;;;;:::i;:::-;2602:1;193:5629;;2602:1;193:5629;;;;;;;;;;;;;2726:3;2753:7;193:5629;2753:7;;;;:::i;:::-;193:5629;;2753:14;2749:27;;2726:3;2504:1;193:5629;2702:13;;2749:27;2504:1;193:5629;;;;2749:27;;193:5629;;;;;;;;;;;;;;;;;;;;;;;3147:295;;;3303:8;;;193:5629;;;;;;;;;;3293:32;;;:::i;:::-;3340:13;-1:-1:-1;3374:3:30;193:5629;;3355:17;;;;;193:5629;;3410:14;193:5629;;;;;;;;;3405:20;193:5629;3405:20;;;:::i;:::-;193:5629;;-1:-1:-1;3393:32:30;;;;;:::i;:::-;;193:5629;3340:13;;3355:17;;;;;3147:295::o;3783:1058::-;193:5629;;;;;;;;;4066:7;;;;;;4050:561;4658:11;;;;;4654:156;4658:11;;;193:5629;;;4654:156;3783:1058::o;4654:156::-;1045:2;4722:24;;4718:92;;4654:156;;3783:1058::o;4718:92::-;1045:2;193:5629;4778:2;193:5629;;4654:156;3783:1058::o;4075:3::-;4109:4;;;;:::i;:::-;193:5629;;;;;4135:9;;;:22;;;4075:3;4131:466;;;193:5629;;;4233:2;193:5629;;;;;;;;;;;4284:102;;;4131:466;853:1;4131:466;;193:5629;4055:9;;;;;4284:102;193:5629;853:1;193:5629;4330:26;1045:2;4330:26;;4326:37;4284:102;4326:37;4358:5;;;;;4131:466;193:5629;4414:9;;;;;;;:24;;;;4131:466;-1:-1:-1;4410:187:30;;;853:1;4489:17;4410:187;4131:466;;4410:187;4560:18;193:5629;4560:18;;193:5629;4560:18;4414:24;4427:11;;;4414:24;;;4135:22;4148:9;193:5629;4148:9;;;4135:22;","linkReferences":{}},"methodIdentifiers":{"commandToTrade(string)":"08e90235","getAddressFromString(string)":"a3c7ed7f","returnIntentValues(string)":"1aeac183"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"commandToTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"returnIntentValues\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IntentEngineTrade.sol\":\"IntentEngine\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9\",\"dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192\",\"dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"commandToTrade","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"returnIntentValues","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IntentEngineTrade.sol":"IntentEngine"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b","urls":["bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9","dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869","urls":["bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192","dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file +{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"commandToTrade","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"returnIntentValues","inputs":[{"name":"intent","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"protocol","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"error","name":"InvalidCharacter","inputs":[]},{"type":"error","name":"InvalidSyntax","inputs":[]}],"bytecode":{"object":"0x608080604052346100f95780630eecae8d60e31b602492525f60048201522073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03198254161790556024604051637573646360e01b81525f60048201522073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860018060a01b031982541617905560236040516264616960e81b81525f600382015220736b175474e89094c44da98b954eedeac495271d0f60018060a01b031982541617905560236040516262746360e81b81525f600382015220732260fac5e5542a773aa44fbcfedf7c193bc2c59960018060a01b0319825416179055604051610db390816100fe8239f35b5f80fdfe60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea26469706673582212200a8e90c6b30bd26456ffe0955c4dc1320f10b23cfff9157c399585aec07bd25664736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;248:42:31;-1:-1:-1;;;248:42:31;;;535:21;248:42;;;;;;;;;;;;;;;;;;;193:5629:30;;-1:-1:-1;;;320:42:31;;535:21;248:42;320;;248;320;;248;;;;;;;;;;;;391;193:5629:30;;-1:-1:-1;;;391:42:31;;535:21;391:42;;;248;391;;248;;;;;;;;;;;;391;193:5629:30;;-1:-1:-1;;;462:42:31;;535:21;391:42;462;;248;462;;248;;;;;;;;;;;;193:5629:30;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610010575b005b5f3560e01c806308e90235146101915780631aeac183146100815763a3c7ed7f0361000e573461007d57602073ffffffffffffffffffffffffffffffffffffffff818061005c366106ef565b604051928184925191829101835e81015f8152030190205416604051908152f35b5f80fd5b3461007d57610097610092366106ef565b610895565b6100a86100a261074c565b8261098d565b906004825103610169576101656100c86100c184610787565b5183610b70565b9273ffffffffffffffffffffffffffffffffffffffff61013f8161013761013161012b6100fe6100f7886107c1565b518a610b70565b9861012461011e6100c161011961011361074c565b8561098d565b6107d1565b986107e1565b5190610b70565b95610bec565b97610835565b541694610835565b54169360405194859485526020850152604084015260806060840152608083019061060c565b0390f35b7f1e3382cb000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461007d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261007d5760043567ffffffffffffffff811161007d573660238201121561007d57806004013567ffffffffffffffff811161007d57366024828401011161007d5761020f916100929160243692016106b9565b61021a6100a261074c565b9060048251036101695761023761023083610787565b5182610b70565b9061027261026c61025161024a866107c1565b5184610b70565b926101246102666100c161011961011361074c565b966107e1565b93610bec565b91604051602081019061029f602082885180838b01875e81015f838201520301601f19810183528261067a565b51902060405160208101907f756e6973776170000000000000000000000000000000000000000000000000008252600781526102dc60278261067a565b51902014610303575b5050610165604051928392835260406020840152604083019061060c565b5f6040519261031360608561067a565b6002845273ffffffffffffffffffffffffffffffffffffffff61034e816103466020880196601f19606001368937610835565b541692610835565b54168161035a86610787565b52610364856107c1565b52602073ffffffffffffffffffffffffffffffffffffffff61038586610787565b51166064604051809581937f23b872dd0000000000000000000000000000000000000000000000000000000083523360048401523060248401528a60448401525af190811561055d575f926020926105f1575b506044604051809481937f095ea7b3000000000000000000000000000000000000000000000000000000008352737a250d5630b4cf539739df2c5dacb4c659f2488d60048401528960248401525af1801561055d576105c4575b50610bb842018042116105975790916040519283917f38ed173900000000000000000000000000000000000000000000000000000000835260a48301908660048501525f602485015260a060448501525180915260c4830191905f5b8181106105685750505081905f933360648401526084830152038183737a250d5630b4cf539739df2c5dacb4c659f2488d5af1801561055d576104d2575b806102e5565b3d805f833e6104e1818361067a565b81019060208183031261007d5780519067ffffffffffffffff821161007d570181601f8201121561007d5780519060208061051b84610805565b610528604051918261067a565b848152019260051b82010192831161007d57602001905b82821061054d5750506104cc565b815181526020918201910161053f565b6040513d5f823e3d90fd5b825173ffffffffffffffffffffffffffffffffffffffff1684528694506020938401939092019160010161048e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105e59060203d6020116105ea575b6105dd818361067a565b81019061081d565b610432565b503d6105d3565b61060790833d85116105ea576105dd818361067a565b6103d8565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6040810190811067ffffffffffffffff82111761064d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761064d57604052565b67ffffffffffffffff811161064d57601f01601f191660200190565b9291926106c58261069d565b916106d3604051938461067a565b82948184528183011161007d578281602093845f960137010152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261007d576004359067ffffffffffffffff821161007d578060238301121561007d57816024610749936004013591016106b9565b90565b6040519061075b60408361067a565b600182527f20000000000000000000000000000000000000000000000000000000000000006020830152565b8051156107945760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156107945760400190565b8051600210156107945760600190565b8051600310156107945760800190565b80518210156107945760209160051b010190565b67ffffffffffffffff811161064d5760051b60200190565b9081602091031261007d5751801515810361007d5790565b60208091604051928184925191829101835e81015f81520301902090565b9061085d8261069d565b61086a604051918261067a565b828152601f1961087a829461069d565b0190602036910137565b908151811015610794570160200190565b906108a08251610853565b915f5b8151811015610989576108b68183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f41000000000000000000000000000000000000000000000000000000000000008110158061095f575b15610955575060f81c6020019060ff8211610597577fff0000000000000000000000000000000000000000000000000000000000000060019260f81b165b5f1a61094e8287610884565b53016108a3565b6001929150610942565b507f5a00000000000000000000000000000000000000000000000000000000000000811115610904565b5050565b91906001815103610b125780511561079457602001518251907fff00000000000000000000000000000000000000000000000000000000000000165f805b838110610acb575060010193601f196109fc6109e687610805565b966109f4604051988961067a565b808852610805565b015f5b818110610aa8575050845f915f935f5b86811115610a205750505050505050565b8681148015610a73575b610a37575b600101610a0f565b9493610a689060405195610a4a87610631565b86528660208701526001810195610a6182876107f1565b52846107f1565b506001850194610a2f565b50817fff00000000000000000000000000000000000000000000000000000000000000610aa08386610884565b511614610a2a565b602090604051610ab781610631565b5f81525f8382015282828a010152016109ff565b827fff00000000000000000000000000000000000000000000000000000000000000610af78389610884565b511614610b07575b6001016109cb565b600190910190610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f44656c696d69746572206d757374206265206f6e6520636861726163746572006044820152fd5b919060208101518151810390811161059757610b8b90610853565b905f5b8251811015610be657815190808201809211610597577fff00000000000000000000000000000000000000000000000000000000000000610bd160019388610884565b51165f1a610bdf8286610884565b5301610b8e565b50509150565b80515f9182918291825b828110610c2d575b50505090155f14610c175750670de0b6b3a76400000290565b60128110610c23575090565b601203600a0a0290565b610c378183610884565b517fff0000000000000000000000000000000000000000000000000000000000000081167f300000000000000000000000000000000000000000000000000000000000000081101580610d53575b15610ce457508596600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd09260f89897981c9102010195610cce575b6001905b01939293610bf6565b93600101936012851115610cc157939293610bfe565b7f2e00000000000000000000000000000000000000000000000000000000000000915095919495149081610d4a575b5015610d225760018093610cc5565b7f312a9f56000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610d13565b507f3900000000000000000000000000000000000000000000000000000000000000811115610c8556fea26469706673582212200a8e90c6b30bd26456ffe0955c4dc1320f10b23cfff9157c399585aec07bd25664736f6c634300081c0033","sourceMap":"193:5629:30:-:0;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:25;193:5629;;;:::i;:::-;5150:25;:::i;:::-;5213:23;193:5629;;:::i;:::-;5213:23;;:::i;:::-;193:5629;;;;5251:17;5247:45;;193:5629;5333:30;5354:8;;;:::i;:::-;;5333:30;;:::i;:::-;5431:8;193:5629;;5431:8;193:5629;5607:30;5547;5410;5431:8;;;:::i;:::-;;5410:30;;:::i;:::-;193:5629;5568:8;2236:36;2263:8;2190:29;193:5629;;:::i;:::-;2190:29;;:::i;:::-;2263:8;:::i;2236:36::-;5568:8;;:::i;:::-;;5547:30;;:::i;:::-;5607;;:::i;:::-;193:5629;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5247:45;5277:15;193:5629;5277:15;193:5629;;5277:15;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:25;193:5629;;;;;;;;:::i;566:25::-;629:23;193:5629;;:::i;629:23::-;193:5629;;;;667:17;663:45;;749:30;770:8;;;:::i;:::-;;749:30;;:::i;:::-;847:8;1024:30;963;826;847:8;;;:::i;:::-;;826:30;;:::i;:::-;193:5629;984:8;2236:36;2263:8;2190:29;193:5629;;:::i;2236:36::-;984:8;;:::i;963:30::-;1024;;:::i;:::-;193:5629;;;;1092:26;;193:5629;1092:26;193:5629;;;;;;;;;;;;;;;;;1092:26;;-1:-1:-1;;1092:26:30;;;;;;:::i;:::-;193:5629;1082:37;;193:5629;;;1145:27;;193:5629;;;;1145:27;;;;;;;:::i;:::-;193:5629;1135:38;;1082:91;1065:926;;193:5629;;;;;;;;;;;;;;;;;;;;;:::i;1065:926::-;193:5629;;;;;;;;:::i;:::-;2269:1;193:5629;;;;;;;;;;-1:-1:-1;;193:5629:30;;;;;;:::i;:::-;;;;;:::i;:::-;;;1381:24;;;;:::i;:::-;193:5629;1419:24;;;:::i;:::-;193:5629;;;1464:12;;;:::i;:::-;193:5629;;1457:64;193:5629;;1457:64;;;;193:5629;1457:64;;520:10;193:5629;1457:64;;193:5629;1507:4;193:5629;;;;;;;;;1457:64;;;;;;;193:5629;1457:64;193:5629;1457:64;;;1065:926;193:5629;;;;1536:123;;;;193:5629;1536:123;;1579:42;193:5629;1536:123;;193:5629;;;;;;1536:123;;;;;;;;1065:926;1940:15;1958:4;1940:15;193:5629;1940:15;;193:5629;;;;;;;1714:266;;;193:5629;1714:266;;193:5629;;;1714:266;;193:5629;1714:266;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;520:10;;;;;193:5629;520:10;;1457:64;193:5629;;;;;;;1714:266;;;1579:42;1714:266;;;;;;;;193:5629;1065:926;;;1714:266;;;193:5629;1714:266;;;;;;:::i;:::-;;;193:5629;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1714:266;;;;193:5629;;;;;;;;;;;;;1714:266;193:5629;;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;853:1;193:5629;;;;;;;;;;;;;1536:123;;;193:5629;1536:123;193:5629;1536:123;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1457:64;;;;;;;;;;;;;:::i;:::-;;;193:5629;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;193:5629:30;;;;;-1:-1:-1;193:5629:30;;;;-1:-1:-1;;193:5629:30;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;193:5629:30;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;193:5629:30;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;853:1;193:5629;;;;;;;:::o;:::-;;;2269:1;193:5629;;;;;;;:::o;:::-;;;990:1;193:5629;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;3448:329::-;;3567:25;193:5629;;3567:25;:::i;:::-;3607:13;3619:1;3642:3;193:5629;;3622:18;;;;;3672:10;;;;:::i;:::-;193:5629;;;;;3709:9;;;:22;;;3642:3;3708:52;;;-1:-1:-1;193:5629:30;;3753:2;193:5629;;;;;;;;;;;;;3708:52;3619:1;3696:64;;;;;:::i;:::-;;193:5629;3607:13;;3708:52;193:5629;3708:52;;;;;3709:22;3722:9;193:5629;3722:9;;;3709:22;;3622:18;;;3448:329::o;2314:827::-;;;2504:1;193:5629;;2477:28;193:5629;;;;;;;;;;;;;;;2602:1;;2717:7;;;;;;193:5629;2504:1;193:5629;;-1:-1:-1;;193:5629:30;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;2602:1;193:5629;;;;;;2805:35;;;2602:1;2885:13;2602:1;2918:9;2602:1;2929:8;;;;;;;2314:827;;;;;;;:::o;2939:3::-;2966:8;;;:26;;;;2939:3;2962:149;;2939:3;2504:1;193:5629;2918:9;;2962:149;193:5629;;3016:41;193:5629;;;;;;;:::i;:::-;;;3037:20;193:5629;3037:20;;193:5629;2504:1;3022:11;193:5629;3016:41;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;2504:1:30;193:5629;;;2962:149;;2966:26;2978:7;;193:5629;2978:7;;;;:::i;:::-;193:5629;;2978:14;2966:26;;193:5629;;;;;;;;:::i;:::-;2602:1;193:5629;;2602:1;193:5629;;;;;;;;;;;;;2726:3;2753:7;193:5629;2753:7;;;;:::i;:::-;193:5629;;2753:14;2749:27;;2726:3;2504:1;193:5629;2702:13;;2749:27;2504:1;193:5629;;;;2749:27;;193:5629;;;;;;;;;;;;;;;;;;;;;;;3147:295;;;3303:8;;;193:5629;;;;;;;;;;3293:32;;;:::i;:::-;3340:13;-1:-1:-1;3374:3:30;193:5629;;3355:17;;;;;193:5629;;3410:14;193:5629;;;;;;;;;3405:20;193:5629;3405:20;;;:::i;:::-;193:5629;;-1:-1:-1;3393:32:30;;;;;:::i;:::-;;193:5629;3340:13;;3355:17;;;;;3147:295::o;3783:1058::-;193:5629;;;;;;;;;4066:7;;;;;;4050:561;4658:11;;;;;4654:156;4658:11;;;193:5629;;;4654:156;3783:1058::o;4654:156::-;1045:2;4722:24;;4718:92;;4654:156;;3783:1058::o;4718:92::-;1045:2;193:5629;4778:2;193:5629;;4654:156;3783:1058::o;4075:3::-;4109:4;;;;:::i;:::-;193:5629;;;;;4135:9;;;:22;;;4075:3;4131:466;;;193:5629;;;4233:2;193:5629;;;;;;;;;;;4284:102;;;4131:466;853:1;4131:466;;193:5629;4055:9;;;;;4284:102;193:5629;853:1;193:5629;4330:26;1045:2;4330:26;;4326:37;4284:102;4326:37;4358:5;;;;;4131:466;193:5629;4414:9;;;;;;;:24;;;;4131:466;-1:-1:-1;4410:187:30;;;853:1;4489:17;4410:187;4131:466;;4410:187;4560:18;193:5629;4560:18;;193:5629;4560:18;4414:24;4427:11;;;4414:24;;;4135:22;4148:9;193:5629;4148:9;;;4135:22;","linkReferences":{}},"methodIdentifiers":{"commandToTrade(string)":"08e90235","getAddressFromString(string)":"a3c7ed7f","returnIntentValues(string)":"1aeac183"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSyntax\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"commandToTrade\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"intent\",\"type\":\"string\"}],\"name\":\"returnIntentValues\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocol\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IntentEngineTrade.sol\":\"IntentEngine\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/IERC20.sol\":{\"keccak256\":\"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f\",\"dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W\"]},\"src/IUniswap.sol\":{\"keccak256\":\"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081\",\"dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd\"]},\"src/IntentEngineTrade.sol\":{\"keccak256\":\"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9\",\"dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5\"]},\"src/UniswapRegistry.sol\":{\"keccak256\":\"0xdf5457b745b88c4092445b16329fac837ecf10db5b40842f621c330ec5b93552\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bc9758b650eee2473acf7067fb3141277337208d55ee23d38da0406bbb6a266\",\"dweb:/ipfs/QmT3xW9GABYdYxLZWNz9xMb6HxFyx5S33ZJ3beQWN1wv1C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidCharacter"},{"inputs":[],"type":"error","name":"InvalidSyntax"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"commandToTrade","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"intent","type":"string"}],"stateMutability":"view","type":"function","name":"returnIntentValues","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"protocol","type":"string"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IntentEngineTrade.sol":"IntentEngine"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/IERC20.sol":{"keccak256":"0x91104f4bcc877f2506e4485b871efe0a6beb5c1ef7de9c374d99d75289905905","urls":["bzz-raw://57a7ecbec5ff542c117d36c7487386b5653ad21d0a83414e859d4202e069b36f","dweb:/ipfs/QmaPocSUaysdjd1Ksa5kttxRHxhA7XWd6HrQ9teLFRyR6W"],"license":"MIT"},"src/IUniswap.sol":{"keccak256":"0xa4894c599b8e77c38a53152430a252af48fe16deb6f39be7b67a3a7ba2215024","urls":["bzz-raw://fcca9d51c447ae57e850191ddc8268e09554ebf1391e9ad664f73406ac4b9081","dweb:/ipfs/QmWYDV9TBWnvY4xBJteYMmKEbF7cTSVU5UaTcJj4NkGEdd"],"license":"MIT"},"src/IntentEngineTrade.sol":{"keccak256":"0xef145ce40f3dfe5d6250305ef3ddd9cdb763b101b56287f1a5c3f68224853e8b","urls":["bzz-raw://4d223098112f0a439bca2e042c7a400ce0015982f26ff9a7176e10d4bf2aa9a9","dweb:/ipfs/QmamMTkLWFQtsNXsUHV1svVeUNkrsjptentUg4DfXTd3A5"],"license":"MIT"},"src/UniswapRegistry.sol":{"keccak256":"0xdf5457b745b88c4092445b16329fac837ecf10db5b40842f621c330ec5b93552","urls":["bzz-raw://1bc9758b650eee2473acf7067fb3141277337208d55ee23d38da0406bbb6a266","dweb:/ipfs/QmT3xW9GABYdYxLZWNz9xMb6HxFyx5S33ZJ3beQWN1wv1C"],"license":"MIT"}},"version":1},"id":30} \ No newline at end of file diff --git a/out/MetadataReaderLib.sol/MetadataReaderLib.json b/out/MetadataReaderLib.sol/MetadataReaderLib.json index fec64fd..102cedf 100644 --- a/out/MetadataReaderLib.sol/MetadataReaderLib.json +++ b/out/MetadataReaderLib.sol/MetadataReaderLib.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212209db22c19ebf0746398eeb8354212fac4c2fa95e33330f40bf633bf29443bb33864736f6c634300081c0033","sourceMap":"217:10118:19:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212209db22c19ebf0746398eeb8354212fac4c2fa95e33330f40bf633bf29443bb33864736f6c634300081c0033","sourceMap":"217:10118:19:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/MetadataReaderLib.sol)\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"GAS_STIPEND_NO_GRIEF\":{\"details\":\"Default gas stipend for contract reads. High enough for most practical use cases (able to SLOAD about 1000 bytes of data), but low enough to prevent griefing.\"},\"STRING_LIMIT_DEFAULT\":{\"details\":\"Default string byte length limit.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for reading contract metadata robustly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":\"MetadataReaderLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/solady/src/utils/MetadataReaderLib.sol":"MetadataReaderLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b39274aa640004f0bffc7be2e526ae127c32aa12f748626bbb761e994c58d56064736f6c634300081c0033","sourceMap":"217:10118:19:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220b39274aa640004f0bffc7be2e526ae127c32aa12f748626bbb761e994c58d56064736f6c634300081c0033","sourceMap":"217:10118:19:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/MetadataReaderLib.sol)\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"GAS_STIPEND_NO_GRIEF\":{\"details\":\"Default gas stipend for contract reads. High enough for most practical use cases (able to SLOAD about 1000 bytes of data), but low enough to prevent griefing.\"},\"STRING_LIMIT_DEFAULT\":{\"details\":\"Default string byte length limit.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for reading contract metadata robustly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":\"MetadataReaderLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/MetadataReaderLib.sol\":{\"keccak256\":\"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5\",\"dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/solady/src/utils/MetadataReaderLib.sol":"MetadataReaderLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/MetadataReaderLib.sol":{"keccak256":"0x671f4b38462335f3500b91eeff2fd25fc447cc201901524959c05b934ad0b100","urls":["bzz-raw://aa64b44dc13b25c1aa713cb5724fade1dc093c95581efc5ccb85cbcc616c02c5","dweb:/ipfs/QmRvXqBw8GqpShA8cXAwA6ha14Q2bfajNmYq1mYNYAaMiv"],"license":"MIT"}},"version":1},"id":19} \ No newline at end of file diff --git a/out/MockERC20.sol/MockERC20.json b/out/MockERC20.sol/MockERC20.json index b51b12b..ad15b11 100644 --- a/out/MockERC20.sol/MockERC20.json +++ b/out/MockERC20.sol/MockERC20.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576110a6908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610c4c57508063095ea7b314610bc75780631624f6c61461077657806318160ddd1461075957806323b872dd14610659578063313ce567146106395780633644e5151461061757806370a08231146105d25780637ecebe001461058d57806395d89b4114610495578063a9059cbb146103e4578063d505accf1461011d5763dd62ed3e146100ab575f80fd5b34610119576040600319360112610119576100c4610d15565b73ffffffffffffffffffffffffffffffffffffffff6100e1610d38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101195760e060031936011261011957610136610d15565b61013e610d38565b604435606435916084359260ff8416809403610119574281106103865773ffffffffffffffffffffffffffffffffffffffff610178610e25565b951693845f52600860205260405f20908154965f198814610359576020945f9460809460018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261020d60e082610d5b565b51902060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610254606282610d5b565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561034e5773ffffffffffffffffffffffffffffffffffffffff5f511680151580610345575b156102e7577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b5082811461029f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b34610119576040600319360112610119576103fd610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205261042c8360405f2054610f8c565b335f52600460205260405f20551690815f5260046020526104518160405f2054610ffe565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b34610119575f600319360112610119576040515f6001546104b581610dd4565b808452906001811690811561054b57506001146104ed575b6104e9836104dd81850382610d5b565b60405191829182610ceb565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610531575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610519565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104dd90506104cd565b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff6105bb610d15565b165f526008602052602060405f2054604051908152f35b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff610600610d15565b165f526004602052602060405f2054604051908152f35b34610119575f600319360112610119576020610631610e25565b604051908152f35b34610119575f60031936011261011957602060ff60025416604051908152f35b3461011957606060031936011261011957610672610d15565b61067a610d38565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526005835260405f208233165f52835260405f2054865f198203610732575b5050845f52600483526106f18660405f2054610f8c565b855f526004845260405f20551693845f52600482526107148160405f2054610ffe565b855f526004835260405f2055604051908152a3602060405160018152f35b61073b91610f8c565b855f526005845260405f208333165f52845260405f205586866106da565b34610119575f600319360112610119576020600354604051908152f35b346101195760606003193601126101195760043567ffffffffffffffff8111610119576107a7903690600401610d7e565b60243567ffffffffffffffff8111610119576107c7903690600401610d7e565b60443560ff81168091036101195760ff60095416610b6957825167ffffffffffffffff8111610a12576107fa5f54610dd4565b601f8111610ac9575b506020601f8211600114610a4a57819293945f92610a3f575b50505f198260011b9260031b1c1916175f555b815167ffffffffffffffff8111610a125761084b600154610dd4565b601f8111610971575b50602092601f82116001146108f257928192935f926108e7575b50505f198260011b9260031b1c1916176001555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006002541617600255466006556108b7610e3f565b600755600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b01519050838061086e565b601f1982169360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b8681106109595750836001959610610941575b505050811b01600155610882565b01515f1960f88460031b161c19169055838080610933565b91926020600181928685015181550194019201610920565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602083106109ea575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b8181106109df5750610854565b5f81556001016109d2565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506109a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b01519050848061081c565b601f198216905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b818110610ab157509583600195969710610a99575b505050811b015f5561082f565b01515f1960f88460031b161c19169055848080610a8c565b9192602060018192868b015181550194019201610a77565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610b41575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610b365750610803565b5f8155600101610b29565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639150610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b3461011957604060031936011261011957610be0610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600560205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610119575f600319360112610119575f5f54610c6881610dd4565b808452906001811690811561054b5750600114610c8f576104e9836104dd81850382610d5b565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cd1575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610cb9565b601f19601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b81601f820112156101195780359067ffffffffffffffff8211610a125760405192610db36020601f19601f8601160185610d5b565b8284526020838301011161011957815f926020809301838601378301015290565b90600182811c92168015610e1b575b6020831014610dee57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610de3565b6006544603610e345760075490565b610e3c610e3f565b90565b6040515f905f549181610e5184610dd4565b9182825260208201946001811690815f14610f525750600114610ef5575b610e7b92500382610d5b565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eef60c082610d5b565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7b92820101610e6f565b6020919350806001915483858801015201910190918392610f1e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610e7b92151560051b82016020019050610e6f565b90808210610fa05781039081116103595790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152fd5b908101908181116103595781106110125790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152fdfea26469706673582212203b37eccc6df8994374821686c301ca56081af0b88afa142f00a00791b25b2caf64736f6c634300081c0033","sourceMap":"369:7950:16:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610c4c57508063095ea7b314610bc75780631624f6c61461077657806318160ddd1461075957806323b872dd14610659578063313ce567146106395780633644e5151461061757806370a08231146105d25780637ecebe001461058d57806395d89b4114610495578063a9059cbb146103e4578063d505accf1461011d5763dd62ed3e146100ab575f80fd5b34610119576040600319360112610119576100c4610d15565b73ffffffffffffffffffffffffffffffffffffffff6100e1610d38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101195760e060031936011261011957610136610d15565b61013e610d38565b604435606435916084359260ff8416809403610119574281106103865773ffffffffffffffffffffffffffffffffffffffff610178610e25565b951693845f52600860205260405f20908154965f198814610359576020945f9460809460018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261020d60e082610d5b565b51902060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610254606282610d5b565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561034e5773ffffffffffffffffffffffffffffffffffffffff5f511680151580610345575b156102e7577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b5082811461029f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b34610119576040600319360112610119576103fd610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205261042c8360405f2054610f8c565b335f52600460205260405f20551690815f5260046020526104518160405f2054610ffe565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b34610119575f600319360112610119576040515f6001546104b581610dd4565b808452906001811690811561054b57506001146104ed575b6104e9836104dd81850382610d5b565b60405191829182610ceb565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610531575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610519565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104dd90506104cd565b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff6105bb610d15565b165f526008602052602060405f2054604051908152f35b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff610600610d15565b165f526004602052602060405f2054604051908152f35b34610119575f600319360112610119576020610631610e25565b604051908152f35b34610119575f60031936011261011957602060ff60025416604051908152f35b3461011957606060031936011261011957610672610d15565b61067a610d38565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526005835260405f208233165f52835260405f2054865f198203610732575b5050845f52600483526106f18660405f2054610f8c565b855f526004845260405f20551693845f52600482526107148160405f2054610ffe565b855f526004835260405f2055604051908152a3602060405160018152f35b61073b91610f8c565b855f526005845260405f208333165f52845260405f205586866106da565b34610119575f600319360112610119576020600354604051908152f35b346101195760606003193601126101195760043567ffffffffffffffff8111610119576107a7903690600401610d7e565b60243567ffffffffffffffff8111610119576107c7903690600401610d7e565b60443560ff81168091036101195760ff60095416610b6957825167ffffffffffffffff8111610a12576107fa5f54610dd4565b601f8111610ac9575b506020601f8211600114610a4a57819293945f92610a3f575b50505f198260011b9260031b1c1916175f555b815167ffffffffffffffff8111610a125761084b600154610dd4565b601f8111610971575b50602092601f82116001146108f257928192935f926108e7575b50505f198260011b9260031b1c1916176001555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006002541617600255466006556108b7610e3f565b600755600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b01519050838061086e565b601f1982169360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b8681106109595750836001959610610941575b505050811b01600155610882565b01515f1960f88460031b161c19169055838080610933565b91926020600181928685015181550194019201610920565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602083106109ea575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b8181106109df5750610854565b5f81556001016109d2565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506109a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b01519050848061081c565b601f198216905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b818110610ab157509583600195969710610a99575b505050811b015f5561082f565b01515f1960f88460031b161c19169055848080610a8c565b9192602060018192868b015181550194019201610a77565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610b41575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610b365750610803565b5f8155600101610b29565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639150610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b3461011957604060031936011261011957610be0610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600560205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610119575f600319360112610119575f5f54610c6881610dd4565b808452906001811690811561054b5750600114610c8f576104e9836104dd81850382610d5b565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cd1575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610cb9565b601f19601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b81601f820112156101195780359067ffffffffffffffff8211610a125760405192610db36020601f19601f8601160185610d5b565b8284526020838301011161011957815f926020809301838601378301015290565b90600182811c92168015610e1b575b6020831014610dee57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610de3565b6006544603610e345760075490565b610e3c610e3f565b90565b6040515f905f549181610e5184610dd4565b9182825260208201946001811690815f14610f525750600114610ef5575b610e7b92500382610d5b565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eef60c082610d5b565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7b92820101610e6f565b6020919350806001915483858801015201910190918392610f1e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610e7b92151560051b82016020019050610e6f565b90808210610fa05781039081116103595790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152fd5b908101908181116103595781106110125790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152fdfea26469706673582212203b37eccc6df8994374821686c301ca56081af0b88afa142f00a00791b25b2caf64736f6c634300081c0033","sourceMap":"369:7950:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;1659:10;369:7950;;;;;;1659:26;369:7950;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;4416:15;4404:27;;369:7950;;;4617:18;;:::i;:::-;369:7950;;;;;;5026:6;369:7950;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;4692:413;369:7950;4692:413;;;369:7950;4732:157;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:413;;;369:7950;4692:413;;:::i;:::-;369:7950;4657:470;;369:7950;;4547:598;;;;369:7950;;;;;;;;;;;;;4547:598;;;;;;:::i;:::-;369:7950;4520:639;;369:7950;;;;;;;;;;;;;;;;;;;;;;4497:717;;;369:7950;4497:717;;;;;369:7950;;4497:717;369:7950;5233:30;;;:59;;;369:7950;;;;5383:31;369:7950;;;;;5322:10;369:7950;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;5383:31;369:7950;;;;;;;;;;;;;;;;;;;;;;;;5233:59;5267:25;;;;5233:59;;4497:717;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;3420:10;;369:7950;;;;;3404:36;369:7950;;;;;3404:36;:::i;:::-;3420:10;369:7950;;;;;;;;;;;;;;;;;3467:28;369:7950;;;;;3467:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3511:32;369:7950;3420:10;3511:32;;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;857:7;369:7950;;;;:::i;:::-;;;;;857:7;369:7950;;;857:7;;;;369:7950;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;857:7;369:7950;;;;;;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;;;;857:7;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;1970:41;369:7950;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;953:9;369:7950;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;:::i;:::-;3995:26;369:7950;;;;;;;;;;;3709:10;369:7950;;;;;3726:10;;369:7950;-1:-1:-1;369:7950:16;;;;-1:-1:-1;369:7950:16;;3788:22;-1:-1:-1;;3788:22:16;;3784:80;;369:7950;;;;;;;;;3894:30;369:7950;;;;;3894:30;:::i;:::-;369:7950;;;;;;;;;;;;;;;;;;3951:28;369:7950;;;;;3951:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3995:26;369:7950;;;;;;;3784:80;3843:21;;;:::i;:::-;369:7950;;;3709:10;369:7950;;;;;3726:10;;369:7950;-1:-1:-1;369:7950:16;;;;-1:-1:-1;369:7950:16;;3784:80;;;;369:7950;;;;;-1:-1:-1;;369:7950:16;;;;;;1403:12;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;2611:11;369:7950;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;2680:17;369:7950;;;;;;;;2680:17;369:7950;;;2707:21;369:7950;;;2707:21;369:7950;7884:53;2739:33;369:7950;2809:24;;:::i;:::-;2782:51;369:7950;2611:11;369:7950;;;;2680:17;369:7950;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;;369:7950:16;;;2680:17;369:7950;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;2680:17;369:7950;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;3167:10;;369:7950;;3156:10;369:7950;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;;3167:10;3212:37;369:7950;3167:10;3212:37;;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;5427:178;5528:16;369:7950;7884:53;5510:34;:88;;5547:24;369:7950;5427:178;:::o;5510:88::-;5574:24;;:::i;:::-;5427:178;:::o;5611:404::-;369:7950;;5882:5;369:7950;5882:5;369:7950;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5866:23;;369:7950;;;5725:273;;369:7950;5753:95;369:7950;;;;;;5907:14;369:7950;;;;7884:53;369:7950;;;;5979:4;369:7950;;;;;5725:273;;;;;;:::i;:::-;369:7950;5702:306;;5611:404;:::o;369:7950::-;-1:-1:-1;5882:5:16;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;-1:-1:-1;369:7950:16;;7038:154;;7124:6;;;369:7950;;;;;;;;;7038:154;:::o;369:7950::-;;;;;;;;;;;;;;;;;;;;;;;6859:173;;369:7950;;;;;;;;6972:6;;369:7950;;6859:173;:::o;369:7950::-;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","initialize(string,string,uint8)":"1624f6c6","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"},\"initialize(string,string,uint8)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"notice\":\"This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"},"initialize(string,string,uint8)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC20.sol":"MockERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file +{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576110a6908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610c4c57508063095ea7b314610bc75780631624f6c61461077657806318160ddd1461075957806323b872dd14610659578063313ce567146106395780633644e5151461061757806370a08231146105d25780637ecebe001461058d57806395d89b4114610495578063a9059cbb146103e4578063d505accf1461011d5763dd62ed3e146100ab575f80fd5b34610119576040600319360112610119576100c4610d15565b73ffffffffffffffffffffffffffffffffffffffff6100e1610d38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101195760e060031936011261011957610136610d15565b61013e610d38565b604435606435916084359260ff8416809403610119574281106103865773ffffffffffffffffffffffffffffffffffffffff610178610e25565b951693845f52600860205260405f20908154965f198814610359576020945f9460809460018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261020d60e082610d5b565b51902060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610254606282610d5b565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561034e5773ffffffffffffffffffffffffffffffffffffffff5f511680151580610345575b156102e7577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b5082811461029f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b34610119576040600319360112610119576103fd610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205261042c8360405f2054610f8c565b335f52600460205260405f20551690815f5260046020526104518160405f2054610ffe565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b34610119575f600319360112610119576040515f6001546104b581610dd4565b808452906001811690811561054b57506001146104ed575b6104e9836104dd81850382610d5b565b60405191829182610ceb565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610531575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610519565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104dd90506104cd565b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff6105bb610d15565b165f526008602052602060405f2054604051908152f35b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff610600610d15565b165f526004602052602060405f2054604051908152f35b34610119575f600319360112610119576020610631610e25565b604051908152f35b34610119575f60031936011261011957602060ff60025416604051908152f35b3461011957606060031936011261011957610672610d15565b61067a610d38565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526005835260405f208233165f52835260405f2054865f198203610732575b5050845f52600483526106f18660405f2054610f8c565b855f526004845260405f20551693845f52600482526107148160405f2054610ffe565b855f526004835260405f2055604051908152a3602060405160018152f35b61073b91610f8c565b855f526005845260405f208333165f52845260405f205586866106da565b34610119575f600319360112610119576020600354604051908152f35b346101195760606003193601126101195760043567ffffffffffffffff8111610119576107a7903690600401610d7e565b60243567ffffffffffffffff8111610119576107c7903690600401610d7e565b60443560ff81168091036101195760ff60095416610b6957825167ffffffffffffffff8111610a12576107fa5f54610dd4565b601f8111610ac9575b506020601f8211600114610a4a57819293945f92610a3f575b50505f198260011b9260031b1c1916175f555b815167ffffffffffffffff8111610a125761084b600154610dd4565b601f8111610971575b50602092601f82116001146108f257928192935f926108e7575b50505f198260011b9260031b1c1916176001555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006002541617600255466006556108b7610e3f565b600755600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b01519050838061086e565b601f1982169360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b8681106109595750836001959610610941575b505050811b01600155610882565b01515f1960f88460031b161c19169055838080610933565b91926020600181928685015181550194019201610920565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602083106109ea575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b8181106109df5750610854565b5f81556001016109d2565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506109a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b01519050848061081c565b601f198216905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b818110610ab157509583600195969710610a99575b505050811b015f5561082f565b01515f1960f88460031b161c19169055848080610a8c565b9192602060018192868b015181550194019201610a77565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610b41575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610b365750610803565b5f8155600101610b29565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639150610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b3461011957604060031936011261011957610be0610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600560205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610119575f600319360112610119575f5f54610c6881610dd4565b808452906001811690811561054b5750600114610c8f576104e9836104dd81850382610d5b565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cd1575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610cb9565b601f19601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b81601f820112156101195780359067ffffffffffffffff8211610a125760405192610db36020601f19601f8601160185610d5b565b8284526020838301011161011957815f926020809301838601378301015290565b90600182811c92168015610e1b575b6020831014610dee57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610de3565b6006544603610e345760075490565b610e3c610e3f565b90565b6040515f905f549181610e5184610dd4565b9182825260208201946001811690815f14610f525750600114610ef5575b610e7b92500382610d5b565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eef60c082610d5b565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7b92820101610e6f565b6020919350806001915483858801015201910190918392610f1e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610e7b92151560051b82016020019050610e6f565b90808210610fa05781039081116103595790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152fd5b908101908181116103595781106110125790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152fdfea26469706673582212203918ae6cf4360b39b3f65aa2fd57c53ed7c741d60911a327fe31b83a1890cbe764736f6c634300081c0033","sourceMap":"369:7950:16:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde0314610c4c57508063095ea7b314610bc75780631624f6c61461077657806318160ddd1461075957806323b872dd14610659578063313ce567146106395780633644e5151461061757806370a08231146105d25780637ecebe001461058d57806395d89b4114610495578063a9059cbb146103e4578063d505accf1461011d5763dd62ed3e146100ab575f80fd5b34610119576040600319360112610119576100c4610d15565b73ffffffffffffffffffffffffffffffffffffffff6100e1610d38565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b346101195760e060031936011261011957610136610d15565b61013e610d38565b604435606435916084359260ff8416809403610119574281106103865773ffffffffffffffffffffffffffffffffffffffff610178610e25565b951693845f52600860205260405f20908154965f198814610359576020945f9460809460018b0190556040519073ffffffffffffffffffffffffffffffffffffffff888301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b6040850152169a8b6060840152898784015260a083015260c082015260c0815261020d60e082610d5b565b51902060405190868201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610254606282610d5b565b519020906040519182528482015260a435604082015260c435606082015282805260015afa1561034e5773ffffffffffffffffffffffffffffffffffffffff5f511680151580610345575b156102e7577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916020915f526005825260405f20855f5282528060405f2055604051908152a3005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b5082811461029f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b34610119576040600319360112610119576103fd610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600460205261042c8360405f2054610f8c565b335f52600460205260405f20551690815f5260046020526104518160405f2054610ffe565b825f52600460205260405f20556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3602060405160018152f35b34610119575f600319360112610119576040515f6001546104b581610dd4565b808452906001811690811561054b57506001146104ed575b6104e9836104dd81850382610d5b565b60405191829182610ceb565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610531575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610519565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104dd90506104cd565b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff6105bb610d15565b165f526008602052602060405f2054604051908152f35b346101195760206003193601126101195773ffffffffffffffffffffffffffffffffffffffff610600610d15565b165f526004602052602060405f2054604051908152f35b34610119575f600319360112610119576020610631610e25565b604051908152f35b34610119575f60031936011261011957602060ff60025416604051908152f35b3461011957606060031936011261011957610672610d15565b61067a610d38565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff80604435951693845f526005835260405f208233165f52835260405f2054865f198203610732575b5050845f52600483526106f18660405f2054610f8c565b855f526004845260405f20551693845f52600482526107148160405f2054610ffe565b855f526004835260405f2055604051908152a3602060405160018152f35b61073b91610f8c565b855f526005845260405f208333165f52845260405f205586866106da565b34610119575f600319360112610119576020600354604051908152f35b346101195760606003193601126101195760043567ffffffffffffffff8111610119576107a7903690600401610d7e565b60243567ffffffffffffffff8111610119576107c7903690600401610d7e565b60443560ff81168091036101195760ff60095416610b6957825167ffffffffffffffff8111610a12576107fa5f54610dd4565b601f8111610ac9575b506020601f8211600114610a4a57819293945f92610a3f575b50505f198260011b9260031b1c1916175f555b815167ffffffffffffffff8111610a125761084b600154610dd4565b601f8111610971575b50602092601f82116001146108f257928192935f926108e7575b50505f198260011b9260031b1c1916176001555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006002541617600255466006556108b7610e3f565b600755600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b01519050838061086e565b601f1982169360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b8681106109595750836001959610610941575b505050811b01600155610882565b01515f1960f88460031b161c19169055838080610933565b91926020600181928685015181550194019201610920565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602083106109ea575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b8181106109df5750610854565b5f81556001016109d2565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506109a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b01519050848061081c565b601f198216905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b818110610ab157509583600195969710610a99575b505050811b015f5561082f565b01515f1960f88460031b161c19169055848080610a8c565b9192602060018192868b015181550194019201610a77565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610b41575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610b365750610803565b5f8155600101610b29565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639150610aff565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b3461011957604060031936011261011957610be0610d15565b73ffffffffffffffffffffffffffffffffffffffff60243591335f52600560205260405f208282165f526020528260405f205560405192835216907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610119575f600319360112610119575f5f54610c6881610dd4565b808452906001811690811561054b5750600114610c8f576104e9836104dd81850382610d5b565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cd1575090915081016020016104dd6104cd565b919260018160209254838588010152019101909291610cb9565b601f19601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011957565b90601f601f19910116810190811067ffffffffffffffff821117610a1257604052565b81601f820112156101195780359067ffffffffffffffff8211610a125760405192610db36020601f19601f8601160185610d5b565b8284526020838301011161011957815f926020809301838601378301015290565b90600182811c92168015610e1b575b6020831014610dee57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610de3565b6006544603610e345760075490565b610e3c610e3f565b90565b6040515f905f549181610e5184610dd4565b9182825260208201946001811690815f14610f525750600114610ef5575b610e7b92500382610d5b565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610eef60c082610d5b565b51902090565b505f80805290917f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818310610f36575050906020610e7b92820101610e6f565b6020919350806001915483858801015201910190918392610f1e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016865250610e7b92151560051b82016020019050610e6f565b90808210610fa05781039081116103595790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f77000000006044820152fd5b908101908181116103595781106110125790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f7700000000000000006044820152fdfea26469706673582212203918ae6cf4360b39b3f65aa2fd57c53ed7c741d60911a327fe31b83a1890cbe764736f6c634300081c0033","sourceMap":"369:7950:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;1659:10;369:7950;;;;;;1659:26;369:7950;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;4416:15;4404:27;;369:7950;;;4617:18;;:::i;:::-;369:7950;;;;;;5026:6;369:7950;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;4692:413;369:7950;4692:413;;;369:7950;4732:157;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:413;;;369:7950;4692:413;;:::i;:::-;369:7950;4657:470;;369:7950;;4547:598;;;;369:7950;;;;;;;;;;;;;4547:598;;;;;;:::i;:::-;369:7950;4520:639;;369:7950;;;;;;;;;;;;;;;;;;;;;;4497:717;;;369:7950;4497:717;;;;;369:7950;;4497:717;369:7950;5233:30;;;:59;;;369:7950;;;;5383:31;369:7950;;;;;5322:10;369:7950;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;5383:31;369:7950;;;;;;;;;;;;;;;;;;;;;;;;5233:59;5267:25;;;;5233:59;;4497:717;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;3420:10;;369:7950;;;;;3404:36;369:7950;;;;;3404:36;:::i;:::-;3420:10;369:7950;;;;;;;;;;;;;;;;;3467:28;369:7950;;;;;3467:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3511:32;369:7950;3420:10;3511:32;;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;857:7;369:7950;;;;:::i;:::-;;;;;857:7;369:7950;;;857:7;;;;369:7950;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;857:7;369:7950;;;;;;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;;;;857:7;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;1970:41;369:7950;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;953:9;369:7950;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;:::i;:::-;3995:26;369:7950;;;;;;;;;;;3709:10;369:7950;;;;;3726:10;;369:7950;-1:-1:-1;369:7950:16;;;;-1:-1:-1;369:7950:16;;3788:22;-1:-1:-1;;3788:22:16;;3784:80;;369:7950;;;;;;;;;3894:30;369:7950;;;;;3894:30;:::i;:::-;369:7950;;;;;;;;;;;;;;;;;;3951:28;369:7950;;;;;3951:28;:::i;:::-;369:7950;;;;;;;;;;;;;;;3995:26;369:7950;;;;;;;3784:80;3843:21;;;:::i;:::-;369:7950;;;3709:10;369:7950;;;;;3726:10;;369:7950;-1:-1:-1;369:7950:16;;;;-1:-1:-1;369:7950:16;;3784:80;;;;369:7950;;;;;-1:-1:-1;;369:7950:16;;;;;;1403:12;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;2611:11;369:7950;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;2680:17;369:7950;;;;;;;;2680:17;369:7950;;;2707:21;369:7950;;;2707:21;369:7950;7884:53;2739:33;369:7950;2809:24;;:::i;:::-;2782:51;369:7950;2611:11;369:7950;;;;2680:17;369:7950;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;;369:7950:16;;;2680:17;369:7950;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;2680:17;369:7950;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2680:17;369:7950;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;3167:10;;369:7950;;3156:10;369:7950;;;;;;;;-1:-1:-1;369:7950:16;;;;;-1:-1:-1;369:7950:16;;;;;;;;3167:10;3212:37;369:7950;3167:10;3212:37;;369:7950;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;-1:-1:-1;369:7950:16;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;369:7950:16;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;369:7950:16;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;5427:178;5528:16;369:7950;7884:53;5510:34;:88;;5547:24;369:7950;5427:178;:::o;5510:88::-;5574:24;;:::i;:::-;5427:178;:::o;5611:404::-;369:7950;;5882:5;369:7950;5882:5;369:7950;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5866:23;;369:7950;;;5725:273;;369:7950;5753:95;369:7950;;;;;;5907:14;369:7950;;;;7884:53;369:7950;;;;5979:4;369:7950;;;;;5725:273;;;;;;:::i;:::-;369:7950;5702:306;;5611:404;:::o;369:7950::-;-1:-1:-1;5882:5:16;369:7950;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;369:7950:16;;;;;;;;;;;-1:-1:-1;369:7950:16;;7038:154;;7124:6;;;369:7950;;;;;;;;;7038:154;:::o;369:7950::-;;;;;;;;;;;;;;;;;;;;;;;6859:173;;369:7950;;;;;;;;6972:6;;369:7950;;6859:173;:::o;369:7950::-;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","initialize(string,string,uint8)":"1624f6c6","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC20.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"},\"initialize(string,string,uint8)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"notice\":\"This is a mock contract of the ERC20 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"},"initialize(string,string,uint8)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC20.sol":"MockERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"}},"version":1},"id":16} \ No newline at end of file diff --git a/out/MockERC721.sol/MockERC721.json b/out/MockERC721.sol/MockERC721.json index cf2e9bb..93edbd8 100644 --- a/out/MockERC721.sol/MockERC721.json +++ b/out/MockERC721.sol/MockERC721.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576112e2908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cd05750806306fdde0314610c2e578063081812fc14610bee578063095ea7b314610b1957806323b872dd14610b0757806342842e0e146109f65780634cd88b76146105ee5780636352211e1461054957806370a08231146104a057806395d89b41146103a0578063a22cb465146102f0578063b88d4fde14610171578063c87b56dd1461012d5763e985e9c5146100b6575f80fd5b34610129576040600319360112610129576100cf610dc4565b73ffffffffffffffffffffffffffffffffffffffff6100ec610de7565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b34610129576020600319360112610129576040516020815260208181601f19601f6060518084860152806080604087015e5f84808388010101520116820101030190f35b608060031936011261012957610185610dc4565b61018d610de7565b9060443560643567ffffffffffffffff81116101295736602382011215610129576101c2903690602481600401359101610e81565b926101ce828285610f9b565b803b159283156101e4575b6101e284611247565b005b602093505f73ffffffffffffffffffffffffffffffffffffffff8092610252604051988997889687947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190610d9f565b0393165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f916102b6575b5016148280806101d9565b6102d8915060203d6020116102de575b6102d08183610e5e565b81019061120f565b846102ab565b503d6102c6565b6040513d5f823e3d90fd5b3461012957604060031936011261012957610309610dc4565b602435908115158092036101295773ffffffffffffffffffffffffffffffffffffffff90335f52600560205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b34610129575f600319360112610129576040515f6001546103c081610ee5565b808452906001811690811561045e5750600114610400575b6103fc836103e881850382610e5e565b604051918291602083526020830190610d9f565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610444575090915081016020016103e86103d8565b91926001816020925483858801015201910190929161042c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506103e890506103d8565b346101295760206003193601126101295773ffffffffffffffffffffffffffffffffffffffff6104ce610dc4565b1680156104eb575f526003602052602060405f2054604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b34610129576020600319360112610129576004355f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416801561059057602090604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b346101295760406003193601126101295760043567ffffffffffffffff81116101295761061f903690600401610ec7565b60243567ffffffffffffffff81116101295761063f903690600401610ec7565b60ff6006541661099857815167ffffffffffffffff8111610843576106645f54610ee5565b601f81116108f8575b50602092601f821160011461087b57928192935f92610870575b50505f198260011b9260031b1c1916175f555b805167ffffffffffffffff8111610843576106b6600154610ee5565b601f81116107a2575b50602091601f8211600114610724579181925f92610719575b50505f198260011b9260031b1c1916176001555b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b0151905082806106d8565b601f1982169260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b85811061078a57508360019510610772575b505050811b016001556106ec565b01515f1960f88460031b161c19169055828080610764565b91926020600181928685015181550194019201610752565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601906020831061081b575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b81811061081057506106bf565b5f8155600101610803565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506107d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508380610687565b601f198216935f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b8681106108e057508360019596106108c8575b505050811b015f5561069a565b01515f1960f88460031b161c191690558380806108bb565b919260206001819286850151815501940192016108a8565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610970575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610965575061066d565b5f8155600101610958565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915061092e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b6109ff36610e0a565b91610a0b838383610f9b565b813b15918215610a1f575b6101e283611247565b6020925073ffffffffffffffffffffffffffffffffffffffff915f8360a49360405197889687957f150b7a02000000000000000000000000000000000000000000000000000000008752336004880152166024860152604485015260806064850152826084850152165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f91610ae8575b5016148280610a16565b610b01915060203d6020116102de576102d08183610e5e565b84610ade565b6101e2610b1336610e0a565b91610f9b565b604060031936011261012957610b2d610dc4565b60243590815f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f205416918233148015610bc7575b610b6990610f36565b835f52600460205260405f208282167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b50825f52600560205260405f208233165f52602052610b6960ff60405f2054169050610b60565b34610129576020600319360112610129576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b34610129575f600319360112610129576040515f5f54610c4d81610ee5565b808452906001811690811561045e5750600114610c74576103fc836103e881850382610e5e565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cb6575090915081016020016103e86103d8565b919260018160209254838588010152019101909291610c9e565b3461012957602060031936011261012957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012957817f01ffc9a70000000000000000000000000000000000000000000000000000000060209314908115610d75575b8115610d4b575b5015158152f35b7f5b5e139f0000000000000000000000000000000000000000000000000000000091501483610d44565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610d3d565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b60031960609101126101295760043573ffffffffffffffffffffffffffffffffffffffff81168103610129579060243573ffffffffffffffffffffffffffffffffffffffff81168103610129579060443590565b90601f601f19910116810190811067ffffffffffffffff82111761084357604052565b92919267ffffffffffffffff82116108435760405191610eab601f8201601f191660200184610e5e565b829481845281830111610129578281602093845f960137010152565b9080601f8301121561012957816020610ee293359101610e81565b90565b90600182811c92168015610f2c575b6020831014610eff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610ef4565b15610f3d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b90825f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20541692169182036111b15773ffffffffffffffffffffffffffffffffffffffff1690811561115357803314801561111d575b80156110ed575b61100090610f36565b805f52600360205260405f20805480156110c0575f19019055815f52600360205260405f2080545f1981146110c0576001019055825f52600260205260405f20827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055825f52600460205260405f207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50825f52600460205261100073ffffffffffffffffffffffffffffffffffffffff60405f20541633149050610ff7565b50805f52600560205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416610ff0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b9081602091031261012957517fffffffff00000000000000000000000000000000000000000000000000000000811681036101295790565b1561124e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fdfea2646970667358221220178782eeebc20b8529881a0f5a6589a7f61d5d1b5066e276840887656e3020e664736f6c634300081c0033","sourceMap":"403:7498:17:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cd05750806306fdde0314610c2e578063081812fc14610bee578063095ea7b314610b1957806323b872dd14610b0757806342842e0e146109f65780634cd88b76146105ee5780636352211e1461054957806370a08231146104a057806395d89b41146103a0578063a22cb465146102f0578063b88d4fde14610171578063c87b56dd1461012d5763e985e9c5146100b6575f80fd5b34610129576040600319360112610129576100cf610dc4565b73ffffffffffffffffffffffffffffffffffffffff6100ec610de7565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b34610129576020600319360112610129576040516020815260208181601f19601f6060518084860152806080604087015e5f84808388010101520116820101030190f35b608060031936011261012957610185610dc4565b61018d610de7565b9060443560643567ffffffffffffffff81116101295736602382011215610129576101c2903690602481600401359101610e81565b926101ce828285610f9b565b803b159283156101e4575b6101e284611247565b005b602093505f73ffffffffffffffffffffffffffffffffffffffff8092610252604051988997889687947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190610d9f565b0393165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f916102b6575b5016148280806101d9565b6102d8915060203d6020116102de575b6102d08183610e5e565b81019061120f565b846102ab565b503d6102c6565b6040513d5f823e3d90fd5b3461012957604060031936011261012957610309610dc4565b602435908115158092036101295773ffffffffffffffffffffffffffffffffffffffff90335f52600560205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b34610129575f600319360112610129576040515f6001546103c081610ee5565b808452906001811690811561045e5750600114610400575b6103fc836103e881850382610e5e565b604051918291602083526020830190610d9f565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610444575090915081016020016103e86103d8565b91926001816020925483858801015201910190929161042c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506103e890506103d8565b346101295760206003193601126101295773ffffffffffffffffffffffffffffffffffffffff6104ce610dc4565b1680156104eb575f526003602052602060405f2054604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b34610129576020600319360112610129576004355f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416801561059057602090604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b346101295760406003193601126101295760043567ffffffffffffffff81116101295761061f903690600401610ec7565b60243567ffffffffffffffff81116101295761063f903690600401610ec7565b60ff6006541661099857815167ffffffffffffffff8111610843576106645f54610ee5565b601f81116108f8575b50602092601f821160011461087b57928192935f92610870575b50505f198260011b9260031b1c1916175f555b805167ffffffffffffffff8111610843576106b6600154610ee5565b601f81116107a2575b50602091601f8211600114610724579181925f92610719575b50505f198260011b9260031b1c1916176001555b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b0151905082806106d8565b601f1982169260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b85811061078a57508360019510610772575b505050811b016001556106ec565b01515f1960f88460031b161c19169055828080610764565b91926020600181928685015181550194019201610752565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601906020831061081b575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b81811061081057506106bf565b5f8155600101610803565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506107d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508380610687565b601f198216935f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b8681106108e057508360019596106108c8575b505050811b015f5561069a565b01515f1960f88460031b161c191690558380806108bb565b919260206001819286850151815501940192016108a8565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610970575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610965575061066d565b5f8155600101610958565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915061092e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b6109ff36610e0a565b91610a0b838383610f9b565b813b15918215610a1f575b6101e283611247565b6020925073ffffffffffffffffffffffffffffffffffffffff915f8360a49360405197889687957f150b7a02000000000000000000000000000000000000000000000000000000008752336004880152166024860152604485015260806064850152826084850152165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f91610ae8575b5016148280610a16565b610b01915060203d6020116102de576102d08183610e5e565b84610ade565b6101e2610b1336610e0a565b91610f9b565b604060031936011261012957610b2d610dc4565b60243590815f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f205416918233148015610bc7575b610b6990610f36565b835f52600460205260405f208282167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b50825f52600560205260405f208233165f52602052610b6960ff60405f2054169050610b60565b34610129576020600319360112610129576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b34610129575f600319360112610129576040515f5f54610c4d81610ee5565b808452906001811690811561045e5750600114610c74576103fc836103e881850382610e5e565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cb6575090915081016020016103e86103d8565b919260018160209254838588010152019101909291610c9e565b3461012957602060031936011261012957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012957817f01ffc9a70000000000000000000000000000000000000000000000000000000060209314908115610d75575b8115610d4b575b5015158152f35b7f5b5e139f0000000000000000000000000000000000000000000000000000000091501483610d44565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610d3d565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b60031960609101126101295760043573ffffffffffffffffffffffffffffffffffffffff81168103610129579060243573ffffffffffffffffffffffffffffffffffffffff81168103610129579060443590565b90601f601f19910116810190811067ffffffffffffffff82111761084357604052565b92919267ffffffffffffffff82116108435760405191610eab601f8201601f191660200184610e5e565b829481845281830111610129578281602093845f960137010152565b9080601f8301121561012957816020610ee293359101610e81565b90565b90600182811c92168015610f2c575b6020831014610eff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610ef4565b15610f3d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b90825f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20541692169182036111b15773ffffffffffffffffffffffffffffffffffffffff1690811561115357803314801561111d575b80156110ed575b61100090610f36565b805f52600360205260405f20805480156110c0575f19019055815f52600360205260405f2080545f1981146110c0576001019055825f52600260205260405f20827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055825f52600460205260405f207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50825f52600460205261100073ffffffffffffffffffffffffffffffffffffffff60405f20541633149050610ff7565b50805f52600560205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416610ff0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b9081602091031261012957517fffffffff00000000000000000000000000000000000000000000000000000000811681036101295790565b1561124e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fdfea2646970667358221220178782eeebc20b8529881a0f5a6589a7f61d5d1b5066e276840887656e3020e664736f6c634300081c0033","sourceMap":"403:7498:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;2195:17;403:7498;;;;;;2195:34;403:7498;-1:-1:-1;403:7498:17;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4929:2;;;;;;:::i;:::-;7796:65;;7878:14;;;;4964:175;;403:7498;4943:238;;;:::i;:::-;403:7498;4964:175;403:7498;;;;;;;;;;5000:69;;;;;;;403:7498;5000:69;;5042:10;403:7498;5000:69;;403:7498;;;;;;;;;;;;;;;;;;;;:::i;:::-;5000:69;403:7498;;5000:69;;;;;;403:7498;;5000:69;4943:238;5000:69;403:7498;5000:69;;;4964:175;403:7498;;5000:139;4964:175;;;;;5000:69;;;;403:7498;5000:69;403:7498;5000:69;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;403:7498;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;;;;;;;;;;3547:10;;403:7498;;3529:17;403:7498;;;;;;;;-1:-1:-1;403:7498:17;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;3547:10;3595:46;403:7498;3547:10;3595:46;;403:7498;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;873:7;403:7498;;;;:::i;:::-;;;;;873:7;403:7498;;;873:7;;;;403:7498;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;873:7;403:7498;;;;;;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;;;;873:7;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;:::i;:::-;;1543:19;;403:7498;;;;1597:10;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;1389:8;403:7498;;;;;;;;1380:36;;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;2818:11;403:7498;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;2887:17;403:7498;;;;;;;;2887:17;403:7498;;2818:11;403:7498;;;;2887:17;403:7498;;;;;;;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;;403:7498:17;;;2887:17;403:7498;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;2887:17;403:7498;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4482:2;;;;;;:::i;:::-;7796:65;;7878:14;;;;4517:173;;403:7498;4496:236;;;:::i;4517:173::-;403:7498;;;;;;;4553:67;403:7498;;;4553:67;;;;;403:7498;4553:67;;4595:10;403:7498;4553:67;;403:7498;;;;;;;;;;;;;;;;;;;;;4553:67;;;;;;403:7498;;4553:67;4496:236;4553:67;403:7498;4553:67;;;4517:173;403:7498;;4553:137;4517:173;;;;4553:67;;;;403:7498;4553:67;403:7498;4553:67;;;;;;;:::i;:::-;;;;403:7498;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;;;;3232:8;403:7498;;;;;;;;;3263:10;;;:19;:59;;;;403:7498;3255:86;;;:::i;:::-;403:7498;;;;;;;;;;;;;;;;;;;;3394:28;;403:7498;3394:28;;403:7498;3263:59;403:7498;;;;3286:17;403:7498;;;;;3263:10;;403:7498;-1:-1:-1;403:7498:17;;;3255:86;403:7498;;-1:-1:-1;403:7498:17;;;3263:59;;;;403:7498;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;5484:25;403:7498;;5484:25;;:100;;;;;403:7498;5484:175;;;;403:7498;;;;;;;5484:175;403:7498;5634:25;;;5484:175;;;:100;403:7498;5559:25;;;-1:-1:-1;5484:100:17;;403:7498;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;3654:693;;403:7498;-1:-1:-1;403:7498:17;3772:8;403:7498;;;;;-1:-1:-1;403:7498:17;;;;;3764:20;;;403:7498;;;;3818:16;;;403:7498;;3888:10;;:18;:57;;;;3654:693;3888:91;;;;3654:693;3867:152;;;:::i;:::-;403:7498;-1:-1:-1;403:7498:17;4195:10;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;;403:7498:17;;;;-1:-1:-1;403:7498:17;4195:10;403:7498;;;-1:-1:-1;403:7498:17;;;-1:-1:-1;;403:7498:17;;;;;;;;;-1:-1:-1;403:7498:17;3772:8;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;;;;-1:-1:-1;403:7498:17;4286:12;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;4318:22;-1:-1:-1;4318:22:17;;3654:693::o;403:7498::-;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;403:7498:17;3888:91;403:7498;;-1:-1:-1;403:7498:17;3963:12;403:7498;;3867:152;403:7498;;-1:-1:-1;403:7498:17;;;3888:10;3949:30;3888:91;;;;:57;403:7498;;-1:-1:-1;403:7498:17;3910:17;403:7498;;;-1:-1:-1;403:7498:17;;3888:10;403:7498;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;403:7498:17;;;3888:57;;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","initialize(string,string)":"4cd88b76","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"initialize(string,string)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"}},\"notice\":\"This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"initialize(string,string)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"MockERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file +{"abi":[{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_operator","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true,"internalType":"address"},{"name":"_to","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608080604052346015576112e2908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cd05750806306fdde0314610c2e578063081812fc14610bee578063095ea7b314610b1957806323b872dd14610b0757806342842e0e146109f65780634cd88b76146105ee5780636352211e1461054957806370a08231146104a057806395d89b41146103a0578063a22cb465146102f0578063b88d4fde14610171578063c87b56dd1461012d5763e985e9c5146100b6575f80fd5b34610129576040600319360112610129576100cf610dc4565b73ffffffffffffffffffffffffffffffffffffffff6100ec610de7565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b34610129576020600319360112610129576040516020815260208181601f19601f6060518084860152806080604087015e5f84808388010101520116820101030190f35b608060031936011261012957610185610dc4565b61018d610de7565b9060443560643567ffffffffffffffff81116101295736602382011215610129576101c2903690602481600401359101610e81565b926101ce828285610f9b565b803b159283156101e4575b6101e284611247565b005b602093505f73ffffffffffffffffffffffffffffffffffffffff8092610252604051988997889687947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190610d9f565b0393165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f916102b6575b5016148280806101d9565b6102d8915060203d6020116102de575b6102d08183610e5e565b81019061120f565b846102ab565b503d6102c6565b6040513d5f823e3d90fd5b3461012957604060031936011261012957610309610dc4565b602435908115158092036101295773ffffffffffffffffffffffffffffffffffffffff90335f52600560205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b34610129575f600319360112610129576040515f6001546103c081610ee5565b808452906001811690811561045e5750600114610400575b6103fc836103e881850382610e5e565b604051918291602083526020830190610d9f565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610444575090915081016020016103e86103d8565b91926001816020925483858801015201910190929161042c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506103e890506103d8565b346101295760206003193601126101295773ffffffffffffffffffffffffffffffffffffffff6104ce610dc4565b1680156104eb575f526003602052602060405f2054604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b34610129576020600319360112610129576004355f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416801561059057602090604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b346101295760406003193601126101295760043567ffffffffffffffff81116101295761061f903690600401610ec7565b60243567ffffffffffffffff81116101295761063f903690600401610ec7565b60ff6006541661099857815167ffffffffffffffff8111610843576106645f54610ee5565b601f81116108f8575b50602092601f821160011461087b57928192935f92610870575b50505f198260011b9260031b1c1916175f555b805167ffffffffffffffff8111610843576106b6600154610ee5565b601f81116107a2575b50602091601f8211600114610724579181925f92610719575b50505f198260011b9260031b1c1916176001555b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b0151905082806106d8565b601f1982169260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b85811061078a57508360019510610772575b505050811b016001556106ec565b01515f1960f88460031b161c19169055828080610764565b91926020600181928685015181550194019201610752565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601906020831061081b575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b81811061081057506106bf565b5f8155600101610803565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506107d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508380610687565b601f198216935f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b8681106108e057508360019596106108c8575b505050811b015f5561069a565b01515f1960f88460031b161c191690558380806108bb565b919260206001819286850151815501940192016108a8565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610970575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610965575061066d565b5f8155600101610958565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915061092e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b6109ff36610e0a565b91610a0b838383610f9b565b813b15918215610a1f575b6101e283611247565b6020925073ffffffffffffffffffffffffffffffffffffffff915f8360a49360405197889687957f150b7a02000000000000000000000000000000000000000000000000000000008752336004880152166024860152604485015260806064850152826084850152165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f91610ae8575b5016148280610a16565b610b01915060203d6020116102de576102d08183610e5e565b84610ade565b6101e2610b1336610e0a565b91610f9b565b604060031936011261012957610b2d610dc4565b60243590815f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f205416918233148015610bc7575b610b6990610f36565b835f52600460205260405f208282167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b50825f52600560205260405f208233165f52602052610b6960ff60405f2054169050610b60565b34610129576020600319360112610129576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b34610129575f600319360112610129576040515f5f54610c4d81610ee5565b808452906001811690811561045e5750600114610c74576103fc836103e881850382610e5e565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cb6575090915081016020016103e86103d8565b919260018160209254838588010152019101909291610c9e565b3461012957602060031936011261012957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012957817f01ffc9a70000000000000000000000000000000000000000000000000000000060209314908115610d75575b8115610d4b575b5015158152f35b7f5b5e139f0000000000000000000000000000000000000000000000000000000091501483610d44565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610d3d565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b60031960609101126101295760043573ffffffffffffffffffffffffffffffffffffffff81168103610129579060243573ffffffffffffffffffffffffffffffffffffffff81168103610129579060443590565b90601f601f19910116810190811067ffffffffffffffff82111761084357604052565b92919267ffffffffffffffff82116108435760405191610eab601f8201601f191660200184610e5e565b829481845281830111610129578281602093845f960137010152565b9080601f8301121561012957816020610ee293359101610e81565b90565b90600182811c92168015610f2c575b6020831014610eff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610ef4565b15610f3d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b90825f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20541692169182036111b15773ffffffffffffffffffffffffffffffffffffffff1690811561115357803314801561111d575b80156110ed575b61100090610f36565b805f52600360205260405f20805480156110c0575f19019055815f52600360205260405f2080545f1981146110c0576001019055825f52600260205260405f20827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055825f52600460205260405f207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50825f52600460205261100073ffffffffffffffffffffffffffffffffffffffff60405f20541633149050610ff7565b50805f52600560205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416610ff0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b9081602091031261012957517fffffffff00000000000000000000000000000000000000000000000000000000811681036101295790565b1561124e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fdfea26469706673582212203534c1818e7d4b7435d7ab462b4dbd08626b929aee5b9569e552a6f3aa662f1864736f6c634300081c0033","sourceMap":"403:7498:17:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cd05750806306fdde0314610c2e578063081812fc14610bee578063095ea7b314610b1957806323b872dd14610b0757806342842e0e146109f65780634cd88b76146105ee5780636352211e1461054957806370a08231146104a057806395d89b41146103a0578063a22cb465146102f0578063b88d4fde14610171578063c87b56dd1461012d5763e985e9c5146100b6575f80fd5b34610129576040600319360112610129576100cf610dc4565b73ffffffffffffffffffffffffffffffffffffffff6100ec610de7565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b5f80fd5b34610129576020600319360112610129576040516020815260208181601f19601f6060518084860152806080604087015e5f84808388010101520116820101030190f35b608060031936011261012957610185610dc4565b61018d610de7565b9060443560643567ffffffffffffffff81116101295736602382011215610129576101c2903690602481600401359101610e81565b926101ce828285610f9b565b803b159283156101e4575b6101e284611247565b005b602093505f73ffffffffffffffffffffffffffffffffffffffff8092610252604051988997889687947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701521660248501526044840152608060648401526084830190610d9f565b0393165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f916102b6575b5016148280806101d9565b6102d8915060203d6020116102de575b6102d08183610e5e565b81019061120f565b846102ab565b503d6102c6565b6040513d5f823e3d90fd5b3461012957604060031936011261012957610309610dc4565b602435908115158092036101295773ffffffffffffffffffffffffffffffffffffffff90335f52600560205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b34610129575f600319360112610129576040515f6001546103c081610ee5565b808452906001811690811561045e5750600114610400575b6103fc836103e881850382610e5e565b604051918291602083526020830190610d9f565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610444575090915081016020016103e86103d8565b91926001816020925483858801015201910190929161042c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506103e890506103d8565b346101295760206003193601126101295773ffffffffffffffffffffffffffffffffffffffff6104ce610dc4565b1680156104eb575f526003602052602060405f2054604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b34610129576020600319360112610129576004355f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416801561059057602090604051908152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b346101295760406003193601126101295760043567ffffffffffffffff81116101295761061f903690600401610ec7565b60243567ffffffffffffffff81116101295761063f903690600401610ec7565b60ff6006541661099857815167ffffffffffffffff8111610843576106645f54610ee5565b601f81116108f8575b50602092601f821160011461087b57928192935f92610870575b50505f198260011b9260031b1c1916175f555b805167ffffffffffffffff8111610843576106b6600154610ee5565b601f81116107a2575b50602091601f8211600114610724579181925f92610719575b50505f198260011b9260031b1c1916176001555b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055005b0151905082806106d8565b601f1982169260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f5b85811061078a57508360019510610772575b505050811b016001556106ec565b01515f1960f88460031b161c19169055828080610764565b91926020600181928685015181550194019201610752565b60015f52601f820160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601906020831061081b575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b81811061081057506106bf565b5f8155600101610803565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf691506107d9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b015190508380610687565b601f198216935f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915f5b8681106108e057508360019596106108c8575b505050811b015f5561069a565b01515f1960f88460031b161c191690558380806108bb565b919260206001819286850151815501940192016108a8565b5f8052601f820160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563019060208310610970575b601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905b818110610965575061066d565b5f8155600101610958565b7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915061092e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152fd5b6109ff36610e0a565b91610a0b838383610f9b565b813b15918215610a1f575b6101e283611247565b6020925073ffffffffffffffffffffffffffffffffffffffff915f8360a49360405197889687957f150b7a02000000000000000000000000000000000000000000000000000000008752336004880152166024860152604485015260806064850152826084850152165af180156102e5577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000916101e2935f91610ae8575b5016148280610a16565b610b01915060203d6020116102de576102d08183610e5e565b84610ade565b6101e2610b1336610e0a565b91610f9b565b604060031936011261012957610b2d610dc4565b60243590815f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f205416918233148015610bc7575b610b6990610f36565b835f52600460205260405f208282167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b50825f52600560205260405f208233165f52602052610b6960ff60405f2054169050610b60565b34610129576020600319360112610129576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b34610129575f600319360112610129576040515f5f54610c4d81610ee5565b808452906001811690811561045e5750600114610c74576103fc836103e881850382610e5e565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610cb6575090915081016020016103e86103d8565b919260018160209254838588010152019101909291610c9e565b3461012957602060031936011261012957600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361012957817f01ffc9a70000000000000000000000000000000000000000000000000000000060209314908115610d75575b8115610d4b575b5015158152f35b7f5b5e139f0000000000000000000000000000000000000000000000000000000091501483610d44565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610d3d565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b60031960609101126101295760043573ffffffffffffffffffffffffffffffffffffffff81168103610129579060243573ffffffffffffffffffffffffffffffffffffffff81168103610129579060443590565b90601f601f19910116810190811067ffffffffffffffff82111761084357604052565b92919267ffffffffffffffff82116108435760405191610eab601f8201601f191660200184610e5e565b829481845281830111610129578281602093845f960137010152565b9080601f8301121561012957816020610ee293359101610e81565b90565b90600182811c92168015610f2c575b6020831014610eff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610ef4565b15610f3d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b90825f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20541692169182036111b15773ffffffffffffffffffffffffffffffffffffffff1690811561115357803314801561111d575b80156110ed575b61100090610f36565b805f52600360205260405f20805480156110c0575f19019055815f52600360205260405f2080545f1981146110c0576001019055825f52600260205260405f20827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055825f52600460205260405f207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50825f52600460205261100073ffffffffffffffffffffffffffffffffffffffff60405f20541633149050610ff7565b50805f52600560205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416610ff0565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b9081602091031261012957517fffffffff00000000000000000000000000000000000000000000000000000000811681036101295790565b1561124e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fdfea26469706673582212203534c1818e7d4b7435d7ab462b4dbd08626b929aee5b9569e552a6f3aa662f1864736f6c634300081c0033","sourceMap":"403:7498:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;2195:17;403:7498;;;;;;2195:34;403:7498;-1:-1:-1;403:7498:17;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4929:2;;;;;;:::i;:::-;7796:65;;7878:14;;;;4964:175;;403:7498;4943:238;;;:::i;:::-;403:7498;4964:175;403:7498;;;;;;;;;;5000:69;;;;;;;403:7498;5000:69;;5042:10;403:7498;5000:69;;403:7498;;;;;;;;;;;;;;;;;;;;:::i;:::-;5000:69;403:7498;;5000:69;;;;;;403:7498;;5000:69;4943:238;5000:69;403:7498;5000:69;;;4964:175;403:7498;;5000:139;4964:175;;;;;5000:69;;;;403:7498;5000:69;403:7498;5000:69;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;403:7498;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;;;;;;;;;;3547:10;;403:7498;;3529:17;403:7498;;;;;;;;-1:-1:-1;403:7498:17;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;3547:10;3595:46;403:7498;3547:10;3595:46;;403:7498;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;873:7;403:7498;;;;:::i;:::-;;;;;873:7;403:7498;;;873:7;;;;403:7498;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;873:7;403:7498;;;;;;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;;;;873:7;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;:::i;:::-;;1543:19;;403:7498;;;;1597:10;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;1389:8;403:7498;;;;;;;;1380:36;;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;2818:11;403:7498;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;2887:17;403:7498;;;;;;;;2887:17;403:7498;;2818:11;403:7498;;;;2887:17;403:7498;;;;;;;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;;403:7498:17;;;2887:17;403:7498;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;2887:17;403:7498;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:17;403:7498;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4482:2;;;;;;:::i;:::-;7796:65;;7878:14;;;;4517:173;;403:7498;4496:236;;;:::i;4517:173::-;403:7498;;;;;;;4553:67;403:7498;;;4553:67;;;;;403:7498;4553:67;;4595:10;403:7498;4553:67;;403:7498;;;;;;;;;;;;;;;;;;;;;4553:67;;;;;;403:7498;;4553:67;4496:236;4553:67;403:7498;4553:67;;;4517:173;403:7498;;4553:137;4517:173;;;;4553:67;;;;403:7498;4553:67;403:7498;4553:67;;;;;;;:::i;:::-;;;;403:7498;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;403:7498:17;;;;;;;:::i;:::-;;;;;;;3232:8;403:7498;;;;;;;;;3263:10;;;:19;:59;;;;403:7498;3255:86;;;:::i;:::-;403:7498;;;;;;;;;;;;;;;;;;;;3394:28;;403:7498;3394:28;;403:7498;3263:59;403:7498;;;;3286:17;403:7498;;;;;3263:10;;403:7498;-1:-1:-1;403:7498:17;;;3255:86;403:7498;;-1:-1:-1;403:7498:17;;;3263:59;;;;403:7498;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;403:7498:17;;-1:-1:-1;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;5484:25;403:7498;;5484:25;;:100;;;;;403:7498;5484:175;;;;403:7498;;;;;;;5484:175;403:7498;5634:25;;;5484:175;;;:100;403:7498;5559:25;;;-1:-1:-1;5484:100:17;;403:7498;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;403:7498:17;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;403:7498:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;403:7498:17;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;3654:693;;403:7498;-1:-1:-1;403:7498:17;3772:8;403:7498;;;;;-1:-1:-1;403:7498:17;;;;;3764:20;;;403:7498;;;;3818:16;;;403:7498;;3888:10;;:18;:57;;;;3654:693;3888:91;;;;3654:693;3867:152;;;:::i;:::-;403:7498;-1:-1:-1;403:7498:17;4195:10;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;-1:-1:-1;;403:7498:17;;;;-1:-1:-1;403:7498:17;4195:10;403:7498;;;-1:-1:-1;403:7498:17;;;-1:-1:-1;;403:7498:17;;;;;;;;;-1:-1:-1;403:7498:17;3772:8;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;;;;-1:-1:-1;403:7498:17;4286:12;403:7498;;;-1:-1:-1;403:7498:17;;;;;;;4318:22;-1:-1:-1;4318:22:17;;3654:693::o;403:7498::-;;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;403:7498:17;3888:91;403:7498;;-1:-1:-1;403:7498:17;3963:12;403:7498;;3867:152;403:7498;;-1:-1:-1;403:7498:17;;;3888:10;3949:30;3888:91;;;;:57;403:7498;;-1:-1:-1;403:7498:17;3910:17;403:7498;;;-1:-1:-1;403:7498:17;;3888:10;403:7498;-1:-1:-1;403:7498:17;;;;;-1:-1:-1;403:7498:17;;;3888:57;;403:7498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","initialize(string,string)":"4cd88b76","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Forked from: https://github.com/transmissions11/solmate/blob/0384dbaaa4fcb5715738a9254a7c0a4cb62cf458/src/tokens/ERC721.sol\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"This emits when the approved address for an NFT is changed or reaffirmed. The zero address indicates there is no approved address. When a Transfer event emits, this also indicates that the approved address for that NFT (if any) is reset to none.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"This emits when an operator is enabled or disabled for an owner. The operator can manage all NFTs of the owner.\"},\"Transfer(address,address,uint256)\":{\"details\":\"This emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any number of NFTs may be created and assigned without emitting Transfer. At the time of any transfer, the approved address for that NFT (if any) is reset to none.\"}},\"kind\":\"dev\",\"methods\":{\"initialize(string,string)\":{\"details\":\"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once.\"}},\"stateVariables\":{\"initialized\":{\"details\":\"A bool to track whether the contract has been initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"symbol()\":{\"notice\":\"An abbreviated name for NFTs in this contract\"}},\"notice\":\"This is a mock contract of the ERC721 standard for testing purposes only, it SHOULD NOT be used in production.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/mocks/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_approved","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"_owner","type":"address","indexed":true},{"internalType":"address","name":"_operator","type":"address","indexed":true},{"internalType":"bool","name":"_approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"_from","type":"address","indexed":true},{"internalType":"address","name":"_to","type":"address","indexed":true},{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"payable","type":"function","name":"transferFrom"}],"devdoc":{"kind":"dev","methods":{"initialize(string,string)":{"details":"To hide constructor warnings across solc versions due to different constructor visibility requirements and syntaxes, we add an initialization function that can be called only once."}},"version":1},"userdoc":{"kind":"user","methods":{"name()":{"notice":"A descriptive name for a collection of NFTs in this contract"},"symbol()":{"notice":"An abbreviated name for NFTs in this contract"}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/mocks/MockERC721.sol":"MockERC721"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":17} \ No newline at end of file diff --git a/out/SafeTransferLib.sol/SafeTransferLib.json b/out/SafeTransferLib.sol/SafeTransferLib.json index d80e7b8..d2aa618 100644 --- a/out/SafeTransferLib.sol/SafeTransferLib.json +++ b/out/SafeTransferLib.sol/SafeTransferLib.json @@ -1 +1 @@ -{"abi":[{"type":"error","name":"ApproveFailed","inputs":[]},{"type":"error","name":"ETHTransferFailed","inputs":[]},{"type":"error","name":"Permit2AmountOverflow","inputs":[]},{"type":"error","name":"Permit2Failed","inputs":[]},{"type":"error","name":"TransferFailed","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220badd6624b9921bf9a73be8d21c004c7b756113db16fdfbbaed72f9158879732464736f6c634300081c0033","sourceMap":"579:25737:20:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220badd6624b9921bf9a73be8d21c004c7b756113db16fdfbbaed72f9158879732464736f6c634300081c0033","sourceMap":"579:25737:20:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApproveFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETHTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Permit2AmountOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Permit2Failed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)\",\"details\":\"Note: - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.\",\"errors\":{\"ApproveFailed()\":[{\"details\":\"The ERC20 `approve` has failed.\"}],\"ETHTransferFailed()\":[{\"details\":\"The ETH transfer has failed.\"}],\"Permit2AmountOverflow()\":[{\"details\":\"The Permit2 amount must be less than `2**160 - 1`.\"}],\"Permit2Failed()\":[{\"details\":\"The Permit2 operation has failed.\"}],\"TransferFailed()\":[{\"details\":\"The ERC20 `transfer` has failed.\"}],\"TransferFromFailed()\":[{\"details\":\"The ERC20 `transferFrom` has failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"DAI_DOMAIN_SEPARATOR\":{\"details\":\"The unique EIP-712 domain domain separator for the DAI token contract.\"},\"GAS_STIPEND_NO_GRIEF\":{\"details\":\"Suggested gas stipend for contract receiving ETH to perform a few storage reads and writes, but low enough to prevent griefing.\"},\"GAS_STIPEND_NO_STORAGE_WRITES\":{\"details\":\"Suggested gas stipend for contract receiving ETH that disallows any storage writes.\"},\"PERMIT2\":{\"details\":\"The canonical Permit2 address. [Github](https://github.com/Uniswap/permit2) [Etherscan](https://etherscan.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3)\"},\"WETH9\":{\"details\":\"The address for the WETH9 contract on Ethereum mainnet.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Safe ETH and ERC20 transfer library that gracefully handles missing return values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/solady/src/utils/SafeTransferLib.sol\":\"SafeTransferLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ApproveFailed"},{"inputs":[],"type":"error","name":"ETHTransferFailed"},{"inputs":[],"type":"error","name":"Permit2AmountOverflow"},{"inputs":[],"type":"error","name":"Permit2Failed"},{"inputs":[],"type":"error","name":"TransferFailed"},{"inputs":[],"type":"error","name":"TransferFromFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/solady/src/utils/SafeTransferLib.sol":"SafeTransferLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file +{"abi":[{"type":"error","name":"ApproveFailed","inputs":[]},{"type":"error","name":"ETHTransferFailed","inputs":[]},{"type":"error","name":"Permit2AmountOverflow","inputs":[]},{"type":"error","name":"Permit2Failed","inputs":[]},{"type":"error","name":"TransferFailed","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122030a65fee19f126de87e5477434f2e0c77d528ba7284fc69b2a2ca594b839feb064736f6c634300081c0033","sourceMap":"579:25737:20:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122030a65fee19f126de87e5477434f2e0c77d528ba7284fc69b2a2ca594b839feb064736f6c634300081c0033","sourceMap":"579:25737:20:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApproveFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETHTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Permit2AmountOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Permit2Failed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)\",\"details\":\"Note: - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.\",\"errors\":{\"ApproveFailed()\":[{\"details\":\"The ERC20 `approve` has failed.\"}],\"ETHTransferFailed()\":[{\"details\":\"The ETH transfer has failed.\"}],\"Permit2AmountOverflow()\":[{\"details\":\"The Permit2 amount must be less than `2**160 - 1`.\"}],\"Permit2Failed()\":[{\"details\":\"The Permit2 operation has failed.\"}],\"TransferFailed()\":[{\"details\":\"The ERC20 `transfer` has failed.\"}],\"TransferFromFailed()\":[{\"details\":\"The ERC20 `transferFrom` has failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"DAI_DOMAIN_SEPARATOR\":{\"details\":\"The unique EIP-712 domain domain separator for the DAI token contract.\"},\"GAS_STIPEND_NO_GRIEF\":{\"details\":\"Suggested gas stipend for contract receiving ETH to perform a few storage reads and writes, but low enough to prevent griefing.\"},\"GAS_STIPEND_NO_STORAGE_WRITES\":{\"details\":\"Suggested gas stipend for contract receiving ETH that disallows any storage writes.\"},\"PERMIT2\":{\"details\":\"The canonical Permit2 address. [Github](https://github.com/Uniswap/permit2) [Etherscan](https://etherscan.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3)\"},\"WETH9\":{\"details\":\"The address for the WETH9 contract on Ethereum mainnet.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Safe ETH and ERC20 transfer library that gracefully handles missing return values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/solady/src/utils/SafeTransferLib.sol\":\"SafeTransferLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c\",\"dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ApproveFailed"},{"inputs":[],"type":"error","name":"ETHTransferFailed"},{"inputs":[],"type":"error","name":"Permit2AmountOverflow"},{"inputs":[],"type":"error","name":"Permit2Failed"},{"inputs":[],"type":"error","name":"TransferFailed"},{"inputs":[],"type":"error","name":"TransferFromFailed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/solady/src/utils/SafeTransferLib.sol":"SafeTransferLib"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x7d0de1ff3be5dc32635283280b000d4794015a1b61d7dae7f3ff7b0721b07210","urls":["bzz-raw://e307c9eece677565e7d584ee77c56134b5db38a70f557f9d2b1b308219276c0c","dweb:/ipfs/QmTEtqaTFgRBFGpJyb5o4v2w8yrSpcNThov4bNpcLr2tTR"],"license":"MIT"}},"version":1},"id":20} \ No newline at end of file diff --git a/out/Script.sol/Script.json b/out/Script.sol/Script.json index 3634d02..5552618 100644 --- a/out/Script.sol/Script.json +++ b/out/Script.sol/Script.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Script.sol\":\"Script\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Script.sol":"Script"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file +{"abi":[{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"IS_SCRIPT()":"f8ccbf47"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Script.sol\":\"Script\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Script.sol":"Script"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":1} \ No newline at end of file diff --git a/out/StdChains.sol/StdChains.json b/out/StdChains.sol/StdChains.json index 14ddd7c..268a7f6 100644 --- a/out/StdChains.sol/StdChains.json +++ b/out/StdChains.sol/StdChains.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":2} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"StdChains provides information about EVM compatible chains that can be used in scripts/tests. For each chain, the chain's name, chain ID, and a default RPC URL are provided. Chains are identified by their alias, which is the same as the alias in the `[rpc_endpoints]` section of the `foundry.toml` file. For best UX, ensure the alias in the `foundry.toml` file match the alias used in this contract, which can be found as the first argument to the `setChainWithDefaultRpcUrl` call in the `initializeStdChains` function. There are two main ways to use this contract: 1. Set a chain with `setChain(string memory chainAlias, ChainData memory chain)` or `setChain(string memory chainAlias, Chain memory chain)` 2. Get a chain with `getChain(string memory chainAlias)` or `getChain(uint256 chainId)`. The first time either of those are used, chains are initialized with the default set of RPC URLs. This is done in `initializeStdChains`, which uses `setChainWithDefaultRpcUrl`. Defaults are recorded in `defaultRpcUrls`. The `setChain` function is straightforward, and it simply saves off the given chain data. The `getChain` methods use `getChainWithUpdatedRpcUrl` to return a chain. For example, let's say we want to retrieve the RPC URL for `mainnet`: - If you have specified data with `setChain`, it will return that. - If you have configured a mainnet RPC URL in `foundry.toml`, it will return the URL, provided it is valid (e.g. a URL is specified, or an environment variable is given and exists). - If neither of the above conditions is met, the default data is returned. Summarizing the above, the prioritization hierarchy is `setChain` -> `foundry.toml` -> environment variable -> defaults.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdChains.sol\":\"StdChains\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdChains.sol":"StdChains"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":2} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheats.json b/out/StdCheats.sol/StdCheats.json index 97c1e7e..9ebb253 100644 --- a/out/StdCheats.sol/StdCheats.json +++ b/out/StdCheats.sol/StdCheats.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheats\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheats"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/StdCheats.sol/StdCheatsSafe.json b/out/StdCheats.sol/StdCheatsSafe.json index b352f70..91530cc 100644 --- a/out/StdCheats.sol/StdCheatsSafe.json +++ b/out/StdCheats.sol/StdCheatsSafe.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdCheats.sol\":\"StdCheatsSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdCheats.sol":"StdCheatsSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/out/StdJson.sol/stdJson.json b/out/StdJson.sol/stdJson.json index 565c5f8..1f79226 100644 --- a/out/StdJson.sol/stdJson.json +++ b/out/StdJson.sol/stdJson.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220fcd0f02f069e11c70ef18f6fd6d37843c387cc37272c5d60f9048e37d049126e64736f6c634300081c0033","sourceMap":"610:9092:4:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220fcd0f02f069e11c70ef18f6fd6d37843c387cc37272c5d60f9048e37d049126e64736f6c634300081c0033","sourceMap":"610:9092:4:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":4} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122026f33e26b37457d5e83a66634a1aeb9e39154c0e689618a2e80526e9857293c064736f6c634300081c0033","sourceMap":"610:9092:4:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122026f33e26b37457d5e83a66634a1aeb9e39154c0e689618a2e80526e9857293c064736f6c634300081c0033","sourceMap":"610:9092:4:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdJson.sol\":\"stdJson\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdJson.sol":"stdJson"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":4} \ No newline at end of file diff --git a/out/StdMath.sol/stdMath.json b/out/StdMath.sol/stdMath.json index 3310486..ef0545a 100644 --- a/out/StdMath.sol/stdMath.json +++ b/out/StdMath.sol/stdMath.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ba77b47b76d90b0d26e200e9f5ed9ce7e79da15d8cfae2aa7c0527aa3c0de29364736f6c634300081c0033","sourceMap":"65:1294:5:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220ba77b47b76d90b0d26e200e9f5ed9ce7e79da15d8cfae2aa7c0527aa3c0de29364736f6c634300081c0033","sourceMap":"65:1294:5:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122087129f040eddac16828a1f80852828d86b87e16d60dadd96c45ef2863623110064736f6c634300081c0033","sourceMap":"65:1294:5:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122087129f040eddac16828a1f80852828d86b87e16d60dadd96c45ef2863623110064736f6c634300081c0033","sourceMap":"65:1294:5:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdMath.sol\":\"stdMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdMath.sol":"stdMath"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"}},"version":1},"id":5} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorage.json b/out/StdStorage.sol/stdStorage.json index 267177e..269d5c3 100644 --- a/out/StdStorage.sol/stdStorage.json +++ b/out/StdStorage.sol/stdStorage.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122059fbc9250d51efead7abd4086fc7642088ef5afd06dc0647334132531539ad0864736f6c634300081c0033","sourceMap":"12759:5081:6:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122059fbc9250d51efead7abd4086fc7642088ef5afd06dc0647334132531539ad0864736f6c634300081c0033","sourceMap":"12759:5081:6:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220a52ec6cd823df9b5ddba738f5b7ba74e21425463031b783a7d5906b387d9e82d64736f6c634300081c0033","sourceMap":"12759:5081:6:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220a52ec6cd823df9b5ddba738f5b7ba74e21425463031b783a7d5906b387d9e82d64736f6c634300081c0033","sourceMap":"12759:5081:6:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorage\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorage"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file diff --git a/out/StdStorage.sol/stdStorageSafe.json b/out/StdStorage.sol/stdStorageSafe.json index a702648..6df8ac8 100644 --- a/out/StdStorage.sol/stdStorageSafe.json +++ b/out/StdStorage.sol/stdStorageSafe.json @@ -1 +1 @@ -{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220f5b2043f2de31456cf5962b2c71c6db33e61a1ce8e0d07da2e2b480500470c3c64736f6c634300081c0033","sourceMap":"450:12307:6:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220f5b2043f2de31456cf5962b2c71c6db33e61a1ce8e0d07da2e2b480500470c3c64736f6c634300081c0033","sourceMap":"450:12307:6:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file +{"abi":[{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212204130191f4d5acbae8f8f89324f8e67bd6211c642a7b8ae711eccc67e5e613a0764736f6c634300081c0033","sourceMap":"450:12307:6:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212204130191f4d5acbae8f8f89324f8e67bd6211c642a7b8ae711eccc67e5e613a0764736f6c634300081c0033","sourceMap":"450:12307:6:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"fsig\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keysHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"SlotFound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slot\",\"type\":\"uint256\"}],\"name\":\"WARNING_UninitedSlot\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStorage.sol\":\"stdStorageSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"bytes4","name":"fsig","type":"bytes4","indexed":false},{"internalType":"bytes32","name":"keysHash","type":"bytes32","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"SlotFound","anonymous":false},{"inputs":[{"internalType":"address","name":"who","type":"address","indexed":false},{"internalType":"uint256","name":"slot","type":"uint256","indexed":false}],"type":"event","name":"WARNING_UninitedSlot","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStorage.sol":"stdStorageSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":6} \ No newline at end of file diff --git a/out/StdStyle.sol/StdStyle.json b/out/StdStyle.sol/StdStyle.json index 1316b85..431a4c4 100644 --- a/out/StdStyle.sol/StdStyle.json +++ b/out/StdStyle.sol/StdStyle.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212208ccc98ea4506612185676e37aafeb7cfa327be7737f14b3d2889426b3081880264736f6c634300081c0033","sourceMap":"100:10361:7:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212208ccc98ea4506612185676e37aafeb7cfa327be7737f14b3d2889426b3081880264736f6c634300081c0033","sourceMap":"100:10361:7:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":7} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122091232a3bb55fc6542a74fd2f41a9e5661a5ab8489a1372df2f7b730dc7d1ab7e64736f6c634300081c0033","sourceMap":"100:10361:7:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea264697066735822122091232a3bb55fc6542a74fd2f41a9e5661a5ab8489a1372df2f7b730dc7d1ab7e64736f6c634300081c0033","sourceMap":"100:10361:7:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdStyle.sol\":\"StdStyle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdStyle.sol":"StdStyle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":7} \ No newline at end of file diff --git a/out/StdUtils.sol/StdUtils.json b/out/StdUtils.sol/StdUtils.json index 1f949b1..45b3e0b 100644 --- a/out/StdUtils.sol/StdUtils.json +++ b/out/StdUtils.sol/StdUtils.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/StdUtils.sol\":\"StdUtils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/StdUtils.sol":"StdUtils"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"}},"version":1},"id":8} \ No newline at end of file diff --git a/out/UniswapRegistry.sol/UniswapRegistry.json b/out/UniswapRegistry.sol/UniswapRegistry.json index c4e964d..387927a 100644 --- a/out/UniswapRegistry.sol/UniswapRegistry.json +++ b/out/UniswapRegistry.sol/UniswapRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x6080806040523460ef57630eecae8d60e31b81525f600480830182905260249283902080546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560408051637573646360e01b81528084018590528590208054831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905580516264616960e81b8152600381018590526023902080548316736b175474e89094c44da98b954eedeac495271d0f1790558051637762746360e01b8152928301939093529290208054909216732260fac5e5542a773aa44fbcfedf7c193bc2c599179091555161018590816100f48239f35b5f80fdfe6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220e0d47a0dc06bfd7b8b389a1b7eb0454acd38fb213db084a4994aae60e1773e5664736f6c634300081c0033","sourceMap":"60:876:31:-:0;;;;;;;-1:-1:-1;;;248:42:31;;536:21;248:42;;;;;;;;;;;;;;-1:-1:-1;;;;;;248:42:31;;;;;;;;60:876;;;-1:-1:-1;;;320:42:31;;;;;248;;;320;;;248;;;;320;248;;;60:876;;-1:-1:-1;;;391:42:31;;;;;248;;;391;;;248;;;;391;248;;;60:876;;-1:-1:-1;;;463:42:31;;;;;248;;;;463;;;248;;;;;463;248;;;;60:876;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220e0d47a0dc06bfd7b8b389a1b7eb0454acd38fb213db084a4994aae60e1773e5664736f6c634300081c0033","sourceMap":"60:876:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"getAddressFromString(string)":"a3c7ed7f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapRegistry.sol\":\"UniswapRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/UniswapRegistry.sol\":{\"keccak256\":\"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192\",\"dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/UniswapRegistry.sol":"UniswapRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/UniswapRegistry.sol":{"keccak256":"0x6ce7d310e38c6cfa50bfea056a9b45868734f1dc0ae67eab6b2af6695db5c869","urls":["bzz-raw://47dce815ac0fd8d1c1c953bbfdb9bc8aa6b69c5a364d591e88cfa2cf69ccc192","dweb:/ipfs/QmeFErUs3rnoWYF9oH9BJqmJghZqoytBoaHK6utMXbuxkU"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAddressFromString","inputs":[{"name":"tokenName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x608080604052346100f95780630eecae8d60e31b602492525f60048201522073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03198254161790556024604051637573646360e01b81525f60048201522073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860018060a01b031982541617905560236040516264616960e81b81525f600382015220736b175474e89094c44da98b954eedeac495271d0f60018060a01b031982541617905560236040516262746360e81b81525f600382015220732260fac5e5542a773aa44fbcfedf7c193bc2c59960018060a01b031982541617905560405161018590816100fe8239f35b5f80fdfe6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea26469706673582212201d4628a03487c3e24d636bccf6aaae2ac496ae787547bcea08e67d2cac1f031964736f6c634300081c0033","sourceMap":"60:873:31:-:0;;;;;;;248:42;-1:-1:-1;;;248:42:31;;;535:21;248:42;;;;;;;;;;;;;;;;;;;60:873;;-1:-1:-1;;;320:42:31;;535:21;248:42;320;;248;320;;248;;;;;;;;;;;;391;60:873;;-1:-1:-1;;;391:42:31;;535:21;391:42;;;248;391;;248;;;;;;;;;;;;391;60:873;;-1:-1:-1;;;462:42:31;;535:21;391:42;462;;248;462;;248;;;;;;;;;;;;60:873;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080600436101561000e575f80fd5b5f3560e01c63a3c7ed7f14610021575f80fd5b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff811161011e573660238201121561011e5780600401359067ffffffffffffffff8211610122577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f8501160116830183811067ffffffffffffffff821117610122576040528183526020830190366024848301011161011e576020935f858573ffffffffffffffffffffffffffffffffffffffff966024839601873783010152604051928391518091835e81015f8152030190205416604051908152f35b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea26469706673582212201d4628a03487c3e24d636bccf6aaae2ac496ae787547bcea08e67d2cac1f031964736f6c634300081c0033","sourceMap":"60:873:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"getAddressFromString(string)":"a3c7ed7f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"getAddressFromString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/UniswapRegistry.sol\":\"UniswapRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"src/UniswapRegistry.sol\":{\"keccak256\":\"0xdf5457b745b88c4092445b16329fac837ecf10db5b40842f621c330ec5b93552\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bc9758b650eee2473acf7067fb3141277337208d55ee23d38da0406bbb6a266\",\"dweb:/ipfs/QmT3xW9GABYdYxLZWNz9xMb6HxFyx5S33ZJ3beQWN1wv1C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function","name":"getAddressFromString","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/UniswapRegistry.sol":"UniswapRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/UniswapRegistry.sol":{"keccak256":"0xdf5457b745b88c4092445b16329fac837ecf10db5b40842f621c330ec5b93552","urls":["bzz-raw://1bc9758b650eee2473acf7067fb3141277337208d55ee23d38da0406bbb6a266","dweb:/ipfs/QmT3xW9GABYdYxLZWNz9xMb6HxFyx5S33ZJ3beQWN1wv1C"],"license":"MIT"}},"version":1},"id":31} \ No newline at end of file diff --git a/out/Vm.sol/Vm.json b/out/Vm.sol/Vm.json index 79d0374..8074386 100644 --- a/out/Vm.sol/Vm.json +++ b/out/Vm.sol/Vm.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"blobBaseFee","inputs":[{"name":"newBlobBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blobhashes","inputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cloneAccount","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteStateSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteStateSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dumpState","inputs":[{"name":"pathToStateJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectPartialRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectPartialRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByCode","inputs":[{"name":"code","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByDeployedCode","inputs":[{"name":"deployedCode","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlobhashes","inputs":[],"outputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getScriptWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"loadAllocs","inputs":[{"name":"pathToAllocsJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCalls","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCalls","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockFunction","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlTypeArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomBool","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"randomBytes","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"randomBytes4","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"randomBytes8","inputs":[],"outputs":[{"name":"","type":"bytes8","internalType":"bytes8"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"language","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToState","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToStateAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockhash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotGasLastCall","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotGasLastCall","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotState","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotValue","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotValue","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startDebugTraceRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startSnapshotGas","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startSnapshotGas","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnDebugTraceRecording","inputs":[],"outputs":[{"name":"step","type":"tuple[]","internalType":"struct VmSafe.DebugStep[]","components":[{"name":"stack","type":"uint256[]","internalType":"uint256[]"},{"name":"memoryInput","type":"bytes","internalType":"bytes"},{"name":"opcode","type":"uint8","internalType":"uint8"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isOutOfGas","type":"bool","internalType":"bool"},{"name":"contractAddr","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopExpectSafeMemory","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","blobBaseFee(uint256)":"6d315d7e","blobhashes(bytes32[])":"129de7eb","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","cloneAccount(address,address)":"533d61c9","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deal(address,uint256)":"c88a5e6d","deleteSnapshot(uint256)":"a6368557","deleteSnapshots()":"421ae469","deleteStateSnapshot(uint256)":"08d6b37a","deleteStateSnapshots()":"e0933c74","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","difficulty(uint256)":"46cc92d9","dumpState(string)":"709ecd3f","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectEmitAnonymous()":"2e5f270c","expectEmitAnonymous(address)":"6fc68705","expectEmitAnonymous(bool,bool,bool,bool,bool)":"c948db5e","expectEmitAnonymous(bool,bool,bool,bool,bool,address)":"71c95899","expectPartialRevert(bytes4)":"11fb5b9c","expectPartialRevert(bytes4,address)":"51aa008a","expectRevert()":"f4844814","expectRevert(address)":"d814f38a","expectRevert(bytes)":"f28dceb3","expectRevert(bytes,address)":"61ebcf12","expectRevert(bytes4)":"c31eb0e0","expectRevert(bytes4,address)":"260bc5de","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getArtifactPathByCode(bytes)":"eb74848c","getArtifactPathByDeployedCode(bytes)":"6d853ba5","getBlobBaseFee()":"1f6d6ef7","getBlobhashes()":"f56ff18b","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","getScriptWallets()":"7c49aa1f","getWallets()":"db7a4605","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","isPersistent(address)":"d92d8efd","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","loadAllocs(string)":"b3a056d7","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","mockCalls(address,bytes,bytes[])":"5c5c3de9","mockCalls(address,uint256,bytes,bytes[])":"08bcbae1","mockFunction(address,address,bytes)":"adf84d21","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlType(string,string)":"47fa5e11","parseTomlType(string,string,string)":"f9fa5cdb","parseTomlTypeArray(string,string,string)":"49be3743","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","prevrandao(uint256)":"9cb1c0d4","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomBool()":"cdc126bd","randomBytes(uint256)":"6c5d32a9","randomBytes4()":"9b7cd579","randomBytes8()":"0497b0a5","randomInt()":"111f1202","randomInt(uint256)":"12845966","randomUint()":"25124730","randomUint(uint256)":"cf81e69c","randomUint(uint256,uint256)":"d61b051b","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","rememberKeys(string,string,string,uint32)":"f8d58eaf","rememberKeys(string,string,uint32)":"97cb9189","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","revertTo(uint256)":"44d7f0a4","revertToAndDelete(uint256)":"03e0aca9","revertToState(uint256)":"c2527405","revertToStateAndDelete(uint256)":"3a1985dc","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setBlockhash(uint256,bytes32)":"5314b54a","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","skip(bool)":"dd82d13e","skip(bool,string)":"c42a80a7","sleep(uint256)":"fa9d8713","snapshot()":"9711715a","snapshotGasLastCall(string)":"dd9fca12","snapshotGasLastCall(string,string)":"200c6772","snapshotState()":"9cd23835","snapshotValue(string,string,uint256)":"6d2b27d8","snapshotValue(string,uint256)":"51db805a","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startDebugTraceRecording()":"419c8832","startMappingRecording()":"3e9705c0","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","startSnapshotGas(string)":"3cad9d7b","startSnapshotGas(string,string)":"6cd0cc53","startStateDiffRecording()":"cf22e3c9","stopAndReturnDebugTraceRecording()":"ced398a2","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopExpectSafeMemory()":"0956441b","stopMappingRecording()":"0d4aae9b","stopPrank()":"90c5013b","stopSnapshotGas()":"f6402eda","stopSnapshotGas(string)":"773b2805","stopSnapshotGas(string,string)":"0c9db707","store(address,bytes32,bytes32)":"70ca10bb","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","txGasPrice(uint256)":"48f50c0f","unixTime()":"625387dc","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBlobBaseFee\",\"type\":\"uint256\"}],\"name\":\"blobBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"name\":\"blobhashes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"cloneAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteStateSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteStateSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToStateJson\",\"type\":\"string\"}],\"name\":\"dumpState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectPartialRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectPartialRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"code\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByDeployedCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobhashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScriptWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToAllocsJson\",\"type\":\"string\"}],\"name\":\"loadAllocs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"name\":\"mockCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"name\":\"mockCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mockFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrevrandao\",\"type\":\"uint256\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"randomBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes4\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes8\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"\",\"type\":\"bytes8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToStateAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"setBlockhash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"snapshotGasLastCall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"snapshotGasLastCall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"snapshotValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"snapshotValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startDebugTraceRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"startSnapshotGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"startSnapshotGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnDebugTraceRecording\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"stack\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"memoryInput\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isOutOfGas\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.DebugStep[]\",\"name\":\"step\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopExpectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"allowCheatcodes(address)\":{\"notice\":\"In forking mode, explicitly grant the given address cheatcode access.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"blobBaseFee(uint256)\":{\"notice\":\"Sets `block.blobbasefee`\"},\"blobhashes(bytes32[])\":{\"notice\":\"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"chainId(uint256)\":{\"notice\":\"Sets `block.chainid`.\"},\"clearMockedCalls()\":{\"notice\":\"Clears all mocked calls.\"},\"cloneAccount(address,address)\":{\"notice\":\"Clones a source account code, state, balance and nonce to a target account and updates in-memory EVM state.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"coinbase(address)\":{\"notice\":\"Sets `block.coinbase`.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createFork(string)\":{\"notice\":\"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork.\"},\"createFork(string,bytes32)\":{\"notice\":\"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork.\"},\"createFork(string,uint256)\":{\"notice\":\"Creates a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createSelectFork(string)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork.\"},\"createSelectFork(string,bytes32)\":{\"notice\":\"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork.\"},\"createSelectFork(string,uint256)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deal(address,uint256)\":{\"notice\":\"Sets an address' balance.\"},\"deleteSnapshot(uint256)\":{\"notice\":\"`deleteSnapshot` is being deprecated in favor of `deleteStateSnapshot`. It will be removed in future versions.\"},\"deleteSnapshots()\":{\"notice\":\"`deleteSnapshots` is being deprecated in favor of `deleteStateSnapshots`. It will be removed in future versions.\"},\"deleteStateSnapshot(uint256)\":{\"notice\":\"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist.\"},\"deleteStateSnapshots()\":{\"notice\":\"Removes _all_ snapshots previously created by `snapshot`.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"difficulty(uint256)\":{\"notice\":\"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions.\"},\"dumpState(string)\":{\"notice\":\"Dump a genesis JSON file's `allocs` to disk.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"etch(address,bytes)\":{\"notice\":\"Sets an address' code.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"expectCall(address,bytes)\":{\"notice\":\"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match.\"},\"expectCall(address,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified calldata.\"},\"expectCall(address,uint256,bytes)\":{\"notice\":\"Expects a call to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCall(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCallMinGas(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectCallMinGas(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectEmit()\":{\"notice\":\"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmit(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmit(bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmit(bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous()\":{\"notice\":\"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmitAnonymous(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectPartialRevert(bytes4)\":{\"notice\":\"Expects an error on next call that starts with the revert data.\"},\"expectPartialRevert(bytes4,address)\":{\"notice\":\"Expects an error on next call to reverter address, that starts with the revert data.\"},\"expectRevert()\":{\"notice\":\"Expects an error on next call with any revert data.\"},\"expectRevert(address)\":{\"notice\":\"Expects an error with any revert data on next call to reverter address.\"},\"expectRevert(bytes)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes,address)\":{\"notice\":\"Expects an error from reverter address on next call, that exactly matches the revert data.\"},\"expectRevert(bytes4)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes4,address)\":{\"notice\":\"Expects an error from reverter address on next call, with any revert data.\"},\"expectSafeMemory(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"expectSafeMemoryCall(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"fee(uint256)\":{\"notice\":\"Sets `block.basefee`.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getArtifactPathByCode(bytes)\":{\"notice\":\"Gets the artifact path from code (aka. creation code).\"},\"getArtifactPathByDeployedCode(bytes)\":{\"notice\":\"Gets the artifact path from deployed code (aka. runtime code).\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlobhashes()\":{\"notice\":\"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"getScriptWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"getWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"isPersistent(address)\":{\"notice\":\"Returns true if the account is marked as persistent.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call from the callee perspective.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"loadAllocs(string)\":{\"notice\":\"Load a genesis JSON file's `allocs` into the in-memory EVM state.\"},\"makePersistent(address)\":{\"notice\":\"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks.\"},\"makePersistent(address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address,address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address[])\":{\"notice\":\"See `makePersistent(address)`.\"},\"mockCall(address,bytes,bytes)\":{\"notice\":\"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked.\"},\"mockCall(address,uint256,bytes,bytes)\":{\"notice\":\"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity.\"},\"mockCallRevert(address,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with specified revert data.\"},\"mockCallRevert(address,uint256,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with a specific `msg.value`, with specified revert data.\"},\"mockCalls(address,bytes,bytes[])\":{\"notice\":\"Mocks multiple calls to an address, returning specified data for each call.\"},\"mockCalls(address,uint256,bytes,bytes[])\":{\"notice\":\"Mocks multiple calls to an address with a specific `msg.value`, returning specified data for each call.\"},\"mockFunction(address,address,bytes)\":{\"notice\":\"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlType(string,string)\":{\"notice\":\"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlType(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlTypeArray(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"prank(address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address.\"},\"prank(address,address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input.\"},\"prevrandao(bytes32)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"prevrandao(uint256)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomBool()\":{\"notice\":\"Returns a random `bool`.\"},\"randomBytes(uint256)\":{\"notice\":\"Returns a random byte array value of the given length.\"},\"randomBytes4()\":{\"notice\":\"Returns a random fixed-size byte array of length 4.\"},\"randomBytes8()\":{\"notice\":\"Returns a random fixed-size byte array of length 8.\"},\"randomInt()\":{\"notice\":\"Returns a random `int256` value.\"},\"randomInt(uint256)\":{\"notice\":\"Returns a random `int256` value of given bits.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256)\":{\"notice\":\"Returns a random `uint256` value of given bits.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uint256 value between the provided range (=min..=max).\"},\"readCallers()\":{\"notice\":\"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"rememberKeys(string,string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"rememberKeys(string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resetNonce(address)\":{\"notice\":\"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"revertTo(uint256)\":{\"notice\":\"`revertTo` is being deprecated in favor of `revertToState`. It will be removed in future versions.\"},\"revertToAndDelete(uint256)\":{\"notice\":\"`revertToAndDelete` is being deprecated in favor of `revertToStateAndDelete`. It will be removed in future versions.\"},\"revertToState(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteStateSnapshot`.\"},\"revertToStateAndDelete(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist.\"},\"revokePersistent(address)\":{\"notice\":\"Revokes persistent status from the address, previously added via `makePersistent`.\"},\"revokePersistent(address[])\":{\"notice\":\"See `revokePersistent(address)`.\"},\"roll(uint256)\":{\"notice\":\"Sets `block.height`.\"},\"rollFork(bytes32)\":{\"notice\":\"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block.\"},\"rollFork(uint256)\":{\"notice\":\"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork.\"},\"rollFork(uint256,bytes32)\":{\"notice\":\"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block.\"},\"rollFork(uint256,uint256)\":{\"notice\":\"Updates the given fork to given block number.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"selectFork(uint256)\":{\"notice\":\"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setBlockhash(uint256,bytes32)\":{\"notice\":\"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"setNonce(address,uint64)\":{\"notice\":\"Sets the nonce of an account. Must be higher than the current nonce of the account.\"},\"setNonceUnsafe(address,uint64)\":{\"notice\":\"Sets the nonce of an account to an arbitrary value.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"skip(bool)\":{\"notice\":\"Marks a test as skipped. Must be called at the top level of a test.\"},\"skip(bool,string)\":{\"notice\":\"Marks a test as skipped with a reason. Must be called at the top level of a test.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"snapshot()\":{\"notice\":\"`snapshot` is being deprecated in favor of `snapshotState`. It will be removed in future versions.\"},\"snapshotGasLastCall(string)\":{\"notice\":\"Snapshot capture the gas usage of the last call by name from the callee perspective.\"},\"snapshotGasLastCall(string,string)\":{\"notice\":\"Snapshot capture the gas usage of the last call by name in a group from the callee perspective.\"},\"snapshotState()\":{\"notice\":\"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertToState`.\"},\"snapshotValue(string,string,uint256)\":{\"notice\":\"Snapshot capture an arbitrary numerical value by name in a group.\"},\"snapshotValue(string,uint256)\":{\"notice\":\"Snapshot capture an arbitrary numerical value by name. The group name is derived from the contract name.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startDebugTraceRecording()\":{\"notice\":\"Records the debug trace during the run.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startPrank(address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called.\"},\"startPrank(address,address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input.\"},\"startSnapshotGas(string)\":{\"notice\":\"Start a snapshot capture of the current gas usage by name. The group name is derived from the contract name.\"},\"startSnapshotGas(string,string)\":{\"notice\":\"Start a snapshot capture of the current gas usage by name in a group.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnDebugTraceRecording()\":{\"notice\":\"Stop debug trace recording and returns the recorded debug trace.\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopExpectSafeMemory()\":{\"notice\":\"Stops all safe memory expectation in the current subcontext.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"stopPrank()\":{\"notice\":\"Resets subsequent calls' `msg.sender` to be `address(this)`.\"},\"stopSnapshotGas()\":{\"notice\":\"Stop the snapshot capture of the current gas by latest snapshot name, capturing the gas used since the start.\"},\"stopSnapshotGas(string)\":{\"notice\":\"Stop the snapshot capture of the current gas usage by name, capturing the gas used since the start. The group name is derived from the contract name.\"},\"stopSnapshotGas(string,string)\":{\"notice\":\"Stop the snapshot capture of the current gas usage by name in a group, capturing the gas used since the start.\"},\"store(address,bytes32,bytes32)\":{\"notice\":\"Stores a value to an address' storage slot.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"transact(bytes32)\":{\"notice\":\"Fetches the given transaction from the active fork and executes it on the current state.\"},\"transact(uint256,bytes32)\":{\"notice\":\"Fetches the given transaction from the given fork and executes it on the current state.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"txGasPrice(uint256)\":{\"notice\":\"Sets `tx.gasprice`.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"warp(uint256)\":{\"notice\":\"Sets `block.timestamp`.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used in tests, but it is not recommended to use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"uint256","name":"newBlobBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"blobBaseFee"},{"inputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"blobhashes"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cloneAccount"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshots"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteStateSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteStateSnapshots"},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"pathToStateJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"dumpState"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectPartialRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectPartialRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"deployedCode","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByDeployedCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobhashes","outputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getScriptWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"pathToAllocsJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"loadAllocs"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"mockCalls"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"mockCalls"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockFunction"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[{"internalType":"uint256","name":"newPrevrandao","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes4","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes8","outputs":[{"internalType":"bytes8","name":"","type":"bytes8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"string","name":"language","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToState","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToStateAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockhash"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"snapshotGasLastCall","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"snapshotGasLastCall","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshotState","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"snapshotValue"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"snapshotValue"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startDebugTraceRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"startSnapshotGas"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"startSnapshotGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnDebugTraceRecording","outputs":[{"internalType":"struct VmSafe.DebugStep[]","name":"step","type":"tuple[]","components":[{"internalType":"uint256[]","name":"stack","type":"uint256[]"},{"internalType":"bytes","name":"memoryInput","type":"bytes"},{"internalType":"uint8","name":"opcode","type":"uint8"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isOutOfGas","type":"bool"},{"internalType":"address","name":"contractAddr","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopExpectSafeMemory"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"allowCheatcodes(address)":{"notice":"In forking mode, explicitly grant the given address cheatcode access."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"blobBaseFee(uint256)":{"notice":"Sets `block.blobbasefee`"},"blobhashes(bytes32[])":{"notice":"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"chainId(uint256)":{"notice":"Sets `block.chainid`."},"clearMockedCalls()":{"notice":"Clears all mocked calls."},"cloneAccount(address,address)":{"notice":"Clones a source account code, state, balance and nonce to a target account and updates in-memory EVM state."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"coinbase(address)":{"notice":"Sets `block.coinbase`."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createFork(string)":{"notice":"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork."},"createFork(string,bytes32)":{"notice":"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork."},"createFork(string,uint256)":{"notice":"Creates a new fork with the given endpoint and block and returns the identifier of the fork."},"createSelectFork(string)":{"notice":"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork."},"createSelectFork(string,bytes32)":{"notice":"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork."},"createSelectFork(string,uint256)":{"notice":"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deal(address,uint256)":{"notice":"Sets an address' balance."},"deleteSnapshot(uint256)":{"notice":"`deleteSnapshot` is being deprecated in favor of `deleteStateSnapshot`. It will be removed in future versions."},"deleteSnapshots()":{"notice":"`deleteSnapshots` is being deprecated in favor of `deleteStateSnapshots`. It will be removed in future versions."},"deleteStateSnapshot(uint256)":{"notice":"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist."},"deleteStateSnapshots()":{"notice":"Removes _all_ snapshots previously created by `snapshot`."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"difficulty(uint256)":{"notice":"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions."},"dumpState(string)":{"notice":"Dump a genesis JSON file's `allocs` to disk."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"etch(address,bytes)":{"notice":"Sets an address' code."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"expectCall(address,bytes)":{"notice":"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match."},"expectCall(address,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified calldata."},"expectCall(address,uint256,bytes)":{"notice":"Expects a call to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value`, gas, and calldata."},"expectCall(address,uint256,uint64,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata."},"expectCallMinGas(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectCallMinGas(address,uint256,uint64,bytes,uint64)":{"notice":"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectEmit()":{"notice":"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmit(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmit(bool,bool,bool,bool)":{"notice":"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmit(bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous()":{"notice":"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmitAnonymous(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous(bool,bool,bool,bool,bool)":{"notice":"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmitAnonymous(bool,bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectPartialRevert(bytes4)":{"notice":"Expects an error on next call that starts with the revert data."},"expectPartialRevert(bytes4,address)":{"notice":"Expects an error on next call to reverter address, that starts with the revert data."},"expectRevert()":{"notice":"Expects an error on next call with any revert data."},"expectRevert(address)":{"notice":"Expects an error with any revert data on next call to reverter address."},"expectRevert(bytes)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes,address)":{"notice":"Expects an error from reverter address on next call, that exactly matches the revert data."},"expectRevert(bytes4)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes4,address)":{"notice":"Expects an error from reverter address on next call, with any revert data."},"expectSafeMemory(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) βˆͺ [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"expectSafeMemoryCall(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) βˆͺ [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"fee(uint256)":{"notice":"Sets `block.basefee`."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getArtifactPathByCode(bytes)":{"notice":"Gets the artifact path from code (aka. creation code)."},"getArtifactPathByDeployedCode(bytes)":{"notice":"Gets the artifact path from deployed code (aka. runtime code)."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlobhashes()":{"notice":"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"getScriptWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"getWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"isPersistent(address)":{"notice":"Returns true if the account is marked as persistent."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call from the callee perspective."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"loadAllocs(string)":{"notice":"Load a genesis JSON file's `allocs` into the in-memory EVM state."},"makePersistent(address)":{"notice":"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks."},"makePersistent(address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address,address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address[])":{"notice":"See `makePersistent(address)`."},"mockCall(address,bytes,bytes)":{"notice":"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked."},"mockCall(address,uint256,bytes,bytes)":{"notice":"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity."},"mockCallRevert(address,bytes,bytes)":{"notice":"Reverts a call to an address with specified revert data."},"mockCallRevert(address,uint256,bytes,bytes)":{"notice":"Reverts a call to an address with a specific `msg.value`, with specified revert data."},"mockCalls(address,bytes,bytes[])":{"notice":"Mocks multiple calls to an address, returning specified data for each call."},"mockCalls(address,uint256,bytes,bytes[])":{"notice":"Mocks multiple calls to an address with a specific `msg.value`, returning specified data for each call."},"mockFunction(address,address,bytes)":{"notice":"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlType(string,string)":{"notice":"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`."},"parseTomlType(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`."},"parseTomlTypeArray(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"prank(address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address."},"prank(address,address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input."},"prevrandao(bytes32)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"prevrandao(uint256)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomBool()":{"notice":"Returns a random `bool`."},"randomBytes(uint256)":{"notice":"Returns a random byte array value of the given length."},"randomBytes4()":{"notice":"Returns a random fixed-size byte array of length 4."},"randomBytes8()":{"notice":"Returns a random fixed-size byte array of length 8."},"randomInt()":{"notice":"Returns a random `int256` value."},"randomInt(uint256)":{"notice":"Returns a random `int256` value of given bits."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256)":{"notice":"Returns a random `uint256` value of given bits."},"randomUint(uint256,uint256)":{"notice":"Returns random uint256 value between the provided range (=min..=max)."},"readCallers()":{"notice":"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"rememberKeys(string,string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"rememberKeys(string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resetNonce(address)":{"notice":"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"revertTo(uint256)":{"notice":"`revertTo` is being deprecated in favor of `revertToState`. It will be removed in future versions."},"revertToAndDelete(uint256)":{"notice":"`revertToAndDelete` is being deprecated in favor of `revertToStateAndDelete`. It will be removed in future versions."},"revertToState(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteStateSnapshot`."},"revertToStateAndDelete(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist."},"revokePersistent(address)":{"notice":"Revokes persistent status from the address, previously added via `makePersistent`."},"revokePersistent(address[])":{"notice":"See `revokePersistent(address)`."},"roll(uint256)":{"notice":"Sets `block.height`."},"rollFork(bytes32)":{"notice":"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block."},"rollFork(uint256)":{"notice":"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork."},"rollFork(uint256,bytes32)":{"notice":"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block."},"rollFork(uint256,uint256)":{"notice":"Updates the given fork to given block number."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"selectFork(uint256)":{"notice":"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setBlockhash(uint256,bytes32)":{"notice":"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"setNonce(address,uint64)":{"notice":"Sets the nonce of an account. Must be higher than the current nonce of the account."},"setNonceUnsafe(address,uint64)":{"notice":"Sets the nonce of an account to an arbitrary value."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"skip(bool)":{"notice":"Marks a test as skipped. Must be called at the top level of a test."},"skip(bool,string)":{"notice":"Marks a test as skipped with a reason. Must be called at the top level of a test."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"snapshot()":{"notice":"`snapshot` is being deprecated in favor of `snapshotState`. It will be removed in future versions."},"snapshotGasLastCall(string)":{"notice":"Snapshot capture the gas usage of the last call by name from the callee perspective."},"snapshotGasLastCall(string,string)":{"notice":"Snapshot capture the gas usage of the last call by name in a group from the callee perspective."},"snapshotState()":{"notice":"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertToState`."},"snapshotValue(string,string,uint256)":{"notice":"Snapshot capture an arbitrary numerical value by name in a group."},"snapshotValue(string,uint256)":{"notice":"Snapshot capture an arbitrary numerical value by name. The group name is derived from the contract name."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startDebugTraceRecording()":{"notice":"Records the debug trace during the run."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startPrank(address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called."},"startPrank(address,address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input."},"startSnapshotGas(string)":{"notice":"Start a snapshot capture of the current gas usage by name. The group name is derived from the contract name."},"startSnapshotGas(string,string)":{"notice":"Start a snapshot capture of the current gas usage by name in a group."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnDebugTraceRecording()":{"notice":"Stop debug trace recording and returns the recorded debug trace."},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopExpectSafeMemory()":{"notice":"Stops all safe memory expectation in the current subcontext."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"stopPrank()":{"notice":"Resets subsequent calls' `msg.sender` to be `address(this)`."},"stopSnapshotGas()":{"notice":"Stop the snapshot capture of the current gas by latest snapshot name, capturing the gas used since the start."},"stopSnapshotGas(string)":{"notice":"Stop the snapshot capture of the current gas usage by name, capturing the gas used since the start. The group name is derived from the contract name."},"stopSnapshotGas(string,string)":{"notice":"Stop the snapshot capture of the current gas usage by name in a group, capturing the gas used since the start."},"store(address,bytes32,bytes32)":{"notice":"Stores a value to an address' storage slot."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"transact(bytes32)":{"notice":"Fetches the given transaction from the active fork and executes it on the current state."},"transact(uint256,bytes32)":{"notice":"Fetches the given transaction from the given fork and executes it on the current state."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"txGasPrice(uint256)":{"notice":"Sets `tx.gasprice`."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"warp(uint256)":{"notice":"Sets `block.timestamp`."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"activeFork","inputs":[],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"allowCheatcodes","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"blobBaseFee","inputs":[{"name":"newBlobBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blobhashes","inputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chainId","inputs":[{"name":"newChainId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clearMockedCalls","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cloneAccount","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coinbase","inputs":[{"name":"newCoinbase","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createSelectFork","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"}],"outputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deal","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newBalance","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteStateSnapshot","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"deleteStateSnapshots","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"difficulty","inputs":[{"name":"newDifficulty","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dumpState","inputs":[{"name":"pathToStateJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"etch","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"newRuntimeBytecode","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"gas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectCallMinGas","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"minGas","type":"uint64","internalType":"uint64"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"count","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmit","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"},{"name":"emitter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectEmitAnonymous","inputs":[{"name":"checkTopic0","type":"bool","internalType":"bool"},{"name":"checkTopic1","type":"bool","internalType":"bool"},{"name":"checkTopic2","type":"bool","internalType":"bool"},{"name":"checkTopic3","type":"bool","internalType":"bool"},{"name":"checkData","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectPartialRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectPartialRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"},{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"reverter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemory","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expectSafeMemoryCall","inputs":[{"name":"min","type":"uint64","internalType":"uint64"},{"name":"max","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fee","inputs":[{"name":"newBasefee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByCode","inputs":[{"name":"code","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByDeployedCode","inputs":[{"name":"deployedCode","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlobhashes","inputs":[],"outputs":[{"name":"hashes","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getScriptWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isPersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"persistent","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"loadAllocs","inputs":[{"name":"pathToAllocsJson","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makePersistent","inputs":[{"name":"account0","type":"address","internalType":"address"},{"name":"account1","type":"address","internalType":"address"},{"name":"account2","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCall","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCallRevert","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCalls","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"msgValue","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockCalls","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"returnData","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mockFunction","inputs":[{"name":"callee","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlTypeArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"prevrandao","inputs":[{"name":"newPrevrandao","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomBool","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"randomBytes","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"randomBytes4","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"randomBytes8","inputs":[],"outputs":[{"name":"","type":"bytes8","internalType":"bytes8"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readCallers","inputs":[],"outputs":[{"name":"callerMode","type":"uint8","internalType":"enum VmSafe.CallerMode"},{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"language","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"revertTo","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToState","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revertToStateAndDelete","inputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"success","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokePersistent","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"roll","inputs":[{"name":"newHeight","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"selectFork","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockhash","inputs":[{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNonceUnsafe","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newNonce","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"skip","inputs":[{"name":"skipTest","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshot","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotGasLastCall","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotGasLastCall","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotState","inputs":[],"outputs":[{"name":"snapshotId","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotValue","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"snapshotValue","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startDebugTraceRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startPrank","inputs":[{"name":"msgSender","type":"address","internalType":"address"},{"name":"txOrigin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startSnapshotGas","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startSnapshotGas","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnDebugTraceRecording","inputs":[],"outputs":[{"name":"step","type":"tuple[]","internalType":"struct VmSafe.DebugStep[]","components":[{"name":"stack","type":"uint256[]","internalType":"uint256[]"},{"name":"memoryInput","type":"bytes","internalType":"bytes"},{"name":"opcode","type":"uint8","internalType":"uint8"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isOutOfGas","type":"bool","internalType":"bool"},{"name":"contractAddr","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopExpectSafeMemory","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopPrank","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[{"name":"group","type":"string","internalType":"string"},{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"stopSnapshotGas","inputs":[],"outputs":[{"name":"gasUsed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"store","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"transact","inputs":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transact","inputs":[{"name":"txHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"txGasPrice","inputs":[{"name":"newGasPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"warp","inputs":[{"name":"newTimestamp","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","activeFork()":"2f103f22","addr(uint256)":"ffa18649","allowCheatcodes(address)":"ea060291","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","blobBaseFee(uint256)":"6d315d7e","blobhashes(bytes32[])":"129de7eb","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","chainId(uint256)":"4049ddd2","clearMockedCalls()":"3fdf4e15","cloneAccount(address,address)":"533d61c9","closeFile(string)":"48c3241f","coinbase(address)":"ff483c54","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createFork(string)":"31ba3498","createFork(string,bytes32)":"7ca29682","createFork(string,uint256)":"6ba3ba2b","createSelectFork(string)":"98680034","createSelectFork(string,bytes32)":"84d52b7a","createSelectFork(string,uint256)":"71ee464d","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deal(address,uint256)":"c88a5e6d","deleteSnapshot(uint256)":"a6368557","deleteSnapshots()":"421ae469","deleteStateSnapshot(uint256)":"08d6b37a","deleteStateSnapshots()":"e0933c74","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","difficulty(uint256)":"46cc92d9","dumpState(string)":"709ecd3f","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","etch(address,bytes)":"b4d6c782","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","expectCall(address,bytes)":"bd6af434","expectCall(address,bytes,uint64)":"c1adbbff","expectCall(address,uint256,bytes)":"f30c7ba3","expectCall(address,uint256,bytes,uint64)":"a2b1a1ae","expectCall(address,uint256,uint64,bytes)":"23361207","expectCall(address,uint256,uint64,bytes,uint64)":"65b7b7cc","expectCallMinGas(address,uint256,uint64,bytes)":"08e4e116","expectCallMinGas(address,uint256,uint64,bytes,uint64)":"e13a1834","expectEmit()":"440ed10d","expectEmit(address)":"86b9620d","expectEmit(bool,bool,bool,bool)":"491cc7c2","expectEmit(bool,bool,bool,bool,address)":"81bad6f3","expectEmitAnonymous()":"2e5f270c","expectEmitAnonymous(address)":"6fc68705","expectEmitAnonymous(bool,bool,bool,bool,bool)":"c948db5e","expectEmitAnonymous(bool,bool,bool,bool,bool,address)":"71c95899","expectPartialRevert(bytes4)":"11fb5b9c","expectPartialRevert(bytes4,address)":"51aa008a","expectRevert()":"f4844814","expectRevert(address)":"d814f38a","expectRevert(bytes)":"f28dceb3","expectRevert(bytes,address)":"61ebcf12","expectRevert(bytes4)":"c31eb0e0","expectRevert(bytes4,address)":"260bc5de","expectSafeMemory(uint64,uint64)":"6d016688","expectSafeMemoryCall(uint64,uint64)":"05838bf4","fee(uint256)":"39b37ab0","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getArtifactPathByCode(bytes)":"eb74848c","getArtifactPathByDeployedCode(bytes)":"6d853ba5","getBlobBaseFee()":"1f6d6ef7","getBlobhashes()":"f56ff18b","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","getScriptWallets()":"7c49aa1f","getWallets()":"db7a4605","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","isPersistent(address)":"d92d8efd","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","loadAllocs(string)":"b3a056d7","makePersistent(address)":"57e22dde","makePersistent(address,address)":"4074e0a8","makePersistent(address,address,address)":"efb77a75","makePersistent(address[])":"1d9e269e","mockCall(address,bytes,bytes)":"b96213e4","mockCall(address,uint256,bytes,bytes)":"81409b91","mockCallRevert(address,bytes,bytes)":"dbaad147","mockCallRevert(address,uint256,bytes,bytes)":"d23cd037","mockCalls(address,bytes,bytes[])":"5c5c3de9","mockCalls(address,uint256,bytes,bytes[])":"08bcbae1","mockFunction(address,address,bytes)":"adf84d21","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlType(string,string)":"47fa5e11","parseTomlType(string,string,string)":"f9fa5cdb","parseTomlTypeArray(string,string,string)":"49be3743","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","prank(address)":"ca669fa7","prank(address,address)":"47e50cce","prevrandao(bytes32)":"3b925549","prevrandao(uint256)":"9cb1c0d4","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomBool()":"cdc126bd","randomBytes(uint256)":"6c5d32a9","randomBytes4()":"9b7cd579","randomBytes8()":"0497b0a5","randomInt()":"111f1202","randomInt(uint256)":"12845966","randomUint()":"25124730","randomUint(uint256)":"cf81e69c","randomUint(uint256,uint256)":"d61b051b","readCallers()":"4ad0bac9","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","rememberKeys(string,string,string,uint32)":"f8d58eaf","rememberKeys(string,string,uint32)":"97cb9189","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resetNonce(address)":"1c72346d","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","revertTo(uint256)":"44d7f0a4","revertToAndDelete(uint256)":"03e0aca9","revertToState(uint256)":"c2527405","revertToStateAndDelete(uint256)":"3a1985dc","revokePersistent(address)":"997a0222","revokePersistent(address[])":"3ce969e6","roll(uint256)":"1f7b4f30","rollFork(bytes32)":"0f29772b","rollFork(uint256)":"d9bbf3a1","rollFork(uint256,bytes32)":"f2830f7b","rollFork(uint256,uint256)":"d74c83a4","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","selectFork(uint256)":"9ebf6827","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setBlockhash(uint256,bytes32)":"5314b54a","setEnv(string,string)":"3d5923ee","setNonce(address,uint64)":"f8e18b57","setNonceUnsafe(address,uint64)":"9b67b21c","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","skip(bool)":"dd82d13e","skip(bool,string)":"c42a80a7","sleep(uint256)":"fa9d8713","snapshot()":"9711715a","snapshotGasLastCall(string)":"dd9fca12","snapshotGasLastCall(string,string)":"200c6772","snapshotState()":"9cd23835","snapshotValue(string,string,uint256)":"6d2b27d8","snapshotValue(string,uint256)":"51db805a","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startDebugTraceRecording()":"419c8832","startMappingRecording()":"3e9705c0","startPrank(address)":"06447d56","startPrank(address,address)":"45b56078","startSnapshotGas(string)":"3cad9d7b","startSnapshotGas(string,string)":"6cd0cc53","startStateDiffRecording()":"cf22e3c9","stopAndReturnDebugTraceRecording()":"ced398a2","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopExpectSafeMemory()":"0956441b","stopMappingRecording()":"0d4aae9b","stopPrank()":"90c5013b","stopSnapshotGas()":"f6402eda","stopSnapshotGas(string)":"773b2805","stopSnapshotGas(string,string)":"0c9db707","store(address,bytes32,bytes32)":"70ca10bb","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","transact(bytes32)":"be646da1","transact(uint256,bytes32)":"4d8abc4b","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","txGasPrice(uint256)":"48f50c0f","unixTime()":"625387dc","warp(uint256)":"e5d6bf02","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"allowCheatcodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBlobBaseFee\",\"type\":\"uint256\"}],\"name\":\"blobBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"name\":\"blobhashes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newChainId\",\"type\":\"uint256\"}],\"name\":\"chainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearMockedCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"cloneAccount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCoinbase\",\"type\":\"address\"}],\"name\":\"coinbase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"}],\"name\":\"createSelectFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"deal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"deleteStateSnapshot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deleteStateSnapshots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDifficulty\",\"type\":\"uint256\"}],\"name\":\"difficulty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToStateJson\",\"type\":\"string\"}],\"name\":\"dumpState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"newRuntimeBytecode\",\"type\":\"bytes\"}],\"name\":\"etch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"gas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minGas\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"name\":\"expectCallMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"checkTopic0\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic1\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic2\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkTopic3\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"checkData\",\"type\":\"bool\"}],\"name\":\"expectEmitAnonymous\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectPartialRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectPartialRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"revertData\",\"type\":\"bytes4\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reverter\",\"type\":\"address\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expectRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"min\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"max\",\"type\":\"uint64\"}],\"name\":\"expectSafeMemoryCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBasefee\",\"type\":\"uint256\"}],\"name\":\"fee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"code\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByDeployedCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobhashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScriptWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPersistent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"persistent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"pathToAllocsJson\",\"type\":\"string\"}],\"name\":\"loadAllocs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account2\",\"type\":\"address\"}],\"name\":\"makePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"mockCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"revertData\",\"type\":\"bytes\"}],\"name\":\"mockCallRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"name\":\"mockCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"name\":\"mockCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mockFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"prank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newPrevrandao\",\"type\":\"bytes32\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrevrandao\",\"type\":\"uint256\"}],\"name\":\"prevrandao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"randomBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes4\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes8\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"\",\"type\":\"bytes8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"readCallers\",\"outputs\":[{\"internalType\":\"enum VmSafe.CallerMode\",\"name\":\"callerMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"resetNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"name\":\"revertToStateAndDelete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokePersistent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newHeight\",\"type\":\"uint256\"}],\"name\":\"roll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"rollFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"}],\"name\":\"selectFork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"setBlockhash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newNonce\",\"type\":\"uint64\"}],\"name\":\"setNonceUnsafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"skipTest\",\"type\":\"bool\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"snapshotGasLastCall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"snapshotGasLastCall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshotState\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"snapshotValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"snapshotValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startDebugTraceRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"txOrigin\",\"type\":\"address\"}],\"name\":\"startPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"startSnapshotGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"startSnapshotGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnDebugTraceRecording\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"stack\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"memoryInput\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isOutOfGas\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.DebugStep[]\",\"name\":\"step\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopExpectSafeMemory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopPrank\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"group\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopSnapshotGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"}],\"name\":\"transact\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newGasPrice\",\"type\":\"uint256\"}],\"name\":\"txGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newTimestamp\",\"type\":\"uint256\"}],\"name\":\"warp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"activeFork()\":{\"notice\":\"Returns the identifier of the currently active fork. Reverts if no fork is currently active.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"allowCheatcodes(address)\":{\"notice\":\"In forking mode, explicitly grant the given address cheatcode access.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"blobBaseFee(uint256)\":{\"notice\":\"Sets `block.blobbasefee`\"},\"blobhashes(bytes32[])\":{\"notice\":\"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"chainId(uint256)\":{\"notice\":\"Sets `block.chainid`.\"},\"clearMockedCalls()\":{\"notice\":\"Clears all mocked calls.\"},\"cloneAccount(address,address)\":{\"notice\":\"Clones a source account code, state, balance and nonce to a target account and updates in-memory EVM state.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"coinbase(address)\":{\"notice\":\"Sets `block.coinbase`.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createFork(string)\":{\"notice\":\"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork.\"},\"createFork(string,bytes32)\":{\"notice\":\"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork.\"},\"createFork(string,uint256)\":{\"notice\":\"Creates a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createSelectFork(string)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork.\"},\"createSelectFork(string,bytes32)\":{\"notice\":\"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork.\"},\"createSelectFork(string,uint256)\":{\"notice\":\"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deal(address,uint256)\":{\"notice\":\"Sets an address' balance.\"},\"deleteSnapshot(uint256)\":{\"notice\":\"`deleteSnapshot` is being deprecated in favor of `deleteStateSnapshot`. It will be removed in future versions.\"},\"deleteSnapshots()\":{\"notice\":\"`deleteSnapshots` is being deprecated in favor of `deleteStateSnapshots`. It will be removed in future versions.\"},\"deleteStateSnapshot(uint256)\":{\"notice\":\"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist.\"},\"deleteStateSnapshots()\":{\"notice\":\"Removes _all_ snapshots previously created by `snapshot`.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"difficulty(uint256)\":{\"notice\":\"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions.\"},\"dumpState(string)\":{\"notice\":\"Dump a genesis JSON file's `allocs` to disk.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"etch(address,bytes)\":{\"notice\":\"Sets an address' code.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"expectCall(address,bytes)\":{\"notice\":\"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match.\"},\"expectCall(address,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified calldata.\"},\"expectCall(address,uint256,bytes)\":{\"notice\":\"Expects a call to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value` and calldata.\"},\"expectCall(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCall(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata.\"},\"expectCallMinGas(address,uint256,uint64,bytes)\":{\"notice\":\"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectCallMinGas(address,uint256,uint64,bytes,uint64)\":{\"notice\":\"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas.\"},\"expectEmit()\":{\"notice\":\"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmit(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmit(bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmit(bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous()\":{\"notice\":\"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data.\"},\"expectEmitAnonymous(address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool)\":{\"notice\":\"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans).\"},\"expectEmitAnonymous(bool,bool,bool,bool,bool,address)\":{\"notice\":\"Same as the previous method, but also checks supplied address against emitting contract.\"},\"expectPartialRevert(bytes4)\":{\"notice\":\"Expects an error on next call that starts with the revert data.\"},\"expectPartialRevert(bytes4,address)\":{\"notice\":\"Expects an error on next call to reverter address, that starts with the revert data.\"},\"expectRevert()\":{\"notice\":\"Expects an error on next call with any revert data.\"},\"expectRevert(address)\":{\"notice\":\"Expects an error with any revert data on next call to reverter address.\"},\"expectRevert(bytes)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes,address)\":{\"notice\":\"Expects an error from reverter address on next call, that exactly matches the revert data.\"},\"expectRevert(bytes4)\":{\"notice\":\"Expects an error on next call that exactly matches the revert data.\"},\"expectRevert(bytes4,address)\":{\"notice\":\"Expects an error from reverter address on next call, with any revert data.\"},\"expectSafeMemory(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"expectSafeMemoryCall(uint64,uint64)\":{\"notice\":\"Only allows memory writes to offsets [0x00, 0x60) \\u222a [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set.\"},\"fee(uint256)\":{\"notice\":\"Sets `block.basefee`.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getArtifactPathByCode(bytes)\":{\"notice\":\"Gets the artifact path from code (aka. creation code).\"},\"getArtifactPathByDeployedCode(bytes)\":{\"notice\":\"Gets the artifact path from deployed code (aka. runtime code).\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlobhashes()\":{\"notice\":\"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert.\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"getScriptWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"getWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"isPersistent(address)\":{\"notice\":\"Returns true if the account is marked as persistent.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call from the callee perspective.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"loadAllocs(string)\":{\"notice\":\"Load a genesis JSON file's `allocs` into the in-memory EVM state.\"},\"makePersistent(address)\":{\"notice\":\"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks.\"},\"makePersistent(address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address,address,address)\":{\"notice\":\"See `makePersistent(address)`.\"},\"makePersistent(address[])\":{\"notice\":\"See `makePersistent(address)`.\"},\"mockCall(address,bytes,bytes)\":{\"notice\":\"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked.\"},\"mockCall(address,uint256,bytes,bytes)\":{\"notice\":\"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity.\"},\"mockCallRevert(address,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with specified revert data.\"},\"mockCallRevert(address,uint256,bytes,bytes)\":{\"notice\":\"Reverts a call to an address with a specific `msg.value`, with specified revert data.\"},\"mockCalls(address,bytes,bytes[])\":{\"notice\":\"Mocks multiple calls to an address, returning specified data for each call.\"},\"mockCalls(address,uint256,bytes,bytes[])\":{\"notice\":\"Mocks multiple calls to an address with a specific `msg.value`, returning specified data for each call.\"},\"mockFunction(address,address,bytes)\":{\"notice\":\"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlType(string,string)\":{\"notice\":\"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlType(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlTypeArray(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"prank(address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address.\"},\"prank(address,address)\":{\"notice\":\"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input.\"},\"prevrandao(bytes32)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"prevrandao(uint256)\":{\"notice\":\"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomBool()\":{\"notice\":\"Returns a random `bool`.\"},\"randomBytes(uint256)\":{\"notice\":\"Returns a random byte array value of the given length.\"},\"randomBytes4()\":{\"notice\":\"Returns a random fixed-size byte array of length 4.\"},\"randomBytes8()\":{\"notice\":\"Returns a random fixed-size byte array of length 8.\"},\"randomInt()\":{\"notice\":\"Returns a random `int256` value.\"},\"randomInt(uint256)\":{\"notice\":\"Returns a random `int256` value of given bits.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256)\":{\"notice\":\"Returns a random `uint256` value of given bits.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uint256 value between the provided range (=min..=max).\"},\"readCallers()\":{\"notice\":\"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification.\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"rememberKeys(string,string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"rememberKeys(string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resetNonce(address)\":{\"notice\":\"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts.\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"revertTo(uint256)\":{\"notice\":\"`revertTo` is being deprecated in favor of `revertToState`. It will be removed in future versions.\"},\"revertToAndDelete(uint256)\":{\"notice\":\"`revertToAndDelete` is being deprecated in favor of `revertToStateAndDelete`. It will be removed in future versions.\"},\"revertToState(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteStateSnapshot`.\"},\"revertToStateAndDelete(uint256)\":{\"notice\":\"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist.\"},\"revokePersistent(address)\":{\"notice\":\"Revokes persistent status from the address, previously added via `makePersistent`.\"},\"revokePersistent(address[])\":{\"notice\":\"See `revokePersistent(address)`.\"},\"roll(uint256)\":{\"notice\":\"Sets `block.height`.\"},\"rollFork(bytes32)\":{\"notice\":\"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block.\"},\"rollFork(uint256)\":{\"notice\":\"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork.\"},\"rollFork(uint256,bytes32)\":{\"notice\":\"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block.\"},\"rollFork(uint256,uint256)\":{\"notice\":\"Updates the given fork to given block number.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"selectFork(uint256)\":{\"notice\":\"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setBlockhash(uint256,bytes32)\":{\"notice\":\"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"setNonce(address,uint64)\":{\"notice\":\"Sets the nonce of an account. Must be higher than the current nonce of the account.\"},\"setNonceUnsafe(address,uint64)\":{\"notice\":\"Sets the nonce of an account to an arbitrary value.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"skip(bool)\":{\"notice\":\"Marks a test as skipped. Must be called at the top level of a test.\"},\"skip(bool,string)\":{\"notice\":\"Marks a test as skipped with a reason. Must be called at the top level of a test.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"snapshot()\":{\"notice\":\"`snapshot` is being deprecated in favor of `snapshotState`. It will be removed in future versions.\"},\"snapshotGasLastCall(string)\":{\"notice\":\"Snapshot capture the gas usage of the last call by name from the callee perspective.\"},\"snapshotGasLastCall(string,string)\":{\"notice\":\"Snapshot capture the gas usage of the last call by name in a group from the callee perspective.\"},\"snapshotState()\":{\"notice\":\"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertToState`.\"},\"snapshotValue(string,string,uint256)\":{\"notice\":\"Snapshot capture an arbitrary numerical value by name in a group.\"},\"snapshotValue(string,uint256)\":{\"notice\":\"Snapshot capture an arbitrary numerical value by name. The group name is derived from the contract name.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startDebugTraceRecording()\":{\"notice\":\"Records the debug trace during the run.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startPrank(address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called.\"},\"startPrank(address,address)\":{\"notice\":\"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input.\"},\"startSnapshotGas(string)\":{\"notice\":\"Start a snapshot capture of the current gas usage by name. The group name is derived from the contract name.\"},\"startSnapshotGas(string,string)\":{\"notice\":\"Start a snapshot capture of the current gas usage by name in a group.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnDebugTraceRecording()\":{\"notice\":\"Stop debug trace recording and returns the recorded debug trace.\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopExpectSafeMemory()\":{\"notice\":\"Stops all safe memory expectation in the current subcontext.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"stopPrank()\":{\"notice\":\"Resets subsequent calls' `msg.sender` to be `address(this)`.\"},\"stopSnapshotGas()\":{\"notice\":\"Stop the snapshot capture of the current gas by latest snapshot name, capturing the gas used since the start.\"},\"stopSnapshotGas(string)\":{\"notice\":\"Stop the snapshot capture of the current gas usage by name, capturing the gas used since the start. The group name is derived from the contract name.\"},\"stopSnapshotGas(string,string)\":{\"notice\":\"Stop the snapshot capture of the current gas usage by name in a group, capturing the gas used since the start.\"},\"store(address,bytes32,bytes32)\":{\"notice\":\"Stores a value to an address' storage slot.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"transact(bytes32)\":{\"notice\":\"Fetches the given transaction from the active fork and executes it on the current state.\"},\"transact(uint256,bytes32)\":{\"notice\":\"Fetches the given transaction from the given fork and executes it on the current state.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"txGasPrice(uint256)\":{\"notice\":\"Sets `tx.gasprice`.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"warp(uint256)\":{\"notice\":\"Sets `block.timestamp`.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `Vm` interface does allow manipulation of the EVM state. These are all intended to be used in tests, but it is not recommended to use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"Vm\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"activeFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"allowCheatcodes"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"uint256","name":"newBlobBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"blobBaseFee"},{"inputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"blobhashes"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"uint256","name":"newChainId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"chainId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"clearMockedCalls"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cloneAccount"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"address","name":"newCoinbase","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"coinbase"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createSelectFork","outputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deal"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteSnapshots"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deleteStateSnapshot","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deleteStateSnapshots"},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newDifficulty","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"difficulty"},{"inputs":[{"internalType":"string","name":"pathToStateJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"dumpState"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"newRuntimeBytecode","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"etch"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"gas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"uint64","name":"minGas","type":"uint64"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint64","name":"count","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectCallMinGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"},{"internalType":"address","name":"emitter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bool","name":"checkTopic0","type":"bool"},{"internalType":"bool","name":"checkTopic1","type":"bool"},{"internalType":"bool","name":"checkTopic2","type":"bool"},{"internalType":"bool","name":"checkTopic3","type":"bool"},{"internalType":"bool","name":"checkData","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"expectEmitAnonymous"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectPartialRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectPartialRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"},{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes4","name":"revertData","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"address","name":"reverter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"expectRevert"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemory"},{"inputs":[{"internalType":"uint64","name":"min","type":"uint64"},{"internalType":"uint64","name":"max","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expectSafeMemoryCall"},{"inputs":[{"internalType":"uint256","name":"newBasefee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"fee"},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"deployedCode","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByDeployedCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobhashes","outputs":[{"internalType":"bytes32[]","name":"hashes","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getScriptWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"isPersistent","outputs":[{"internalType":"bool","name":"persistent","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"pathToAllocsJson","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"loadAllocs"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"account0","type":"address"},{"internalType":"address","name":"account1","type":"address"},{"internalType":"address","name":"account2","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"makePersistent"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCall"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"revertData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockCallRevert"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"uint256","name":"msgValue","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"mockCalls"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"mockCalls"},{"inputs":[{"internalType":"address","name":"callee","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"mockFunction"},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"prank"},{"inputs":[{"internalType":"bytes32","name":"newPrevrandao","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[{"internalType":"uint256","name":"newPrevrandao","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"prevrandao"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes4","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes8","outputs":[{"internalType":"bytes8","name":"","type":"bytes8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"readCallers","outputs":[{"internalType":"enum VmSafe.CallerMode","name":"callerMode","type":"uint8"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"string","name":"language","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"resetNonce"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertTo","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToState","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"revertToStateAndDelete","outputs":[{"internalType":"bool","name":"success","type":"bool"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokePersistent"},{"inputs":[{"internalType":"uint256","name":"newHeight","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"roll"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"rollFork"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"selectFork"},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockhash"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonce"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"newNonce","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setNonceUnsafe"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"bool","name":"skipTest","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"skip"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshot","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"snapshotGasLastCall","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"snapshotGasLastCall","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"snapshotState","outputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"snapshotValue"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"snapshotValue"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startDebugTraceRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"address","name":"txOrigin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startPrank"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"startSnapshotGas"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"startSnapshotGas"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnDebugTraceRecording","outputs":[{"internalType":"struct VmSafe.DebugStep[]","name":"step","type":"tuple[]","components":[{"internalType":"uint256[]","name":"stack","type":"uint256[]"},{"internalType":"bytes","name":"memoryInput","type":"bytes"},{"internalType":"uint8","name":"opcode","type":"uint8"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isOutOfGas","type":"bool"},{"internalType":"address","name":"contractAddr","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopExpectSafeMemory"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopPrank"},{"inputs":[{"internalType":"string","name":"group","type":"string"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopSnapshotGas","outputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"store"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"bytes32","name":"txHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"transact"},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"newGasPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"txGasPrice"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"warp"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"activeFork()":{"notice":"Returns the identifier of the currently active fork. Reverts if no fork is currently active."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"allowCheatcodes(address)":{"notice":"In forking mode, explicitly grant the given address cheatcode access."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"blobBaseFee(uint256)":{"notice":"Sets `block.blobbasefee`"},"blobhashes(bytes32[])":{"notice":"Sets the blobhashes in the transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"chainId(uint256)":{"notice":"Sets `block.chainid`."},"clearMockedCalls()":{"notice":"Clears all mocked calls."},"cloneAccount(address,address)":{"notice":"Clones a source account code, state, balance and nonce to a target account and updates in-memory EVM state."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"coinbase(address)":{"notice":"Sets `block.coinbase`."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createFork(string)":{"notice":"Creates a new fork with the given endpoint and the _latest_ block and returns the identifier of the fork."},"createFork(string,bytes32)":{"notice":"Creates a new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, and returns the identifier of the fork."},"createFork(string,uint256)":{"notice":"Creates a new fork with the given endpoint and block and returns the identifier of the fork."},"createSelectFork(string)":{"notice":"Creates and also selects a new fork with the given endpoint and the latest block and returns the identifier of the fork."},"createSelectFork(string,bytes32)":{"notice":"Creates and also selects new fork with the given endpoint and at the block the given transaction was mined in, replays all transaction mined in the block before the transaction, returns the identifier of the fork."},"createSelectFork(string,uint256)":{"notice":"Creates and also selects a new fork with the given endpoint and block and returns the identifier of the fork."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deal(address,uint256)":{"notice":"Sets an address' balance."},"deleteSnapshot(uint256)":{"notice":"`deleteSnapshot` is being deprecated in favor of `deleteStateSnapshot`. It will be removed in future versions."},"deleteSnapshots()":{"notice":"`deleteSnapshots` is being deprecated in favor of `deleteStateSnapshots`. It will be removed in future versions."},"deleteStateSnapshot(uint256)":{"notice":"Removes the snapshot with the given ID created by `snapshot`. Takes the snapshot ID to delete. Returns `true` if the snapshot was successfully deleted. Returns `false` if the snapshot does not exist."},"deleteStateSnapshots()":{"notice":"Removes _all_ snapshots previously created by `snapshot`."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"difficulty(uint256)":{"notice":"Sets `block.difficulty`. Not available on EVM versions from Paris onwards. Use `prevrandao` instead. Reverts if used on unsupported EVM versions."},"dumpState(string)":{"notice":"Dump a genesis JSON file's `allocs` to disk."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"etch(address,bytes)":{"notice":"Sets an address' code."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"expectCall(address,bytes)":{"notice":"Expects a call to an address with the specified calldata. Calldata can either be a strict or a partial match."},"expectCall(address,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified calldata."},"expectCall(address,uint256,bytes)":{"notice":"Expects a call to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value` and calldata."},"expectCall(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value`, gas, and calldata."},"expectCall(address,uint256,uint64,bytes,uint64)":{"notice":"Expects given number of calls to an address with the specified `msg.value`, gas, and calldata."},"expectCallMinGas(address,uint256,uint64,bytes)":{"notice":"Expect a call to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectCallMinGas(address,uint256,uint64,bytes,uint64)":{"notice":"Expect given number of calls to an address with the specified `msg.value` and calldata, and a *minimum* amount of gas."},"expectEmit()":{"notice":"Prepare an expected log with all topic and data checks enabled. Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmit(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmit(bool,bool,bool,bool)":{"notice":"Prepare an expected log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmit(bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous()":{"notice":"Prepare an expected anonymous log with all topic and data checks enabled. Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data."},"expectEmitAnonymous(address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectEmitAnonymous(bool,bool,bool,bool,bool)":{"notice":"Prepare an expected anonymous log with (bool checkTopic1, bool checkTopic2, bool checkTopic3, bool checkData.). Call this function, then emit an anonymous event, then call a function. Internally after the call, we check if logs were emitted in the expected order with the expected topics and data (as specified by the booleans)."},"expectEmitAnonymous(bool,bool,bool,bool,bool,address)":{"notice":"Same as the previous method, but also checks supplied address against emitting contract."},"expectPartialRevert(bytes4)":{"notice":"Expects an error on next call that starts with the revert data."},"expectPartialRevert(bytes4,address)":{"notice":"Expects an error on next call to reverter address, that starts with the revert data."},"expectRevert()":{"notice":"Expects an error on next call with any revert data."},"expectRevert(address)":{"notice":"Expects an error with any revert data on next call to reverter address."},"expectRevert(bytes)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes,address)":{"notice":"Expects an error from reverter address on next call, that exactly matches the revert data."},"expectRevert(bytes4)":{"notice":"Expects an error on next call that exactly matches the revert data."},"expectRevert(bytes4,address)":{"notice":"Expects an error from reverter address on next call, with any revert data."},"expectSafeMemory(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) βˆͺ [min, max) in the current subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"expectSafeMemoryCall(uint64,uint64)":{"notice":"Only allows memory writes to offsets [0x00, 0x60) βˆͺ [min, max) in the next created subcontext. If any other memory is written to, the test will fail. Can be called multiple times to add more ranges to the set."},"fee(uint256)":{"notice":"Sets `block.basefee`."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getArtifactPathByCode(bytes)":{"notice":"Gets the artifact path from code (aka. creation code)."},"getArtifactPathByDeployedCode(bytes)":{"notice":"Gets the artifact path from deployed code (aka. runtime code)."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlobhashes()":{"notice":"Gets the blockhashes from the current transaction. Not available on EVM versions before Cancun. If used on unsupported EVM versions it will revert."},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"getScriptWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"getWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"isPersistent(address)":{"notice":"Returns true if the account is marked as persistent."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call from the callee perspective."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"loadAllocs(string)":{"notice":"Load a genesis JSON file's `allocs` into the in-memory EVM state."},"makePersistent(address)":{"notice":"Marks that the account(s) should use persistent storage across fork swaps in a multifork setup Meaning, changes made to the state of this account will be kept when switching forks."},"makePersistent(address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address,address,address)":{"notice":"See `makePersistent(address)`."},"makePersistent(address[])":{"notice":"See `makePersistent(address)`."},"mockCall(address,bytes,bytes)":{"notice":"Mocks a call to an address, returning specified data. Calldata can either be strict or a partial match, e.g. if you only pass a Solidity selector to the expected calldata, then the entire Solidity function will be mocked."},"mockCall(address,uint256,bytes,bytes)":{"notice":"Mocks a call to an address with a specific `msg.value`, returning specified data. Calldata match takes precedence over `msg.value` in case of ambiguity."},"mockCallRevert(address,bytes,bytes)":{"notice":"Reverts a call to an address with specified revert data."},"mockCallRevert(address,uint256,bytes,bytes)":{"notice":"Reverts a call to an address with a specific `msg.value`, with specified revert data."},"mockCalls(address,bytes,bytes[])":{"notice":"Mocks multiple calls to an address, returning specified data for each call."},"mockCalls(address,uint256,bytes,bytes[])":{"notice":"Mocks multiple calls to an address with a specific `msg.value`, returning specified data for each call."},"mockFunction(address,address,bytes)":{"notice":"Whenever a call is made to `callee` with calldata `data`, this cheatcode instead calls `target` with the same calldata. This functionality is similar to a delegate call made to `target` contract from `callee`. Can be used to substitute a call to a function with another implementation that captures the primary logic of the original function but is easier to reason about. If calldata is not a strict match then partial match by selector is attempted."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlType(string,string)":{"notice":"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`."},"parseTomlType(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`."},"parseTomlTypeArray(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"prank(address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address."},"prank(address,address)":{"notice":"Sets the *next* call's `msg.sender` to be the input address, and the `tx.origin` to be the second input."},"prevrandao(bytes32)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"prevrandao(uint256)":{"notice":"Sets `block.prevrandao`. Not available on EVM versions before Paris. Use `difficulty` instead. If used on unsupported EVM versions it will revert."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomBool()":{"notice":"Returns a random `bool`."},"randomBytes(uint256)":{"notice":"Returns a random byte array value of the given length."},"randomBytes4()":{"notice":"Returns a random fixed-size byte array of length 4."},"randomBytes8()":{"notice":"Returns a random fixed-size byte array of length 8."},"randomInt()":{"notice":"Returns a random `int256` value."},"randomInt(uint256)":{"notice":"Returns a random `int256` value of given bits."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256)":{"notice":"Returns a random `uint256` value of given bits."},"randomUint(uint256,uint256)":{"notice":"Returns random uint256 value between the provided range (=min..=max)."},"readCallers()":{"notice":"Reads the current `msg.sender` and `tx.origin` from state and reports if there is any active caller modification."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"rememberKeys(string,string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"rememberKeys(string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resetNonce(address)":{"notice":"Resets the nonce of an account to 0 for EOAs and 1 for contract accounts."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"revertTo(uint256)":{"notice":"`revertTo` is being deprecated in favor of `revertToState`. It will be removed in future versions."},"revertToAndDelete(uint256)":{"notice":"`revertToAndDelete` is being deprecated in favor of `revertToStateAndDelete`. It will be removed in future versions."},"revertToState(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted. Returns `false` if the snapshot does not exist. **Note:** This does not automatically delete the snapshot. To delete the snapshot use `deleteStateSnapshot`."},"revertToStateAndDelete(uint256)":{"notice":"Revert the state of the EVM to a previous snapshot and automatically deletes the snapshots Takes the snapshot ID to revert to. Returns `true` if the snapshot was successfully reverted and deleted. Returns `false` if the snapshot does not exist."},"revokePersistent(address)":{"notice":"Revokes persistent status from the address, previously added via `makePersistent`."},"revokePersistent(address[])":{"notice":"See `revokePersistent(address)`."},"roll(uint256)":{"notice":"Sets `block.height`."},"rollFork(bytes32)":{"notice":"Updates the currently active fork to given transaction. This will `rollFork` with the number of the block the transaction was mined in and replays all transaction mined before it in the block."},"rollFork(uint256)":{"notice":"Updates the currently active fork to given block number This is similar to `roll` but for the currently active fork."},"rollFork(uint256,bytes32)":{"notice":"Updates the given fork to block number of the given transaction and replays all transaction mined before it in the block."},"rollFork(uint256,uint256)":{"notice":"Updates the given fork to given block number."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"selectFork(uint256)":{"notice":"Takes a fork identifier created by `createFork` and sets the corresponding forked state as active."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setBlockhash(uint256,bytes32)":{"notice":"Set blockhash for the current block. It only sets the blockhash for blocks where `block.number - 256 <= number < block.number`."},"setEnv(string,string)":{"notice":"Sets environment variables."},"setNonce(address,uint64)":{"notice":"Sets the nonce of an account. Must be higher than the current nonce of the account."},"setNonceUnsafe(address,uint64)":{"notice":"Sets the nonce of an account to an arbitrary value."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"skip(bool)":{"notice":"Marks a test as skipped. Must be called at the top level of a test."},"skip(bool,string)":{"notice":"Marks a test as skipped with a reason. Must be called at the top level of a test."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"snapshot()":{"notice":"`snapshot` is being deprecated in favor of `snapshotState`. It will be removed in future versions."},"snapshotGasLastCall(string)":{"notice":"Snapshot capture the gas usage of the last call by name from the callee perspective."},"snapshotGasLastCall(string,string)":{"notice":"Snapshot capture the gas usage of the last call by name in a group from the callee perspective."},"snapshotState()":{"notice":"Snapshot the current state of the evm. Returns the ID of the snapshot that was created. To revert a snapshot use `revertToState`."},"snapshotValue(string,string,uint256)":{"notice":"Snapshot capture an arbitrary numerical value by name in a group."},"snapshotValue(string,uint256)":{"notice":"Snapshot capture an arbitrary numerical value by name. The group name is derived from the contract name."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startDebugTraceRecording()":{"notice":"Records the debug trace during the run."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startPrank(address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called."},"startPrank(address,address)":{"notice":"Sets all subsequent calls' `msg.sender` to be the input address until `stopPrank` is called, and the `tx.origin` to be the second input."},"startSnapshotGas(string)":{"notice":"Start a snapshot capture of the current gas usage by name. The group name is derived from the contract name."},"startSnapshotGas(string,string)":{"notice":"Start a snapshot capture of the current gas usage by name in a group."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnDebugTraceRecording()":{"notice":"Stop debug trace recording and returns the recorded debug trace."},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopExpectSafeMemory()":{"notice":"Stops all safe memory expectation in the current subcontext."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"stopPrank()":{"notice":"Resets subsequent calls' `msg.sender` to be `address(this)`."},"stopSnapshotGas()":{"notice":"Stop the snapshot capture of the current gas by latest snapshot name, capturing the gas used since the start."},"stopSnapshotGas(string)":{"notice":"Stop the snapshot capture of the current gas usage by name, capturing the gas used since the start. The group name is derived from the contract name."},"stopSnapshotGas(string,string)":{"notice":"Stop the snapshot capture of the current gas usage by name in a group, capturing the gas used since the start."},"store(address,bytes32,bytes32)":{"notice":"Stores a value to an address' storage slot."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"transact(bytes32)":{"notice":"Fetches the given transaction from the active fork and executes it on the current state."},"transact(uint256,bytes32)":{"notice":"Fetches the given transaction from the given fork and executes it on the current state."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"txGasPrice(uint256)":{"notice":"Sets `tx.gasprice`."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"warp(uint256)":{"notice":"Sets `block.timestamp`."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"Vm"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file diff --git a/out/Vm.sol/VmSafe.json b/out/Vm.sol/VmSafe.json index 690b7ef..d4dbeee 100644 --- a/out/Vm.sol/VmSafe.json +++ b/out/Vm.sol/VmSafe.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByCode","inputs":[{"name":"code","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByDeployedCode","inputs":[{"name":"deployedCode","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getScriptWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlTypeArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomBool","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"randomBytes","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"randomBytes4","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"randomBytes8","inputs":[],"outputs":[{"name":"","type":"bytes8","internalType":"bytes8"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"language","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startDebugTraceRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnDebugTraceRecording","inputs":[],"outputs":[{"name":"step","type":"tuple[]","internalType":"struct VmSafe.DebugStep[]","components":[{"name":"stack","type":"uint256[]","internalType":"uint256[]"},{"name":"memoryInput","type":"bytes","internalType":"bytes"},{"name":"opcode","type":"uint8","internalType":"uint8"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isOutOfGas","type":"bool","internalType":"bool"},{"name":"contractAddr","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","closeFile(string)":"48c3241f","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getArtifactPathByCode(bytes)":"eb74848c","getArtifactPathByDeployedCode(bytes)":"6d853ba5","getBlobBaseFee()":"1f6d6ef7","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","getScriptWallets()":"7c49aa1f","getWallets()":"db7a4605","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlType(string,string)":"47fa5e11","parseTomlType(string,string,string)":"f9fa5cdb","parseTomlTypeArray(string,string,string)":"49be3743","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomBool()":"cdc126bd","randomBytes(uint256)":"6c5d32a9","randomBytes4()":"9b7cd579","randomBytes8()":"0497b0a5","randomInt()":"111f1202","randomInt(uint256)":"12845966","randomUint()":"25124730","randomUint(uint256)":"cf81e69c","randomUint(uint256,uint256)":"d61b051b","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","rememberKeys(string,string,string,uint32)":"f8d58eaf","rememberKeys(string,string,uint32)":"97cb9189","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setEnv(string,string)":"3d5923ee","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","sleep(uint256)":"fa9d8713","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startDebugTraceRecording()":"419c8832","startMappingRecording()":"3e9705c0","startStateDiffRecording()":"cf22e3c9","stopAndReturnDebugTraceRecording()":"ced398a2","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopMappingRecording()":"0d4aae9b","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","unixTime()":"625387dc","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"code\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByDeployedCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScriptWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"randomBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes4\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes8\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"\",\"type\":\"bytes8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startDebugTraceRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnDebugTraceRecording\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"stack\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"memoryInput\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isOutOfGas\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.DebugStep[]\",\"name\":\"step\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getArtifactPathByCode(bytes)\":{\"notice\":\"Gets the artifact path from code (aka. creation code).\"},\"getArtifactPathByDeployedCode(bytes)\":{\"notice\":\"Gets the artifact path from deployed code (aka. runtime code).\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"getScriptWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"getWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call from the callee perspective.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlType(string,string)\":{\"notice\":\"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlType(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlTypeArray(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomBool()\":{\"notice\":\"Returns a random `bool`.\"},\"randomBytes(uint256)\":{\"notice\":\"Returns a random byte array value of the given length.\"},\"randomBytes4()\":{\"notice\":\"Returns a random fixed-size byte array of length 4.\"},\"randomBytes8()\":{\"notice\":\"Returns a random fixed-size byte array of length 8.\"},\"randomInt()\":{\"notice\":\"Returns a random `int256` value.\"},\"randomInt(uint256)\":{\"notice\":\"Returns a random `int256` value of given bits.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256)\":{\"notice\":\"Returns a random `uint256` value of given bits.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uint256 value between the provided range (=min..=max).\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"rememberKeys(string,string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"rememberKeys(string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startDebugTraceRecording()\":{\"notice\":\"Records the debug trace during the run.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnDebugTraceRecording()\":{\"notice\":\"Stop debug trace recording and returns the recorded debug trace.\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may result in Script simulations differing from on-chain execution. It is recommended to only use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"deployedCode","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByDeployedCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getScriptWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes4","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes8","outputs":[{"internalType":"bytes8","name":"","type":"bytes8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"string","name":"language","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startDebugTraceRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnDebugTraceRecording","outputs":[{"internalType":"struct VmSafe.DebugStep[]","name":"step","type":"tuple[]","components":[{"internalType":"uint256[]","name":"stack","type":"uint256[]"},{"internalType":"bytes","name":"memoryInput","type":"bytes"},{"internalType":"uint8","name":"opcode","type":"uint8"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isOutOfGas","type":"bool"},{"internalType":"address","name":"contractAddr","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getArtifactPathByCode(bytes)":{"notice":"Gets the artifact path from code (aka. creation code)."},"getArtifactPathByDeployedCode(bytes)":{"notice":"Gets the artifact path from deployed code (aka. runtime code)."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"getScriptWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"getWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call from the callee perspective."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlType(string,string)":{"notice":"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`."},"parseTomlType(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`."},"parseTomlTypeArray(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomBool()":{"notice":"Returns a random `bool`."},"randomBytes(uint256)":{"notice":"Returns a random byte array value of the given length."},"randomBytes4()":{"notice":"Returns a random fixed-size byte array of length 4."},"randomBytes8()":{"notice":"Returns a random fixed-size byte array of length 8."},"randomInt()":{"notice":"Returns a random `int256` value."},"randomInt(uint256)":{"notice":"Returns a random `int256` value of given bits."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256)":{"notice":"Returns a random `uint256` value of given bits."},"randomUint(uint256,uint256)":{"notice":"Returns random uint256 value between the provided range (=min..=max)."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"rememberKeys(string,string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"rememberKeys(string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setEnv(string,string)":{"notice":"Sets environment variables."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startDebugTraceRecording()":{"notice":"Records the debug trace during the run."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnDebugTraceRecording()":{"notice":"Stop debug trace recording and returns the recorded debug trace."},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file +{"abi":[{"type":"function","name":"accesses","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[{"name":"readSlots","type":"bytes32[]","internalType":"bytes32[]"},{"name":"writeSlots","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"addr","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbs","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqAbsDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRel","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertApproxEqRelDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"maxPercentDelta","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertFalse","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertGtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLe","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLeDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLt","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertLtDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool","internalType":"bool"},{"name":"right","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bool[]","internalType":"bool[]"},{"name":"right","type":"bool[]","internalType":"bool[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address[]","internalType":"address[]"},{"name":"right","type":"address[]","internalType":"address[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string","internalType":"string"},{"name":"right","type":"string","internalType":"string"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes","internalType":"bytes"},{"name":"right","type":"bytes","internalType":"bytes"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256[]","internalType":"uint256[]"},{"name":"right","type":"uint256[]","internalType":"uint256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"address","internalType":"address"},{"name":"right","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32","internalType":"bytes32"},{"name":"right","type":"bytes32","internalType":"bytes32"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes32[]","internalType":"bytes32[]"},{"name":"right","type":"bytes32[]","internalType":"bytes32[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"string[]","internalType":"string[]"},{"name":"right","type":"string[]","internalType":"string[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256[]","internalType":"int256[]"},{"name":"right","type":"int256[]","internalType":"int256[]"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"bytes[]","internalType":"bytes[]"},{"name":"right","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEq","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"int256","internalType":"int256"},{"name":"right","type":"int256","internalType":"int256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertNotEqDecimal","inputs":[{"name":"left","type":"uint256","internalType":"uint256"},{"name":"right","type":"uint256","internalType":"uint256"},{"name":"decimals","type":"uint256","internalType":"uint256"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assertTrue","inputs":[{"name":"condition","type":"bool","internalType":"bool"},{"name":"error","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assume","inputs":[{"name":"condition","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"assumeNoRevert","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"breakpoint","inputs":[{"name":"char","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"broadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"broadcastRawTransaction","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreate2Address","inputs":[{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initCodeHash","type":"bytes32","internalType":"bytes32"},{"name":"deployer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"computeCreateAddress","inputs":[{"name":"deployer","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"copyFile","inputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"copied","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"copyStorage","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"createWallet","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"walletLabel","type":"string","internalType":"string"}],"outputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"},{"name":"constructorArgs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"deployedAddress","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"},{"name":"language","type":"string","internalType":"string"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"deriveKey","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"ensNamehash","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envAddress","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envBool","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envBytes","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envBytes32","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envExists","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envInt","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"value","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"value","type":"int256[]","internalType":"int256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool","internalType":"bool"}],"outputs":[{"name":"value","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"address","internalType":"address"}],"outputs":[{"name":"value","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"value","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"int256","internalType":"int256"}],"outputs":[{"name":"value","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"value","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"defaultValue","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envOr","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"},{"name":"defaultValue","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"value","type":"bool[]","internalType":"bool[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"envString","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"envUint","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"delim","type":"string","internalType":"string"}],"outputs":[{"name":"value","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"eth_getLogs","inputs":[{"name":"fromBlock","type":"uint256","internalType":"uint256"},{"name":"toBlock","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.EthGetLogs[]","components":[{"name":"emitter","type":"address","internalType":"address"},{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"transactionHash","type":"bytes32","internalType":"bytes32"},{"name":"transactionIndex","type":"uint64","internalType":"uint64"},{"name":"logIndex","type":"uint256","internalType":"uint256"},{"name":"removed","type":"bool","internalType":"bool"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"exists","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"ffi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"fsMetadata","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct VmSafe.FsMetadata","components":[{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"},{"name":"length","type":"uint256","internalType":"uint256"},{"name":"readOnly","type":"bool","internalType":"bool"},{"name":"modified","type":"uint256","internalType":"uint256"},{"name":"accessed","type":"uint256","internalType":"uint256"},{"name":"created","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByCode","inputs":[{"name":"code","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getArtifactPathByDeployedCode","inputs":[{"name":"deployedCode","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getBlobBaseFee","inputs":[],"outputs":[{"name":"blobBaseFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockNumber","inputs":[],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockTimestamp","inputs":[],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"creationBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getDeployedCode","inputs":[{"name":"artifactPath","type":"string","internalType":"string"}],"outputs":[{"name":"runtimeBytecode","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getFoundryVersion","inputs":[],"outputs":[{"name":"version","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getLabel","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"currentLabel","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"getMappingKeyAndParentOf","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"elementSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"found","type":"bool","internalType":"bool"},{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"parent","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingLength","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"length","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMappingSlotAt","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"mappingSlot","type":"bytes32","internalType":"bytes32"},{"name":"idx","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getNonce","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"getRecordedLogs","inputs":[],"outputs":[{"name":"logs","type":"tuple[]","internalType":"struct VmSafe.Log[]","components":[{"name":"topics","type":"bytes32[]","internalType":"bytes32[]"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"emitter","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"getScriptWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"getWallets","inputs":[],"outputs":[{"name":"wallets","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"indexOf","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"isContext","inputs":[{"name":"context","type":"uint8","internalType":"enum VmSafe.ForgeContext"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"isFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"keyExists","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyExistsToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"label","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"newLabel","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastCallGas","inputs":[],"outputs":[{"name":"gas","type":"tuple","internalType":"struct VmSafe.Gas","components":[{"name":"gasLimit","type":"uint64","internalType":"uint64"},{"name":"gasTotalUsed","type":"uint64","internalType":"uint64"},{"name":"gasMemoryUsed","type":"uint64","internalType":"uint64"},{"name":"gasRefunded","type":"int64","internalType":"int64"},{"name":"gasRemaining","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"load","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"data","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"parseAddress","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseBool","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseBytes32","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseInt","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddress","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonAddressArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBool","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBoolArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytes32Array","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonBytesArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonInt","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonIntArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonKeys","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonString","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonStringArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonType","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonTypeArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUint","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseJsonUintArray","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseToml","inputs":[{"name":"toml","type":"string","internalType":"string"}],"outputs":[{"name":"abiEncodedData","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddress","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlAddressArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBool","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBoolArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool[]","internalType":"bool[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytes32Array","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlBytesArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlInt","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlIntArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"int256[]","internalType":"int256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlKeys","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"keys","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlString","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlStringArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlType","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlTypeArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUint","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"parseTomlUintArray","inputs":[{"name":"toml","type":"string","internalType":"string"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"parseUint","inputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"outputs":[{"name":"parsedValue","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"pauseGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"projectRoot","inputs":[],"outputs":[{"name":"path","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"prompt","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptAddress","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecret","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"input","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptSecretUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"promptUint","inputs":[{"name":"promptText","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"publicKeyP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"randomAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomBool","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"randomBytes","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"randomBytes4","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"randomBytes8","inputs":[],"outputs":[{"name":"","type":"bytes8","internalType":"bytes8"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomInt","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"randomUint","inputs":[{"name":"bits","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"randomUint","inputs":[{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"maxDepth","type":"uint64","internalType":"uint64"},{"name":"followLinks","type":"bool","internalType":"bool"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readDir","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"entries","type":"tuple[]","internalType":"struct VmSafe.DirEntry[]","components":[{"name":"errorMessage","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isDir","type":"bool","internalType":"bool"},{"name":"isSymlink","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"readFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"readLine","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[{"name":"line","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"readLink","inputs":[{"name":"linkPath","type":"string","internalType":"string"}],"outputs":[{"name":"targetPath","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"record","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recordLogs","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKey","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"keyAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"rememberKeys","inputs":[{"name":"mnemonic","type":"string","internalType":"string"},{"name":"derivationPath","type":"string","internalType":"string"},{"name":"language","type":"string","internalType":"string"},{"name":"count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"keyAddrs","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"removeDir","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"recursive","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeFile","inputs":[{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"replace","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"resetGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeGasMetering","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resumeTracing","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"rpc","inputs":[{"name":"urlOrAlias","type":"string","internalType":"string"},{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpc","inputs":[{"name":"method","type":"string","internalType":"string"},{"name":"params","type":"string","internalType":"string"}],"outputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"rpcUrl","inputs":[{"name":"rpcAlias","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"rpcUrlStructs","inputs":[],"outputs":[{"name":"urls","type":"tuple[]","internalType":"struct VmSafe.Rpc[]","components":[{"name":"key","type":"string","internalType":"string"},{"name":"url","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"rpcUrls","inputs":[],"outputs":[{"name":"urls","type":"string[2][]","internalType":"string[2][]"}],"stateMutability":"view"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeAddress","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBool","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeBytes32","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeInt","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"int256[]","internalType":"int256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJson","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"serializeJsonType","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"typeDescription","type":"string","internalType":"string"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeString","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUint","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"serializeUintToHex","inputs":[{"name":"objectKey","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"json","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"setArbitraryStorage","inputs":[{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnv","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sign","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"sign","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"wallet","type":"tuple","internalType":"struct VmSafe.Wallet","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"publicKeyX","type":"uint256","internalType":"uint256"},{"name":"publicKeyY","type":"uint256","internalType":"uint256"},{"name":"privateKey","type":"uint256","internalType":"uint256"}]},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"signCompact","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signCompact","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"vs","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"signP256","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"},{"name":"digest","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"sleep","inputs":[{"name":"duration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"split","inputs":[{"name":"input","type":"string","internalType":"string"},{"name":"delimiter","type":"string","internalType":"string"}],"outputs":[{"name":"outputs","type":"string[]","internalType":"string[]"}],"stateMutability":"pure"},{"type":"function","name":"startBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startBroadcast","inputs":[{"name":"privateKey","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startDebugTraceRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"startStateDiffRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnDebugTraceRecording","inputs":[],"outputs":[{"name":"step","type":"tuple[]","internalType":"struct VmSafe.DebugStep[]","components":[{"name":"stack","type":"uint256[]","internalType":"uint256[]"},{"name":"memoryInput","type":"bytes","internalType":"bytes"},{"name":"opcode","type":"uint8","internalType":"uint8"},{"name":"depth","type":"uint64","internalType":"uint64"},{"name":"isOutOfGas","type":"bool","internalType":"bool"},{"name":"contractAddr","type":"address","internalType":"address"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopAndReturnStateDiff","inputs":[],"outputs":[{"name":"accountAccesses","type":"tuple[]","internalType":"struct VmSafe.AccountAccess[]","components":[{"name":"chainInfo","type":"tuple","internalType":"struct VmSafe.ChainInfo","components":[{"name":"forkId","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"}]},{"name":"kind","type":"uint8","internalType":"enum VmSafe.AccountAccessKind"},{"name":"account","type":"address","internalType":"address"},{"name":"accessor","type":"address","internalType":"address"},{"name":"initialized","type":"bool","internalType":"bool"},{"name":"oldBalance","type":"uint256","internalType":"uint256"},{"name":"newBalance","type":"uint256","internalType":"uint256"},{"name":"deployedCode","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"reverted","type":"bool","internalType":"bool"},{"name":"storageAccesses","type":"tuple[]","internalType":"struct VmSafe.StorageAccess[]","components":[{"name":"account","type":"address","internalType":"address"},{"name":"slot","type":"bytes32","internalType":"bytes32"},{"name":"isWrite","type":"bool","internalType":"bool"},{"name":"previousValue","type":"bytes32","internalType":"bytes32"},{"name":"newValue","type":"bytes32","internalType":"bytes32"},{"name":"reverted","type":"bool","internalType":"bool"}]},{"name":"depth","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"stopBroadcast","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stopMappingRecording","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toBase64URL","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toLowercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"address","internalType":"address"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"int256","internalType":"int256"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toString","inputs":[{"name":"value","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stringifiedValue","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"toUppercase","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"trim","inputs":[{"name":"input","type":"string","internalType":"string"}],"outputs":[{"name":"output","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"tryFfi","inputs":[{"name":"commandInput","type":"string[]","internalType":"string[]"}],"outputs":[{"name":"result","type":"tuple","internalType":"struct VmSafe.FfiResult","components":[{"name":"exitCode","type":"int32","internalType":"int32"},{"name":"stdout","type":"bytes","internalType":"bytes"},{"name":"stderr","type":"bytes","internalType":"bytes"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"unixTime","inputs":[],"outputs":[{"name":"milliseconds","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"writeFile","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeFileBinary","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeJson","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeLine","inputs":[{"name":"path","type":"string","internalType":"string"},{"name":"data","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"},{"name":"valueKey","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"writeToml","inputs":[{"name":"json","type":"string","internalType":"string"},{"name":"path","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"accesses(address)":"65bc9481","addr(uint256)":"ffa18649","assertApproxEqAbs(int256,int256,uint256)":"240f839d","assertApproxEqAbs(int256,int256,uint256,string)":"8289e621","assertApproxEqAbs(uint256,uint256,uint256)":"16d207c6","assertApproxEqAbs(uint256,uint256,uint256,string)":"f710b062","assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":"3d5bc8bc","assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":"6a5066d4","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":"045c55ce","assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":"60429eb2","assertApproxEqRel(int256,int256,uint256)":"fea2d14f","assertApproxEqRel(int256,int256,uint256,string)":"ef277d72","assertApproxEqRel(uint256,uint256,uint256)":"8cf25ef4","assertApproxEqRel(uint256,uint256,uint256,string)":"1ecb7d33","assertApproxEqRelDecimal(int256,int256,uint256,uint256)":"abbf21cc","assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":"fccc11c4","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":"21ed2977","assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":"82d6c8fd","assertEq(address,address)":"515361f6","assertEq(address,address,string)":"2f2769d1","assertEq(address[],address[])":"3868ac34","assertEq(address[],address[],string)":"3e9173c5","assertEq(bool,bool)":"f7fe3477","assertEq(bool,bool,string)":"4db19e7e","assertEq(bool[],bool[])":"707df785","assertEq(bool[],bool[],string)":"e48a8f8d","assertEq(bytes,bytes)":"97624631","assertEq(bytes,bytes,string)":"e24fed00","assertEq(bytes32,bytes32)":"7c84c69b","assertEq(bytes32,bytes32,string)":"c1fa1ed0","assertEq(bytes32[],bytes32[])":"0cc9ee84","assertEq(bytes32[],bytes32[],string)":"e03e9177","assertEq(bytes[],bytes[])":"e5fb9b4a","assertEq(bytes[],bytes[],string)":"f413f0b6","assertEq(int256,int256)":"fe74f05b","assertEq(int256,int256,string)":"714a2f13","assertEq(int256[],int256[])":"711043ac","assertEq(int256[],int256[],string)":"191f1b30","assertEq(string,string)":"f320d963","assertEq(string,string,string)":"36f656d8","assertEq(string[],string[])":"cf1c049c","assertEq(string[],string[],string)":"eff6b27d","assertEq(uint256,uint256)":"98296c54","assertEq(uint256,uint256,string)":"88b44c85","assertEq(uint256[],uint256[])":"975d5a12","assertEq(uint256[],uint256[],string)":"5d18c73a","assertEqDecimal(int256,int256,uint256)":"48016c04","assertEqDecimal(int256,int256,uint256,string)":"7e77b0c5","assertEqDecimal(uint256,uint256,uint256)":"27af7d9c","assertEqDecimal(uint256,uint256,uint256,string)":"d0cbbdef","assertFalse(bool)":"a5982885","assertFalse(bool,string)":"7ba04809","assertGe(int256,int256)":"0a30b771","assertGe(int256,int256,string)":"a84328dd","assertGe(uint256,uint256)":"a8d4d1d9","assertGe(uint256,uint256,string)":"e25242c0","assertGeDecimal(int256,int256,uint256)":"dc28c0f1","assertGeDecimal(int256,int256,uint256,string)":"5df93c9b","assertGeDecimal(uint256,uint256,uint256)":"3d1fe08a","assertGeDecimal(uint256,uint256,uint256,string)":"8bff9133","assertGt(int256,int256)":"5a362d45","assertGt(int256,int256,string)":"f8d33b9b","assertGt(uint256,uint256)":"db07fcd2","assertGt(uint256,uint256,string)":"d9a3c4d2","assertGtDecimal(int256,int256,uint256)":"78611f0e","assertGtDecimal(int256,int256,uint256,string)":"04a5c7ab","assertGtDecimal(uint256,uint256,uint256)":"eccd2437","assertGtDecimal(uint256,uint256,uint256,string)":"64949a8d","assertLe(int256,int256)":"95fd154e","assertLe(int256,int256,string)":"4dfe692c","assertLe(uint256,uint256)":"8466f415","assertLe(uint256,uint256,string)":"d17d4b0d","assertLeDecimal(int256,int256,uint256)":"11d1364a","assertLeDecimal(int256,int256,uint256,string)":"aa5cf788","assertLeDecimal(uint256,uint256,uint256)":"c304aab7","assertLeDecimal(uint256,uint256,uint256,string)":"7fefbbe0","assertLt(int256,int256)":"3e914080","assertLt(int256,int256,string)":"9ff531e3","assertLt(uint256,uint256)":"b12fc005","assertLt(uint256,uint256,string)":"65d5c135","assertLtDecimal(int256,int256,uint256)":"dbe8d88b","assertLtDecimal(int256,int256,uint256,string)":"40f0b4e0","assertLtDecimal(uint256,uint256,uint256)":"2077337e","assertLtDecimal(uint256,uint256,uint256,string)":"a972d037","assertNotEq(address,address)":"b12e1694","assertNotEq(address,address,string)":"8775a591","assertNotEq(address[],address[])":"46d0b252","assertNotEq(address[],address[],string)":"72c7e0b5","assertNotEq(bool,bool)":"236e4d66","assertNotEq(bool,bool,string)":"1091a261","assertNotEq(bool[],bool[])":"286fafea","assertNotEq(bool[],bool[],string)":"62c6f9fb","assertNotEq(bytes,bytes)":"3cf78e28","assertNotEq(bytes,bytes,string)":"9507540e","assertNotEq(bytes32,bytes32)":"898e83fc","assertNotEq(bytes32,bytes32,string)":"b2332f51","assertNotEq(bytes32[],bytes32[])":"0603ea68","assertNotEq(bytes32[],bytes32[],string)":"b873634c","assertNotEq(bytes[],bytes[])":"edecd035","assertNotEq(bytes[],bytes[],string)":"1dcd1f68","assertNotEq(int256,int256)":"f4c004e3","assertNotEq(int256,int256,string)":"4724c5b9","assertNotEq(int256[],int256[])":"0b72f4ef","assertNotEq(int256[],int256[],string)":"d3977322","assertNotEq(string,string)":"6a8237b3","assertNotEq(string,string,string)":"78bdcea7","assertNotEq(string[],string[])":"bdfacbe8","assertNotEq(string[],string[],string)":"b67187f3","assertNotEq(uint256,uint256)":"b7909320","assertNotEq(uint256,uint256,string)":"98f9bdbd","assertNotEq(uint256[],uint256[])":"56f29cba","assertNotEq(uint256[],uint256[],string)":"9a7fbd8f","assertNotEqDecimal(int256,int256,uint256)":"14e75680","assertNotEqDecimal(int256,int256,uint256,string)":"33949f0b","assertNotEqDecimal(uint256,uint256,uint256)":"669efca7","assertNotEqDecimal(uint256,uint256,uint256,string)":"f5a55558","assertTrue(bool)":"0c9fd581","assertTrue(bool,string)":"a34edc03","assume(bool)":"4c63e562","assumeNoRevert()":"285b366a","breakpoint(string)":"f0259e92","breakpoint(string,bool)":"f7d39a8d","broadcast()":"afc98040","broadcast(address)":"e6962cdb","broadcast(uint256)":"f67a965b","broadcastRawTransaction(bytes)":"8c0c72e0","closeFile(string)":"48c3241f","computeCreate2Address(bytes32,bytes32)":"890c283b","computeCreate2Address(bytes32,bytes32,address)":"d323826a","computeCreateAddress(address,uint256)":"74637a7a","copyFile(string,string)":"a54a87d8","copyStorage(address,address)":"203dac0d","createDir(string,bool)":"168b64d3","createWallet(string)":"7404f1d2","createWallet(uint256)":"7a675bb6","createWallet(uint256,string)":"ed7c5462","deployCode(string)":"9a8325a0","deployCode(string,bytes)":"29ce9dde","deriveKey(string,string,uint32)":"6bcb2c1b","deriveKey(string,string,uint32,string)":"29233b1f","deriveKey(string,uint32)":"6229498b","deriveKey(string,uint32,string)":"32c8176d","ensNamehash(string)":"8c374c65","envAddress(string)":"350d56bf","envAddress(string,string)":"ad31b9fa","envBool(string)":"7ed1ec7d","envBool(string,string)":"aaaddeaf","envBytes(string)":"4d7baf06","envBytes(string,string)":"ddc2651b","envBytes32(string)":"97949042","envBytes32(string,string)":"5af231c1","envExists(string)":"ce8365f9","envInt(string)":"892a0c61","envInt(string,string)":"42181150","envOr(string,address)":"561fe540","envOr(string,bool)":"4777f3cf","envOr(string,bytes)":"b3e47705","envOr(string,bytes32)":"b4a85892","envOr(string,int256)":"bbcb713e","envOr(string,string)":"d145736c","envOr(string,string,address[])":"c74e9deb","envOr(string,string,bool[])":"eb85e83b","envOr(string,string,bytes32[])":"2281f367","envOr(string,string,bytes[])":"64bc3e64","envOr(string,string,int256[])":"4700d74b","envOr(string,string,string[])":"859216bc","envOr(string,string,uint256[])":"74318528","envOr(string,uint256)":"5e97348f","envString(string)":"f877cb19","envString(string,string)":"14b02bc9","envUint(string)":"c1978d1f","envUint(string,string)":"f3dec099","eth_getLogs(uint256,uint256,address,bytes32[])":"35e1349b","exists(string)":"261a323e","ffi(string[])":"89160467","fsMetadata(string)":"af368a08","getArtifactPathByCode(bytes)":"eb74848c","getArtifactPathByDeployedCode(bytes)":"6d853ba5","getBlobBaseFee()":"1f6d6ef7","getBlockNumber()":"42cbb15c","getBlockTimestamp()":"796b89b9","getCode(string)":"8d1cc925","getDeployedCode(string)":"3ebf73b4","getFoundryVersion()":"ea991bb5","getLabel(address)":"28a249b0","getMappingKeyAndParentOf(address,bytes32)":"876e24e6","getMappingLength(address,bytes32)":"2f2fd63f","getMappingSlotAt(address,bytes32,uint256)":"ebc73ab4","getNonce((address,uint256,uint256,uint256))":"a5748aad","getNonce(address)":"2d0335ab","getRecordedLogs()":"191553a4","getScriptWallets()":"7c49aa1f","getWallets()":"db7a4605","indexOf(string,string)":"8a0807b7","isContext(uint8)":"64af255d","isDir(string)":"7d15d019","isFile(string)":"e0eb04d4","keyExists(string,string)":"528a683c","keyExistsJson(string,string)":"db4235f6","keyExistsToml(string,string)":"600903ad","label(address,string)":"c657c718","lastCallGas()":"2b589b28","load(address,bytes32)":"667f9d70","parseAddress(string)":"c6ce059d","parseBool(string)":"974ef924","parseBytes(string)":"8f5d232d","parseBytes32(string)":"087e6e81","parseInt(string)":"42346c5e","parseJson(string)":"6a82600a","parseJson(string,string)":"85940ef1","parseJsonAddress(string,string)":"1e19e657","parseJsonAddressArray(string,string)":"2fce7883","parseJsonBool(string,string)":"9f86dc91","parseJsonBoolArray(string,string)":"91f3b94f","parseJsonBytes(string,string)":"fd921be8","parseJsonBytes32(string,string)":"1777e59d","parseJsonBytes32Array(string,string)":"91c75bc3","parseJsonBytesArray(string,string)":"6631aa99","parseJsonInt(string,string)":"7b048ccd","parseJsonIntArray(string,string)":"9983c28a","parseJsonKeys(string,string)":"213e4198","parseJsonString(string,string)":"49c4fac8","parseJsonStringArray(string,string)":"498fdcf4","parseJsonType(string,string)":"a9da313b","parseJsonType(string,string,string)":"e3f5ae33","parseJsonTypeArray(string,string,string)":"0175d535","parseJsonUint(string,string)":"addde2b6","parseJsonUintArray(string,string)":"522074ab","parseToml(string)":"592151f0","parseToml(string,string)":"37736e08","parseTomlAddress(string,string)":"65e7c844","parseTomlAddressArray(string,string)":"65c428e7","parseTomlBool(string,string)":"d30dced6","parseTomlBoolArray(string,string)":"127cfe9a","parseTomlBytes(string,string)":"d77bfdb9","parseTomlBytes32(string,string)":"8e214810","parseTomlBytes32Array(string,string)":"3e716f81","parseTomlBytesArray(string,string)":"b197c247","parseTomlInt(string,string)":"c1350739","parseTomlIntArray(string,string)":"d3522ae6","parseTomlKeys(string,string)":"812a44b2","parseTomlString(string,string)":"8bb8dd43","parseTomlStringArray(string,string)":"9f629281","parseTomlType(string,string)":"47fa5e11","parseTomlType(string,string,string)":"f9fa5cdb","parseTomlTypeArray(string,string,string)":"49be3743","parseTomlUint(string,string)":"cc7b0487","parseTomlUintArray(string,string)":"b5df27c8","parseUint(string)":"fa91454d","pauseGasMetering()":"d1a5b36f","pauseTracing()":"c94d1f90","projectRoot()":"d930a0e6","prompt(string)":"47eaf474","promptAddress(string)":"62ee05f4","promptSecret(string)":"1e279d41","promptSecretUint(string)":"69ca02b7","promptUint(string)":"652fd489","publicKeyP256(uint256)":"c453949e","randomAddress()":"d5bee9f5","randomBool()":"cdc126bd","randomBytes(uint256)":"6c5d32a9","randomBytes4()":"9b7cd579","randomBytes8()":"0497b0a5","randomInt()":"111f1202","randomInt(uint256)":"12845966","randomUint()":"25124730","randomUint(uint256)":"cf81e69c","randomUint(uint256,uint256)":"d61b051b","readDir(string)":"c4bc59e0","readDir(string,uint64)":"1497876c","readDir(string,uint64,bool)":"8102d70d","readFile(string)":"60f9bb11","readFileBinary(string)":"16ed7bc4","readLine(string)":"70f55728","readLink(string)":"9f5684a2","record()":"266cf109","recordLogs()":"41af2f52","rememberKey(uint256)":"22100064","rememberKeys(string,string,string,uint32)":"f8d58eaf","rememberKeys(string,string,uint32)":"97cb9189","removeDir(string,bool)":"45c62011","removeFile(string)":"f1afe04d","replace(string,string,string)":"e00ad03e","resetGasMetering()":"be367dd3","resumeGasMetering()":"2bcd50e0","resumeTracing()":"72a09ccb","rpc(string,string)":"1206c8a8","rpc(string,string,string)":"0199a220","rpcUrl(string)":"975a6ce9","rpcUrlStructs()":"9d2ad72a","rpcUrls()":"a85a8418","serializeAddress(string,string,address)":"972c6062","serializeAddress(string,string,address[])":"1e356e1a","serializeBool(string,string,bool)":"ac22e971","serializeBool(string,string,bool[])":"92925aa1","serializeBytes(string,string,bytes)":"f21d52c7","serializeBytes(string,string,bytes[])":"9884b232","serializeBytes32(string,string,bytes32)":"2d812b44","serializeBytes32(string,string,bytes32[])":"201e43e2","serializeInt(string,string,int256)":"3f33db60","serializeInt(string,string,int256[])":"7676e127","serializeJson(string,string)":"9b3358b0","serializeJsonType(string,bytes)":"6d4f96a6","serializeJsonType(string,string,string,bytes)":"6f93bccb","serializeString(string,string,string)":"88da6d35","serializeString(string,string,string[])":"561cd6f3","serializeUint(string,string,uint256)":"129e9002","serializeUint(string,string,uint256[])":"fee9a469","serializeUintToHex(string,string,uint256)":"ae5a2ae8","setArbitraryStorage(address)":"e1631837","setEnv(string,string)":"3d5923ee","sign((address,uint256,uint256,uint256),bytes32)":"b25c5a25","sign(address,bytes32)":"8c1aa205","sign(bytes32)":"799cd333","sign(uint256,bytes32)":"e341eaa4","signCompact((address,uint256,uint256,uint256),bytes32)":"3d0e292f","signCompact(address,bytes32)":"8e2f97bf","signCompact(bytes32)":"a282dc4b","signCompact(uint256,bytes32)":"cc2a781f","signP256(uint256,bytes32)":"83211b40","sleep(uint256)":"fa9d8713","split(string,string)":"8bb75533","startBroadcast()":"7fb5297f","startBroadcast(address)":"7fec2a8d","startBroadcast(uint256)":"ce817d47","startDebugTraceRecording()":"419c8832","startMappingRecording()":"3e9705c0","startStateDiffRecording()":"cf22e3c9","stopAndReturnDebugTraceRecording()":"ced398a2","stopAndReturnStateDiff()":"aa5cf90e","stopBroadcast()":"76eadd36","stopMappingRecording()":"0d4aae9b","toBase64(bytes)":"a5cbfe65","toBase64(string)":"3f8be2c8","toBase64URL(bytes)":"c8bd0e4a","toBase64URL(string)":"ae3165b3","toLowercase(string)":"50bb0884","toString(address)":"56ca623e","toString(bool)":"71dce7da","toString(bytes)":"71aad10d","toString(bytes32)":"b11a19e8","toString(int256)":"a322c40e","toString(uint256)":"6900a3ae","toUppercase(string)":"074ae3d7","trim(string)":"b2dad155","tryFfi(string[])":"f45c1ce7","unixTime()":"625387dc","writeFile(string,string)":"897e0a97","writeFileBinary(string,bytes)":"1f21fc80","writeJson(string,string)":"e23cd19f","writeJson(string,string,string)":"35d6ad46","writeLine(string,string)":"619d897f","writeToml(string,string)":"c0865ba7","writeToml(string,string,string)":"51ac6a33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"accesses\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"readSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"writeSlots\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbs\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqAbsDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRel\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxPercentDelta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertApproxEqRelDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertFalse\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertGtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLe\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLeDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertLt\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertLtDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"left\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"right\",\"type\":\"bool\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool[]\",\"name\":\"left\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"right\",\"type\":\"bool[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"left\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"right\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"left\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"right\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"left\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"right\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"left\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"right\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"left\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"right\",\"type\":\"address\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"right\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"left\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"right\",\"type\":\"bytes32[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"left\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"right\",\"type\":\"string[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256[]\",\"name\":\"left\",\"type\":\"int256[]\"},{\"internalType\":\"int256[]\",\"name\":\"right\",\"type\":\"int256[]\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"left\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes[]\",\"name\":\"right\",\"type\":\"bytes[]\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"}],\"name\":\"assertNotEq\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"left\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"right\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"left\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"right\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertNotEqDecimal\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"error\",\"type\":\"string\"}],\"name\":\"assertTrue\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"condition\",\"type\":\"bool\"}],\"name\":\"assume\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assumeNoRevert\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"char\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"breakpoint\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"broadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"broadcastRawTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"closeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"initCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"computeCreate2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"computeCreateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"copyFile\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"copied\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"copyStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"createDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletLabel\",\"type\":\"string\"}],\"name\":\"createWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"deployCode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployedAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"name\":\"deriveKey\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ensNamehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envAddress\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBool\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"defaultValue\",\"type\":\"bytes32[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"value\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"defaultValue\",\"type\":\"int256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"value\",\"type\":\"int256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"defaultValue\",\"type\":\"bool\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"defaultValue\",\"type\":\"address\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"defaultValue\",\"type\":\"uint256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"defaultValue\",\"type\":\"bytes[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"value\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultValue\",\"type\":\"uint256[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"defaultValue\",\"type\":\"string[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"defaultValue\",\"type\":\"bytes\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"defaultValue\",\"type\":\"bytes32\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"defaultValue\",\"type\":\"int256\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"defaultValue\",\"type\":\"address[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"value\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"defaultValue\",\"type\":\"string\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"defaultValue\",\"type\":\"bool[]\"}],\"name\":\"envOr\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"value\",\"type\":\"bool[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"value\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delim\",\"type\":\"string\"}],\"name\":\"envUint\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"value\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"toBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"}],\"name\":\"eth_getLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"transactionHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"transactionIndex\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"logIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"removed\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.EthGetLogs[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"ffi\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"fsMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"readOnly\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"modified\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"created\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.FsMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"code\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"}],\"name\":\"getArtifactPathByDeployedCode\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlobBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blobBaseFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"creationBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"artifactPath\",\"type\":\"string\"}],\"name\":\"getDeployedCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"runtimeBytecode\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFoundryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"currentLabel\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"elementSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingKeyAndParentOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"found\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parent\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"}],\"name\":\"getMappingLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"mappingSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"}],\"name\":\"getMappingSlotAt\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRecordedLogs\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"topics\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.Log[]\",\"name\":\"logs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScriptWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWallets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"wallets\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"indexOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum VmSafe.ForgeContext\",\"name\":\"context\",\"type\":\"uint8\"}],\"name\":\"isContext\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isDir\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"isFile\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsJson\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"keyExistsToml\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newLabel\",\"type\":\"string\"}],\"name\":\"label\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCallGas\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTotalUsed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMemoryUsed\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"gasRefunded\",\"type\":\"int64\"},{\"internalType\":\"uint64\",\"name\":\"gasRemaining\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.Gas\",\"name\":\"gas\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"parsedValue\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"parsedValue\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"parsedValue\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"parsedValue\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"parsedValue\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJson\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseJsonTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseJsonUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"}],\"name\":\"parseToml\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"abiEncodedData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBoolArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytes32Array\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlBytesArray\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlIntArray\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"keys\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlStringArray\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlType\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"}],\"name\":\"parseTomlTypeArray\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"toml\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"parseTomlUintArray\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"name\":\"parseUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"parsedValue\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectRoot\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"prompt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecret\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptSecretUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"promptText\",\"type\":\"string\"}],\"name\":\"promptUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"publicKeyP256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"randomBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes4\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBytes8\",\"outputs\":[{\"internalType\":\"bytes8\",\"name\":\"\",\"type\":\"bytes8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomInt\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bits\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"randomUint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"maxDepth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"followLinks\",\"type\":\"bool\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readDir\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"errorMessage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isDir\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isSymlink\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.DirEntry[]\",\"name\":\"entries\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFile\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readFileBinary\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"readLine\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"line\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"linkPath\",\"type\":\"string\"}],\"name\":\"readLink\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"targetPath\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"record\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recordLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"rememberKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"keyAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"mnemonic\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"derivationPath\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"language\",\"type\":\"string\"},{\"internalType\":\"uint32\",\"name\":\"count\",\"type\":\"uint32\"}],\"name\":\"rememberKeys\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"keyAddrs\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"recursive\",\"type\":\"bool\"}],\"name\":\"removeDir\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"removeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"replace\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resetGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeGasMetering\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeTracing\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"urlOrAlias\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"method\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"params\",\"type\":\"string\"}],\"name\":\"rpc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"rpcAlias\",\"type\":\"string\"}],\"name\":\"rpcUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrlStructs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"internalType\":\"struct VmSafe.Rpc[]\",\"name\":\"urls\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rpcUrls\",\"outputs\":[{\"internalType\":\"string[2][]\",\"name\":\"urls\",\"type\":\"string[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address[]\",\"name\":\"values\",\"type\":\"address[]\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"serializeAddress\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool[]\",\"name\":\"values\",\"type\":\"bool[]\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"serializeBool\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes[]\",\"name\":\"values\",\"type\":\"bytes[]\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeBytes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32[]\",\"name\":\"values\",\"type\":\"bytes32[]\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"serializeBytes32\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"int256[]\",\"name\":\"values\",\"type\":\"int256[]\"}],\"name\":\"serializeInt\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeJson\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeDescription\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"serializeJsonType\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"values\",\"type\":\"string[]\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"serializeString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"serializeUint\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"objectKey\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"serializeUintToHex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setArbitraryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setEnv\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"sign\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyX\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"publicKeyY\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"vs\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"signP256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"sleep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"delimiter\",\"type\":\"string\"}],\"name\":\"split\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"outputs\",\"type\":\"string[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"privateKey\",\"type\":\"uint256\"}],\"name\":\"startBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startDebugTraceRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startStateDiffRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnDebugTraceRecording\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"stack\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"memoryInput\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isOutOfGas\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"internalType\":\"struct VmSafe.DebugStep[]\",\"name\":\"step\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopAndReturnStateDiff\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"forkId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"internalType\":\"struct VmSafe.ChainInfo\",\"name\":\"chainInfo\",\"type\":\"tuple\"},{\"internalType\":\"enum VmSafe.AccountAccessKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"accessor\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"deployedCode\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isWrite\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"previousValue\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newValue\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"internalType\":\"struct VmSafe.StorageAccess[]\",\"name\":\"storageAccesses\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"depth\",\"type\":\"uint64\"}],\"internalType\":\"struct VmSafe.AccountAccess[]\",\"name\":\"accountAccesses\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopBroadcast\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopMappingRecording\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"toBase64URL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toLowercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"toString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"stringifiedValue\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"toUppercase\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"input\",\"type\":\"string\"}],\"name\":\"trim\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"output\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"commandInput\",\"type\":\"string[]\"}],\"name\":\"tryFfi\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"exitCode\",\"type\":\"int32\"},{\"internalType\":\"bytes\",\"name\":\"stdout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"stderr\",\"type\":\"bytes\"}],\"internalType\":\"struct VmSafe.FfiResult\",\"name\":\"result\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unixTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"milliseconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeFile\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"writeFileBinary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeJson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"data\",\"type\":\"string\"}],\"name\":\"writeLine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"valueKey\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"json\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"}],\"name\":\"writeToml\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"accesses(address)\":{\"notice\":\"Gets all accessed reads and write slot from a `vm.record` session, for a given address.\"},\"addr(uint256)\":{\"notice\":\"Gets the address for a given private key.\"},\"assertApproxEqAbs(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbs(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`.\"},\"assertApproxEqAbs(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message.\"},\"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRel(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRel(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%\"},\"assertApproxEqRel(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message.\"},\"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEq(address,address)\":{\"notice\":\"Asserts that two `address` values are equal.\"},\"assertEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are equal.\"},\"assertEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are equal.\"},\"assertEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are equal.\"},\"assertEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are equal.\"},\"assertEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are equal.\"},\"assertEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal.\"},\"assertEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure.\"},\"assertEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal.\"},\"assertEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are equal.\"},\"assertEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are equal.\"},\"assertEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure.\"},\"assertEq(string,string)\":{\"notice\":\"Asserts that two `string` values are equal.\"},\"assertEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are equal.\"},\"assertEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal.\"},\"assertEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256 values are equal.\"},\"assertEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure.\"},\"assertEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message.\"},\"assertEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertFalse(bool)\":{\"notice\":\"Asserts that the given condition is false.\"},\"assertFalse(bool,string)\":{\"notice\":\"Asserts that the given condition is false and includes error message into revert string on failure.\"},\"assertGe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second.\"},\"assertGe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure.\"},\"assertGeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message.\"},\"assertGeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second.\"},\"assertGt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second.\"},\"assertGt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure.\"},\"assertGtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertGtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message.\"},\"assertGtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLe(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second.\"},\"assertLe(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLe(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second.\"},\"assertLe(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure.\"},\"assertLeDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLeDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message.\"},\"assertLeDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLt(int256,int256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second.\"},\"assertLt(int256,int256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLt(uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second.\"},\"assertLt(uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure.\"},\"assertLtDecimal(int256,int256,uint256)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(int256,int256,uint256,string)\":{\"notice\":\"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertLtDecimal(uint256,uint256,uint256)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message.\"},\"assertLtDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEq(address,address)\":{\"notice\":\"Asserts that two `address` values are not equal.\"},\"assertNotEq(address,address,string)\":{\"notice\":\"Asserts that two `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(address[],address[])\":{\"notice\":\"Asserts that two arrays of `address` values are not equal.\"},\"assertNotEq(address[],address[],string)\":{\"notice\":\"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool,bool)\":{\"notice\":\"Asserts that two `bool` values are not equal.\"},\"assertNotEq(bool,bool,string)\":{\"notice\":\"Asserts that two `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bool[],bool[])\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal.\"},\"assertNotEq(bool[],bool[],string)\":{\"notice\":\"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes,bytes)\":{\"notice\":\"Asserts that two `bytes` values are not equal.\"},\"assertNotEq(bytes,bytes,string)\":{\"notice\":\"Asserts that two `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32,bytes32)\":{\"notice\":\"Asserts that two `bytes32` values are not equal.\"},\"assertNotEq(bytes32,bytes32,string)\":{\"notice\":\"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes32[],bytes32[])\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal.\"},\"assertNotEq(bytes32[],bytes32[],string)\":{\"notice\":\"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(bytes[],bytes[])\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal.\"},\"assertNotEq(bytes[],bytes[],string)\":{\"notice\":\"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256,int256)\":{\"notice\":\"Asserts that two `int256` values are not equal.\"},\"assertNotEq(int256,int256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(int256[],int256[])\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal.\"},\"assertNotEq(int256[],int256[],string)\":{\"notice\":\"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string,string)\":{\"notice\":\"Asserts that two `string` values are not equal.\"},\"assertNotEq(string,string,string)\":{\"notice\":\"Asserts that two `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(string[],string[])\":{\"notice\":\"Asserts that two arrays of `string` values are not equal.\"},\"assertNotEq(string[],string[],string)\":{\"notice\":\"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal.\"},\"assertNotEq(uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEq(uint256[],uint256[])\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal.\"},\"assertNotEq(uint256[],uint256[],string)\":{\"notice\":\"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure.\"},\"assertNotEqDecimal(int256,int256,uint256)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(int256,int256,uint256,string)\":{\"notice\":\"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertNotEqDecimal(uint256,uint256,uint256)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message.\"},\"assertNotEqDecimal(uint256,uint256,uint256,string)\":{\"notice\":\"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure.\"},\"assertTrue(bool)\":{\"notice\":\"Asserts that the given condition is true.\"},\"assertTrue(bool,string)\":{\"notice\":\"Asserts that the given condition is true and includes error message into revert string on failure.\"},\"assume(bool)\":{\"notice\":\"If the condition is false, discard this run's fuzz inputs and generate new ones.\"},\"assumeNoRevert()\":{\"notice\":\"Discard this run's fuzz inputs and generate new ones if next call reverted.\"},\"breakpoint(string)\":{\"notice\":\"Writes a breakpoint to jump to in the debugger.\"},\"breakpoint(string,bool)\":{\"notice\":\"Writes a conditional breakpoint to jump to in the debugger.\"},\"broadcast()\":{\"notice\":\"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"broadcast(address)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain.\"},\"broadcast(uint256)\":{\"notice\":\"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain.\"},\"broadcastRawTransaction(bytes)\":{\"notice\":\"Takes a signed transaction and broadcasts it to the network.\"},\"closeFile(string)\":{\"notice\":\"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root.\"},\"computeCreate2Address(bytes32,bytes32)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer.\"},\"computeCreate2Address(bytes32,bytes32,address)\":{\"notice\":\"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer.\"},\"computeCreateAddress(address,uint256)\":{\"notice\":\"Compute the address a contract will be deployed at for a given deployer address and nonce.\"},\"copyFile(string,string)\":{\"notice\":\"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root.\"},\"copyStorage(address,address)\":{\"notice\":\"Utility cheatcode to copy storage of `from` contract to another `to` contract.\"},\"createDir(string,bool)\":{\"notice\":\"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root.\"},\"createWallet(string)\":{\"notice\":\"Derives a private key from the name, labels the account with that name, and returns the wallet.\"},\"createWallet(uint256)\":{\"notice\":\"Generates a wallet from the private key and returns the wallet.\"},\"createWallet(uint256,string)\":{\"notice\":\"Generates a wallet from the private key, labels the account with that name, and returns the wallet.\"},\"deployCode(string)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"deployCode(string,bytes)\":{\"notice\":\"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments.\"},\"deriveKey(string,string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`.\"},\"deriveKey(string,string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`.\"},\"deriveKey(string,uint32)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"deriveKey(string,uint32,string)\":{\"notice\":\"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`.\"},\"ensNamehash(string)\":{\"notice\":\"Returns ENS namehash for provided string.\"},\"envAddress(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed.\"},\"envAddress(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed.\"},\"envBool(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed.\"},\"envBytes32(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envExists(string)\":{\"notice\":\"Gets the environment variable `name` and returns true if it exists, else returns false.\"},\"envInt(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed.\"},\"envInt(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envOr(string,address)\":{\"notice\":\"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bool)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,bytes32)\":{\"notice\":\"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,int256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,address[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bool[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes32[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,bytes[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,int256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,string[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,string,uint256[])\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envOr(string,uint256)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found.\"},\"envString(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed.\"},\"envString(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string)\":{\"notice\":\"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed.\"},\"envUint(string,string)\":{\"notice\":\"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed.\"},\"eth_getLogs(uint256,uint256,address,bytes32[])\":{\"notice\":\"Gets all the logs according to specified filter.\"},\"exists(string)\":{\"notice\":\"Returns true if the given path points to an existing entity, else returns false.\"},\"ffi(string[])\":{\"notice\":\"Performs a foreign function call via the terminal.\"},\"fsMetadata(string)\":{\"notice\":\"Given a path, query the file system to get information about a file, directory, etc.\"},\"getArtifactPathByCode(bytes)\":{\"notice\":\"Gets the artifact path from code (aka. creation code).\"},\"getArtifactPathByDeployedCode(bytes)\":{\"notice\":\"Gets the artifact path from deployed code (aka. runtime code).\"},\"getBlobBaseFee()\":{\"notice\":\"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockNumber()\":{\"notice\":\"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getBlockTimestamp()\":{\"notice\":\"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180\"},\"getCode(string)\":{\"notice\":\"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getDeployedCode(string)\":{\"notice\":\"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional.\"},\"getFoundryVersion()\":{\"notice\":\"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences.\"},\"getLabel(address)\":{\"notice\":\"Gets the label for the specified address.\"},\"getMappingKeyAndParentOf(address,bytes32)\":{\"notice\":\"Gets the map key and parent of a mapping at a given slot, for a given address.\"},\"getMappingLength(address,bytes32)\":{\"notice\":\"Gets the number of elements in the mapping at the given slot, for a given address.\"},\"getMappingSlotAt(address,bytes32,uint256)\":{\"notice\":\"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping).\"},\"getNonce((address,uint256,uint256,uint256))\":{\"notice\":\"Get the nonce of a `Wallet`.\"},\"getNonce(address)\":{\"notice\":\"Gets the nonce of an account.\"},\"getRecordedLogs()\":{\"notice\":\"Gets all the recorded logs.\"},\"getScriptWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"getWallets()\":{\"notice\":\"Returns addresses of available unlocked wallets in the script environment.\"},\"indexOf(string,string)\":{\"notice\":\"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`.\"},\"isContext(uint8)\":{\"notice\":\"Returns true if `forge` command was executed in given context.\"},\"isDir(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a directory, else returns false.\"},\"isFile(string)\":{\"notice\":\"Returns true if the path exists on disk and is pointing at a regular file, else returns false.\"},\"keyExists(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions.\"},\"keyExistsJson(string,string)\":{\"notice\":\"Checks if `key` exists in a JSON object.\"},\"keyExistsToml(string,string)\":{\"notice\":\"Checks if `key` exists in a TOML table.\"},\"label(address,string)\":{\"notice\":\"Labels an address in call traces.\"},\"lastCallGas()\":{\"notice\":\"Gets the gas used in the last call from the callee perspective.\"},\"load(address,bytes32)\":{\"notice\":\"Loads a storage slot from an address.\"},\"parseAddress(string)\":{\"notice\":\"Parses the given `string` into an `address`.\"},\"parseBool(string)\":{\"notice\":\"Parses the given `string` into a `bool`.\"},\"parseBytes(string)\":{\"notice\":\"Parses the given `string` into `bytes`.\"},\"parseBytes32(string)\":{\"notice\":\"Parses the given `string` into a `bytes32`.\"},\"parseInt(string)\":{\"notice\":\"Parses the given `string` into a `int256`.\"},\"parseJson(string)\":{\"notice\":\"ABI-encodes a JSON object.\"},\"parseJson(string,string)\":{\"notice\":\"ABI-encodes a JSON object at `key`.\"},\"parseJsonAddress(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address`.\"},\"parseJsonAddressArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `address[]`.\"},\"parseJsonBool(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool`.\"},\"parseJsonBoolArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bool[]`.\"},\"parseJsonBytes(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes`.\"},\"parseJsonBytes32(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32`.\"},\"parseJsonBytes32Array(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes32[]`.\"},\"parseJsonBytesArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `bytes[]`.\"},\"parseJsonInt(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256`.\"},\"parseJsonIntArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `int256[]`.\"},\"parseJsonKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a JSON object.\"},\"parseJsonString(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string`.\"},\"parseJsonStringArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `string[]`.\"},\"parseJsonType(string,string)\":{\"notice\":\"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonType(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseJsonTypeArray(string,string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseJsonUint(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256`.\"},\"parseJsonUintArray(string,string)\":{\"notice\":\"Parses a string of JSON data at `key` and coerces it to `uint256[]`.\"},\"parseToml(string)\":{\"notice\":\"ABI-encodes a TOML table.\"},\"parseToml(string,string)\":{\"notice\":\"ABI-encodes a TOML table at `key`.\"},\"parseTomlAddress(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address`.\"},\"parseTomlAddressArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `address[]`.\"},\"parseTomlBool(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool`.\"},\"parseTomlBoolArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bool[]`.\"},\"parseTomlBytes(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes`.\"},\"parseTomlBytes32(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32`.\"},\"parseTomlBytes32Array(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes32[]`.\"},\"parseTomlBytesArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `bytes[]`.\"},\"parseTomlInt(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256`.\"},\"parseTomlIntArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `int256[]`.\"},\"parseTomlKeys(string,string)\":{\"notice\":\"Returns an array of all the keys in a TOML table.\"},\"parseTomlString(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string`.\"},\"parseTomlStringArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `string[]`.\"},\"parseTomlType(string,string)\":{\"notice\":\"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlType(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`.\"},\"parseTomlTypeArray(string,string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`.\"},\"parseTomlUint(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256`.\"},\"parseTomlUintArray(string,string)\":{\"notice\":\"Parses a string of TOML data at `key` and coerces it to `uint256[]`.\"},\"parseUint(string)\":{\"notice\":\"Parses the given `string` into a `uint256`.\"},\"pauseGasMetering()\":{\"notice\":\"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused.\"},\"pauseTracing()\":{\"notice\":\"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging.\"},\"projectRoot()\":{\"notice\":\"Get the path of the current project root.\"},\"prompt(string)\":{\"notice\":\"Prompts the user for a string value in the terminal.\"},\"promptAddress(string)\":{\"notice\":\"Prompts the user for an address in the terminal.\"},\"promptSecret(string)\":{\"notice\":\"Prompts the user for a hidden string value in the terminal.\"},\"promptSecretUint(string)\":{\"notice\":\"Prompts the user for hidden uint256 in the terminal (usually pk).\"},\"promptUint(string)\":{\"notice\":\"Prompts the user for uint256 in the terminal.\"},\"publicKeyP256(uint256)\":{\"notice\":\"Derives secp256r1 public key from the provided `privateKey`.\"},\"randomAddress()\":{\"notice\":\"Returns a random `address`.\"},\"randomBool()\":{\"notice\":\"Returns a random `bool`.\"},\"randomBytes(uint256)\":{\"notice\":\"Returns a random byte array value of the given length.\"},\"randomBytes4()\":{\"notice\":\"Returns a random fixed-size byte array of length 4.\"},\"randomBytes8()\":{\"notice\":\"Returns a random fixed-size byte array of length 8.\"},\"randomInt()\":{\"notice\":\"Returns a random `int256` value.\"},\"randomInt(uint256)\":{\"notice\":\"Returns a random `int256` value of given bits.\"},\"randomUint()\":{\"notice\":\"Returns a random uint256 value.\"},\"randomUint(uint256)\":{\"notice\":\"Returns a random `uint256` value of given bits.\"},\"randomUint(uint256,uint256)\":{\"notice\":\"Returns random uint256 value between the provided range (=min..=max).\"},\"readDir(string)\":{\"notice\":\"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true.\"},\"readDir(string,uint64)\":{\"notice\":\"See `readDir(string)`.\"},\"readDir(string,uint64,bool)\":{\"notice\":\"See `readDir(string)`.\"},\"readFile(string)\":{\"notice\":\"Reads the entire content of file to string. `path` is relative to the project root.\"},\"readFileBinary(string)\":{\"notice\":\"Reads the entire content of file as binary. `path` is relative to the project root.\"},\"readLine(string)\":{\"notice\":\"Reads next line of file to string.\"},\"readLink(string)\":{\"notice\":\"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist.\"},\"record()\":{\"notice\":\"Records all storage reads and writes.\"},\"recordLogs()\":{\"notice\":\"Record all the transaction logs.\"},\"rememberKey(uint256)\":{\"notice\":\"Adds a private key to the local forge wallet and returns the address.\"},\"rememberKeys(string,string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"rememberKeys(string,string,uint32)\":{\"notice\":\"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned.\"},\"removeDir(string,bool)\":{\"notice\":\"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root.\"},\"removeFile(string)\":{\"notice\":\"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root.\"},\"replace(string,string,string)\":{\"notice\":\"Replaces occurrences of `from` in the given `string` with `to`.\"},\"resetGasMetering()\":{\"notice\":\"Reset gas metering (i.e. gas usage is set to gas limit).\"},\"resumeGasMetering()\":{\"notice\":\"Resumes gas metering (i.e. gas usage is counted again). Noop if already on.\"},\"resumeTracing()\":{\"notice\":\"Unpauses collection of call traces.\"},\"rpc(string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the current fork URL.\"},\"rpc(string,string,string)\":{\"notice\":\"Performs an Ethereum JSON-RPC request to the given endpoint.\"},\"rpcUrl(string)\":{\"notice\":\"Returns the RPC url for the given alias.\"},\"rpcUrlStructs()\":{\"notice\":\"Returns all rpc urls and their aliases as structs.\"},\"rpcUrls()\":{\"notice\":\"Returns all rpc urls and their aliases `[alias, url][]`.\"},\"serializeAddress(string,string,address)\":{\"notice\":\"See `serializeJson`.\"},\"serializeAddress(string,string,address[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBool(string,string,bool[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes(string,string,bytes[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32)\":{\"notice\":\"See `serializeJson`.\"},\"serializeBytes32(string,string,bytes32[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeInt(string,string,int256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeJson(string,string)\":{\"notice\":\"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment.\"},\"serializeJsonType(string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeJsonType(string,string,string,bytes)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string)\":{\"notice\":\"See `serializeJson`.\"},\"serializeString(string,string,string[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"serializeUint(string,string,uint256[])\":{\"notice\":\"See `serializeJson`.\"},\"serializeUintToHex(string,string,uint256)\":{\"notice\":\"See `serializeJson`.\"},\"setArbitraryStorage(address)\":{\"notice\":\"Utility cheatcode to set arbitrary storage for given target address.\"},\"setEnv(string,string)\":{\"notice\":\"Sets environment variables.\"},\"sign((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`.\"},\"sign(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address.\"},\"sign(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"sign(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve.\"},\"signCompact((address,uint256,uint256,uint256),bytes32)\":{\"notice\":\"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signCompact(address,bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address.\"},\"signCompact(bytes32)\":{\"notice\":\"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script.\"},\"signCompact(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes.\"},\"signP256(uint256,bytes32)\":{\"notice\":\"Signs `digest` with `privateKey` using the secp256r1 curve.\"},\"sleep(uint256)\":{\"notice\":\"Suspends execution of the main thread for `duration` milliseconds.\"},\"split(string,string)\":{\"notice\":\"Splits the given `string` into an array of strings divided by the `delimiter`.\"},\"startBroadcast()\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used.\"},\"startBroadcast(address)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain.\"},\"startBroadcast(uint256)\":{\"notice\":\"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain.\"},\"startDebugTraceRecording()\":{\"notice\":\"Records the debug trace during the run.\"},\"startMappingRecording()\":{\"notice\":\"Starts recording all map SSTOREs for later retrieval.\"},\"startStateDiffRecording()\":{\"notice\":\"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls\"},\"stopAndReturnDebugTraceRecording()\":{\"notice\":\"Stop debug trace recording and returns the recorded debug trace.\"},\"stopAndReturnStateDiff()\":{\"notice\":\"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session.\"},\"stopBroadcast()\":{\"notice\":\"Stops collecting onchain transactions.\"},\"stopMappingRecording()\":{\"notice\":\"Stops recording all map SSTOREs for later retrieval and clears the recorded data.\"},\"toBase64(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64 string.\"},\"toBase64(string)\":{\"notice\":\"Encodes a `string` value to a base64 string.\"},\"toBase64URL(bytes)\":{\"notice\":\"Encodes a `bytes` value to a base64url string.\"},\"toBase64URL(string)\":{\"notice\":\"Encodes a `string` value to a base64url string.\"},\"toLowercase(string)\":{\"notice\":\"Converts the given `string` value to Lowercase.\"},\"toString(address)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bool)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(bytes32)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(int256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toString(uint256)\":{\"notice\":\"Converts the given value to a `string`.\"},\"toUppercase(string)\":{\"notice\":\"Converts the given `string` value to Uppercase.\"},\"trim(string)\":{\"notice\":\"Trims leading and trailing whitespace from the given `string` value.\"},\"tryFfi(string[])\":{\"notice\":\"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr.\"},\"unixTime()\":{\"notice\":\"Returns the time since unix epoch in milliseconds.\"},\"writeFile(string,string)\":{\"notice\":\"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeFileBinary(string,bytes)\":{\"notice\":\"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root.\"},\"writeJson(string,string)\":{\"notice\":\"Write a serialized JSON object to a file. If the file exists, it will be overwritten.\"},\"writeJson(string,string,string)\":{\"notice\":\"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing.\"},\"writeLine(string,string)\":{\"notice\":\"Writes line to file, creating a file if it does not exist. `path` is relative to the project root.\"},\"writeToml(string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML to a file.\"},\"writeToml(string,string,string)\":{\"notice\":\"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing.\"}},\"notice\":\"The `VmSafe` interface does not allow manipulation of the EVM state or other actions that may result in Script simulations differing from on-chain execution. It is recommended to only use these cheats in scripts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/Vm.sol\":\"VmSafe\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"accesses","outputs":[{"internalType":"bytes32[]","name":"readSlots","type":"bytes32[]"},{"internalType":"bytes32[]","name":"writeSlots","type":"bytes32[]"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"addr","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbs"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqAbsDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRel"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"maxPercentDelta","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertApproxEqRelDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertFalse"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertGtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLe"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLeDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLt"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertLtDecimal"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool","name":"left","type":"bool"},{"internalType":"bool","name":"right","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bool[]","name":"left","type":"bool[]"},{"internalType":"bool[]","name":"right","type":"bool[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address[]","name":"left","type":"address[]"},{"internalType":"address[]","name":"right","type":"address[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string","name":"left","type":"string"},{"internalType":"string","name":"right","type":"string"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes","name":"left","type":"bytes"},{"internalType":"bytes","name":"right","type":"bytes"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256[]","name":"left","type":"uint256[]"},{"internalType":"uint256[]","name":"right","type":"uint256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"address","name":"left","type":"address"},{"internalType":"address","name":"right","type":"address"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32","name":"left","type":"bytes32"},{"internalType":"bytes32","name":"right","type":"bytes32"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes32[]","name":"left","type":"bytes32[]"},{"internalType":"bytes32[]","name":"right","type":"bytes32[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"string[]","name":"left","type":"string[]"},{"internalType":"string[]","name":"right","type":"string[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256[]","name":"left","type":"int256[]"},{"internalType":"int256[]","name":"right","type":"int256[]"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"bytes[]","name":"left","type":"bytes[]"},{"internalType":"bytes[]","name":"right","type":"bytes[]"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"}],"stateMutability":"pure","type":"function","name":"assertNotEq"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"int256","name":"left","type":"int256"},{"internalType":"int256","name":"right","type":"int256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"uint256","name":"left","type":"uint256"},{"internalType":"uint256","name":"right","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertNotEqDecimal"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"},{"internalType":"string","name":"error","type":"string"}],"stateMutability":"pure","type":"function","name":"assertTrue"},{"inputs":[{"internalType":"bool","name":"condition","type":"bool"}],"stateMutability":"pure","type":"function","name":"assume"},{"inputs":[],"stateMutability":"pure","type":"function","name":"assumeNoRevert"},{"inputs":[{"internalType":"string","name":"char","type":"string"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[{"internalType":"string","name":"char","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"breakpoint"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"broadcast"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"broadcastRawTransaction"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"closeFile"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes32","name":"initCodeHash","type":"bytes32"},{"internalType":"address","name":"deployer","type":"address"}],"stateMutability":"pure","type":"function","name":"computeCreate2Address","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"pure","type":"function","name":"computeCreateAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"copyFile","outputs":[{"internalType":"uint64","name":"copied","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"copyStorage"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"createDir"},{"inputs":[{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"string","name":"walletLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createWallet","outputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"deployCode","outputs":[{"internalType":"address","name":"deployedAddress","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"},{"internalType":"string","name":"language","type":"string"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"deriveKey","outputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"pure","type":"function","name":"ensNamehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envAddress","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBool","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envBytes32","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envExists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envInt","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes32[]","name":"defaultValue","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32[]","name":"value","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"int256[]","name":"defaultValue","type":"int256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256[]","name":"value","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"defaultValue","type":"bool"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool","name":"value","type":"bool"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"defaultValue","type":"address"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address","name":"value","type":"address"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"defaultValue","type":"uint256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bytes[]","name":"defaultValue","type":"bytes[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes[]","name":"value","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"uint256[]","name":"defaultValue","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"string[]","name":"defaultValue","type":"string[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"defaultValue","type":"bytes"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes","name":"value","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"defaultValue","type":"bytes32"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"int256","name":"defaultValue","type":"int256"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"int256","name":"value","type":"int256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"address[]","name":"defaultValue","type":"address[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"address[]","name":"value","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"defaultValue","type":"string"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"},{"internalType":"bool[]","name":"defaultValue","type":"bool[]"}],"stateMutability":"view","type":"function","name":"envOr","outputs":[{"internalType":"bool[]","name":"value","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string[]","name":"value","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envString","outputs":[{"internalType":"string","name":"value","type":"string"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"delim","type":"string"}],"stateMutability":"view","type":"function","name":"envUint","outputs":[{"internalType":"uint256[]","name":"value","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"},{"internalType":"uint256","name":"toBlock","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"eth_getLogs","outputs":[{"internalType":"struct VmSafe.EthGetLogs[]","name":"logs","type":"tuple[]","components":[{"internalType":"address","name":"emitter","type":"address"},{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint64","name":"blockNumber","type":"uint64"},{"internalType":"bytes32","name":"transactionHash","type":"bytes32"},{"internalType":"uint64","name":"transactionIndex","type":"uint64"},{"internalType":"uint256","name":"logIndex","type":"uint256"},{"internalType":"bool","name":"removed","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"ffi","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"fsMetadata","outputs":[{"internalType":"struct VmSafe.FsMetadata","name":"metadata","type":"tuple","components":[{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"},{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"bool","name":"readOnly","type":"bool"},{"internalType":"uint256","name":"modified","type":"uint256"},{"internalType":"uint256","name":"accessed","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"deployedCode","type":"bytes"}],"stateMutability":"view","type":"function","name":"getArtifactPathByDeployedCode","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlobBaseFee","outputs":[{"internalType":"uint256","name":"blobBaseFee","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"height","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getCode","outputs":[{"internalType":"bytes","name":"creationBytecode","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"artifactPath","type":"string"}],"stateMutability":"view","type":"function","name":"getDeployedCode","outputs":[{"internalType":"bytes","name":"runtimeBytecode","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFoundryVersion","outputs":[{"internalType":"string","name":"version","type":"string"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getLabel","outputs":[{"internalType":"string","name":"currentLabel","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"elementSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingKeyAndParentOf","outputs":[{"internalType":"bool","name":"found","type":"bool"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"bytes32","name":"parent","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"getMappingLength","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"mappingSlot","type":"bytes32"},{"internalType":"uint256","name":"idx","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"getMappingSlotAt","outputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"getNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getRecordedLogs","outputs":[{"internalType":"struct VmSafe.Log[]","name":"logs","type":"tuple[]","components":[{"internalType":"bytes32[]","name":"topics","type":"bytes32[]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"emitter","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getScriptWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"getWallets","outputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"indexOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum VmSafe.ForgeContext","name":"context","type":"uint8"}],"stateMutability":"view","type":"function","name":"isContext","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isDir","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"isFile","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsJson","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"keyExistsToml","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"newLabel","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"label"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastCallGas","outputs":[{"internalType":"struct VmSafe.Gas","name":"gas","type":"tuple","components":[{"internalType":"uint64","name":"gasLimit","type":"uint64"},{"internalType":"uint64","name":"gasTotalUsed","type":"uint64"},{"internalType":"uint64","name":"gasMemoryUsed","type":"uint64"},{"internalType":"int64","name":"gasRefunded","type":"int64"},{"internalType":"uint64","name":"gasRemaining","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"load","outputs":[{"internalType":"bytes32","name":"data","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseAddress","outputs":[{"internalType":"address","name":"parsedValue","type":"address"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBool","outputs":[{"internalType":"bool","name":"parsedValue","type":"bool"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes","outputs":[{"internalType":"bytes","name":"parsedValue","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseBytes32","outputs":[{"internalType":"bytes32","name":"parsedValue","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseInt","outputs":[{"internalType":"int256","name":"parsedValue","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJson","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseJsonUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"}],"stateMutability":"pure","type":"function","name":"parseToml","outputs":[{"internalType":"bytes","name":"abiEncodedData","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBoolArray","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytes32Array","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlBytesArray","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlIntArray","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlKeys","outputs":[{"internalType":"string[]","name":"keys","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlString","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlType","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlTypeArray","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"toml","type":"string"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"pure","type":"function","name":"parseTomlUintArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}],"stateMutability":"pure","type":"function","name":"parseUint","outputs":[{"internalType":"uint256","name":"parsedValue","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"pauseTracing"},{"inputs":[],"stateMutability":"view","type":"function","name":"projectRoot","outputs":[{"internalType":"string","name":"path","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"prompt","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecret","outputs":[{"internalType":"string","name":"input","type":"string"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptSecretUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"promptText","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"promptUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"pure","type":"function","name":"publicKeyP256","outputs":[{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBool","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes4","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomBytes8","outputs":[{"internalType":"bytes8","name":"","type":"bytes8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomInt","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"bits","type":"uint256"}],"stateMutability":"view","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"randomUint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"maxDepth","type":"uint64"},{"internalType":"bool","name":"followLinks","type":"bool"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readDir","outputs":[{"internalType":"struct VmSafe.DirEntry[]","name":"entries","type":"tuple[]","components":[{"internalType":"string","name":"errorMessage","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isDir","type":"bool"},{"internalType":"bool","name":"isSymlink","type":"bool"}]}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFile","outputs":[{"internalType":"string","name":"data","type":"string"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readFileBinary","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"view","type":"function","name":"readLine","outputs":[{"internalType":"string","name":"line","type":"string"}]},{"inputs":[{"internalType":"string","name":"linkPath","type":"string"}],"stateMutability":"view","type":"function","name":"readLink","outputs":[{"internalType":"string","name":"targetPath","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"record"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"recordLogs"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"rememberKey","outputs":[{"internalType":"address","name":"keyAddr","type":"address"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"mnemonic","type":"string"},{"internalType":"string","name":"derivationPath","type":"string"},{"internalType":"string","name":"language","type":"string"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"rememberKeys","outputs":[{"internalType":"address[]","name":"keyAddrs","type":"address[]"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bool","name":"recursive","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"removeDir"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"removeFile"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"}],"stateMutability":"pure","type":"function","name":"replace","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resetGasMetering"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"resumeGasMetering"},{"inputs":[],"stateMutability":"view","type":"function","name":"resumeTracing"},{"inputs":[{"internalType":"string","name":"urlOrAlias","type":"string"},{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"method","type":"string"},{"internalType":"string","name":"params","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"rpc","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"string","name":"rpcAlias","type":"string"}],"stateMutability":"view","type":"function","name":"rpcUrl","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrlStructs","outputs":[{"internalType":"struct VmSafe.Rpc[]","name":"urls","type":"tuple[]","components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"url","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rpcUrls","outputs":[{"internalType":"string[2][]","name":"urls","type":"string[2][]"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address[]","name":"values","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"address","name":"value","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"serializeAddress","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool[]","name":"values","type":"bool[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"serializeBool","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes[]","name":"values","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32[]","name":"values","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"serializeBytes32","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"int256[]","name":"values","type":"int256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeInt","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeJson","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"typeDescription","type":"string"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"serializeJsonType","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string[]","name":"values","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"serializeString","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"serializeUint","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"string","name":"objectKey","type":"string"},{"internalType":"string","name":"valueKey","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"serializeUintToHex","outputs":[{"internalType":"string","name":"json","type":"string"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setArbitraryStorage"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"value","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setEnv"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"sign","outputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"struct VmSafe.Wallet","name":"wallet","type":"tuple","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"publicKeyX","type":"uint256"},{"internalType":"uint256","name":"publicKeyY","type":"uint256"},{"internalType":"uint256","name":"privateKey","type":"uint256"}]},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signCompact","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"},{"internalType":"bytes32","name":"digest","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"signP256","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"sleep"},{"inputs":[{"internalType":"string","name":"input","type":"string"},{"internalType":"string","name":"delimiter","type":"string"}],"stateMutability":"pure","type":"function","name":"split","outputs":[{"internalType":"string[]","name":"outputs","type":"string[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[{"internalType":"uint256","name":"privateKey","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"startBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startDebugTraceRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startMappingRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"startStateDiffRecording"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnDebugTraceRecording","outputs":[{"internalType":"struct VmSafe.DebugStep[]","name":"step","type":"tuple[]","components":[{"internalType":"uint256[]","name":"stack","type":"uint256[]"},{"internalType":"bytes","name":"memoryInput","type":"bytes"},{"internalType":"uint8","name":"opcode","type":"uint8"},{"internalType":"uint64","name":"depth","type":"uint64"},{"internalType":"bool","name":"isOutOfGas","type":"bool"},{"internalType":"address","name":"contractAddr","type":"address"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopAndReturnStateDiff","outputs":[{"internalType":"struct VmSafe.AccountAccess[]","name":"accountAccesses","type":"tuple[]","components":[{"internalType":"struct VmSafe.ChainInfo","name":"chainInfo","type":"tuple","components":[{"internalType":"uint256","name":"forkId","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"}]},{"internalType":"enum VmSafe.AccountAccessKind","name":"kind","type":"uint8"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"accessor","type":"address"},{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint256","name":"oldBalance","type":"uint256"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"bytes","name":"deployedCode","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"reverted","type":"bool"},{"internalType":"struct VmSafe.StorageAccess[]","name":"storageAccesses","type":"tuple[]","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"slot","type":"bytes32"},{"internalType":"bool","name":"isWrite","type":"bool"},{"internalType":"bytes32","name":"previousValue","type":"bytes32"},{"internalType":"bytes32","name":"newValue","type":"bytes32"},{"internalType":"bool","name":"reverted","type":"bool"}]},{"internalType":"uint64","name":"depth","type":"uint64"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopBroadcast"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"stopMappingRecording"},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"data","type":"string"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toBase64URL","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toLowercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"value","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"toString","outputs":[{"internalType":"string","name":"stringifiedValue","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"toUppercase","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string","name":"input","type":"string"}],"stateMutability":"pure","type":"function","name":"trim","outputs":[{"internalType":"string","name":"output","type":"string"}]},{"inputs":[{"internalType":"string[]","name":"commandInput","type":"string[]"}],"stateMutability":"nonpayable","type":"function","name":"tryFfi","outputs":[{"internalType":"struct VmSafe.FfiResult","name":"result","type":"tuple","components":[{"internalType":"int32","name":"exitCode","type":"int32"},{"internalType":"bytes","name":"stdout","type":"bytes"},{"internalType":"bytes","name":"stderr","type":"bytes"}]}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unixTime","outputs":[{"internalType":"uint256","name":"milliseconds","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeFile"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"writeFileBinary"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeJson"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"data","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeLine"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"},{"internalType":"string","name":"valueKey","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"},{"inputs":[{"internalType":"string","name":"json","type":"string"},{"internalType":"string","name":"path","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"writeToml"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"accesses(address)":{"notice":"Gets all accessed reads and write slot from a `vm.record` session, for a given address."},"addr(uint256)":{"notice":"Gets the address for a given private key."},"assertApproxEqAbs(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbs(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`."},"assertApproxEqAbs(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message."},"assertApproxEqAbsDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects difference to be less than or equal to `maxDelta`. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRel(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRel(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100%"},"assertApproxEqRel(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Includes error message into revert string on failure."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(int256,int256,uint256,uint256,string)":{"notice":"Compares two `int256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message."},"assertApproxEqRelDecimal(uint256,uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects relative difference in percents to be less than or equal to `maxPercentDelta`. `maxPercentDelta` is an 18 decimal fixed point number, where 1e18 == 100% Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertEq(address,address)":{"notice":"Asserts that two `address` values are equal."},"assertEq(address,address,string)":{"notice":"Asserts that two `address` values are equal and includes error message into revert string on failure."},"assertEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are equal."},"assertEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are equal and includes error message into revert string on failure."},"assertEq(bool,bool)":{"notice":"Asserts that two `bool` values are equal."},"assertEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are equal and includes error message into revert string on failure."},"assertEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are equal."},"assertEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are equal and includes error message into revert string on failure."},"assertEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are equal."},"assertEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are equal and includes error message into revert string on failure."},"assertEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are equal."},"assertEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are equal."},"assertEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are equal and includes error message into revert string on failure."},"assertEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are equal."},"assertEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are equal and includes error message into revert string on failure."},"assertEq(int256,int256)":{"notice":"Asserts that two `int256` values are equal."},"assertEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are equal and includes error message into revert string on failure."},"assertEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are equal."},"assertEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are equal and includes error message into revert string on failure."},"assertEq(string,string)":{"notice":"Asserts that two `string` values are equal."},"assertEq(string,string,string)":{"notice":"Asserts that two `string` values are equal and includes error message into revert string on failure."},"assertEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are equal."},"assertEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are equal and includes error message into revert string on failure."},"assertEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal."},"assertEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal and includes error message into revert string on failure."},"assertEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256 values are equal."},"assertEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are equal and includes error message into revert string on failure."},"assertEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message."},"assertEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertFalse(bool)":{"notice":"Asserts that the given condition is false."},"assertFalse(bool,string)":{"notice":"Asserts that the given condition is false and includes error message into revert string on failure."},"assertGe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second."},"assertGe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second."},"assertGe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Includes error message into revert string on failure."},"assertGeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message."},"assertGeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second."},"assertGt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second."},"assertGt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Includes error message into revert string on failure."},"assertGtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertGtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message."},"assertGtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be greater than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLe(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second."},"assertLe(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLe(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second."},"assertLe(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Includes error message into revert string on failure."},"assertLeDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLeDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message."},"assertLeDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than or equal to second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLt(int256,int256)":{"notice":"Compares two `int256` values. Expects first value to be less than second."},"assertLt(int256,int256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLt(uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second."},"assertLt(uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Includes error message into revert string on failure."},"assertLtDecimal(int256,int256,uint256)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(int256,int256,uint256,string)":{"notice":"Compares two `int256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertLtDecimal(uint256,uint256,uint256)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message."},"assertLtDecimal(uint256,uint256,uint256,string)":{"notice":"Compares two `uint256` values. Expects first value to be less than second. Formats values with decimals in failure message. Includes error message into revert string on failure."},"assertNotEq(address,address)":{"notice":"Asserts that two `address` values are not equal."},"assertNotEq(address,address,string)":{"notice":"Asserts that two `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(address[],address[])":{"notice":"Asserts that two arrays of `address` values are not equal."},"assertNotEq(address[],address[],string)":{"notice":"Asserts that two arrays of `address` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool,bool)":{"notice":"Asserts that two `bool` values are not equal."},"assertNotEq(bool,bool,string)":{"notice":"Asserts that two `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bool[],bool[])":{"notice":"Asserts that two arrays of `bool` values are not equal."},"assertNotEq(bool[],bool[],string)":{"notice":"Asserts that two arrays of `bool` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes,bytes)":{"notice":"Asserts that two `bytes` values are not equal."},"assertNotEq(bytes,bytes,string)":{"notice":"Asserts that two `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32,bytes32)":{"notice":"Asserts that two `bytes32` values are not equal."},"assertNotEq(bytes32,bytes32,string)":{"notice":"Asserts that two `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes32[],bytes32[])":{"notice":"Asserts that two arrays of `bytes32` values are not equal."},"assertNotEq(bytes32[],bytes32[],string)":{"notice":"Asserts that two arrays of `bytes32` values are not equal and includes error message into revert string on failure."},"assertNotEq(bytes[],bytes[])":{"notice":"Asserts that two arrays of `bytes` values are not equal."},"assertNotEq(bytes[],bytes[],string)":{"notice":"Asserts that two arrays of `bytes` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256,int256)":{"notice":"Asserts that two `int256` values are not equal."},"assertNotEq(int256,int256,string)":{"notice":"Asserts that two `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(int256[],int256[])":{"notice":"Asserts that two arrays of `int256` values are not equal."},"assertNotEq(int256[],int256[],string)":{"notice":"Asserts that two arrays of `int256` values are not equal and includes error message into revert string on failure."},"assertNotEq(string,string)":{"notice":"Asserts that two `string` values are not equal."},"assertNotEq(string,string,string)":{"notice":"Asserts that two `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(string[],string[])":{"notice":"Asserts that two arrays of `string` values are not equal."},"assertNotEq(string[],string[],string)":{"notice":"Asserts that two arrays of `string` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal."},"assertNotEq(uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEq(uint256[],uint256[])":{"notice":"Asserts that two arrays of `uint256` values are not equal."},"assertNotEq(uint256[],uint256[],string)":{"notice":"Asserts that two arrays of `uint256` values are not equal and includes error message into revert string on failure."},"assertNotEqDecimal(int256,int256,uint256)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(int256,int256,uint256,string)":{"notice":"Asserts that two `int256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertNotEqDecimal(uint256,uint256,uint256)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message."},"assertNotEqDecimal(uint256,uint256,uint256,string)":{"notice":"Asserts that two `uint256` values are not equal, formatting them with decimals in failure message. Includes error message into revert string on failure."},"assertTrue(bool)":{"notice":"Asserts that the given condition is true."},"assertTrue(bool,string)":{"notice":"Asserts that the given condition is true and includes error message into revert string on failure."},"assume(bool)":{"notice":"If the condition is false, discard this run's fuzz inputs and generate new ones."},"assumeNoRevert()":{"notice":"Discard this run's fuzz inputs and generate new ones if next call reverted."},"breakpoint(string)":{"notice":"Writes a breakpoint to jump to in the debugger."},"breakpoint(string,bool)":{"notice":"Writes a conditional breakpoint to jump to in the debugger."},"broadcast()":{"notice":"Has the next call (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"broadcast(address)":{"notice":"Has the next call (at this call depth only) create a transaction with the address provided as the sender that can later be signed and sent onchain."},"broadcast(uint256)":{"notice":"Has the next call (at this call depth only) create a transaction with the private key provided as the sender that can later be signed and sent onchain."},"broadcastRawTransaction(bytes)":{"notice":"Takes a signed transaction and broadcasts it to the network."},"closeFile(string)":{"notice":"Closes file for reading, resetting the offset and allowing to read it from beginning with readLine. `path` is relative to the project root."},"computeCreate2Address(bytes32,bytes32)":{"notice":"Compute the address of a contract created with CREATE2 using the default CREATE2 deployer."},"computeCreate2Address(bytes32,bytes32,address)":{"notice":"Compute the address of a contract created with CREATE2 using the given CREATE2 deployer."},"computeCreateAddress(address,uint256)":{"notice":"Compute the address a contract will be deployed at for a given deployer address and nonce."},"copyFile(string,string)":{"notice":"Copies the contents of one file to another. This function will **overwrite** the contents of `to`. On success, the total number of bytes copied is returned and it is equal to the length of the `to` file as reported by `metadata`. Both `from` and `to` are relative to the project root."},"copyStorage(address,address)":{"notice":"Utility cheatcode to copy storage of `from` contract to another `to` contract."},"createDir(string,bool)":{"notice":"Creates a new, empty directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - User lacks permissions to modify `path`. - A parent of the given path doesn't exist and `recursive` is false. - `path` already exists and `recursive` is false. `path` is relative to the project root."},"createWallet(string)":{"notice":"Derives a private key from the name, labels the account with that name, and returns the wallet."},"createWallet(uint256)":{"notice":"Generates a wallet from the private key and returns the wallet."},"createWallet(uint256,string)":{"notice":"Generates a wallet from the private key, labels the account with that name, and returns the wallet."},"deployCode(string)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"deployCode(string,bytes)":{"notice":"Deploys a contract from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional. Additionally accepts abi-encoded constructor arguments."},"deriveKey(string,string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at `{derivationPath}{index}`."},"deriveKey(string,string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at `{derivationPath}{index}`."},"deriveKey(string,uint32)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) at the derivation path `m/44'/60'/0'/0/{index}`."},"deriveKey(string,uint32,string)":{"notice":"Derive a private key from a provided mnenomic string (or mnenomic file path) in the specified language at the derivation path `m/44'/60'/0'/0/{index}`."},"ensNamehash(string)":{"notice":"Returns ENS namehash for provided string."},"envAddress(string)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable was not found or could not be parsed."},"envAddress(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBool(string)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable was not found or could not be parsed."},"envBool(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable was not found or could not be parsed."},"envBytes(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable was not found or could not be parsed."},"envBytes32(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envExists(string)":{"notice":"Gets the environment variable `name` and returns true if it exists, else returns false."},"envInt(string)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable was not found or could not be parsed."},"envInt(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envOr(string,address)":{"notice":"Gets the environment variable `name` and parses it as `address`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bool)":{"notice":"Gets the environment variable `name` and parses it as `bool`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes)":{"notice":"Gets the environment variable `name` and parses it as `bytes`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,bytes32)":{"notice":"Gets the environment variable `name` and parses it as `bytes32`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,int256)":{"notice":"Gets the environment variable `name` and parses it as `int256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,address[])":{"notice":"Gets the environment variable `name` and parses it as an array of `address`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bool[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bool`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes32[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes32`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,bytes[])":{"notice":"Gets the environment variable `name` and parses it as an array of `bytes`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,int256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `int256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,string[])":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,string,uint256[])":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envOr(string,uint256)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable could not be parsed. Returns `defaultValue` if the variable was not found."},"envString(string)":{"notice":"Gets the environment variable `name` and parses it as `string`. Reverts if the variable was not found or could not be parsed."},"envString(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `string`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"envUint(string)":{"notice":"Gets the environment variable `name` and parses it as `uint256`. Reverts if the variable was not found or could not be parsed."},"envUint(string,string)":{"notice":"Gets the environment variable `name` and parses it as an array of `uint256`, delimited by `delim`. Reverts if the variable was not found or could not be parsed."},"eth_getLogs(uint256,uint256,address,bytes32[])":{"notice":"Gets all the logs according to specified filter."},"exists(string)":{"notice":"Returns true if the given path points to an existing entity, else returns false."},"ffi(string[])":{"notice":"Performs a foreign function call via the terminal."},"fsMetadata(string)":{"notice":"Given a path, query the file system to get information about a file, directory, etc."},"getArtifactPathByCode(bytes)":{"notice":"Gets the artifact path from code (aka. creation code)."},"getArtifactPathByDeployedCode(bytes)":{"notice":"Gets the artifact path from deployed code (aka. runtime code)."},"getBlobBaseFee()":{"notice":"Gets the current `block.blobbasefee`. You should use this instead of `block.blobbasefee` if you use `vm.blobBaseFee`, as `block.blobbasefee` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockNumber()":{"notice":"Gets the current `block.number`. You should use this instead of `block.number` if you use `vm.roll`, as `block.number` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getBlockTimestamp()":{"notice":"Gets the current `block.timestamp`. You should use this instead of `block.timestamp` if you use `vm.warp`, as `block.timestamp` is assumed to be constant across a transaction, and as a result will get optimized out by the compiler. See https://github.com/foundry-rs/foundry/issues/6180"},"getCode(string)":{"notice":"Gets the creation bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getDeployedCode(string)":{"notice":"Gets the deployed bytecode from an artifact file. Takes in the relative path to the json file or the path to the artifact in the form of :: where and parts are optional."},"getFoundryVersion()":{"notice":"Returns the Foundry version. Format: ++ Sample output: 0.2.0+faa94c384+202407110019 Note: Build timestamps may vary slightly across platforms due to separate CI jobs. For reliable version comparisons, use YYYYMMDD0000 format (e.g., >= 202407110000) to compare timestamps while ignoring minor time differences."},"getLabel(address)":{"notice":"Gets the label for the specified address."},"getMappingKeyAndParentOf(address,bytes32)":{"notice":"Gets the map key and parent of a mapping at a given slot, for a given address."},"getMappingLength(address,bytes32)":{"notice":"Gets the number of elements in the mapping at the given slot, for a given address."},"getMappingSlotAt(address,bytes32,uint256)":{"notice":"Gets the elements at index idx of the mapping at the given slot, for a given address. The index must be less than the length of the mapping (i.e. the number of keys in the mapping)."},"getNonce((address,uint256,uint256,uint256))":{"notice":"Get the nonce of a `Wallet`."},"getNonce(address)":{"notice":"Gets the nonce of an account."},"getRecordedLogs()":{"notice":"Gets all the recorded logs."},"getScriptWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"getWallets()":{"notice":"Returns addresses of available unlocked wallets in the script environment."},"indexOf(string,string)":{"notice":"Returns the index of the first occurrence of a `key` in an `input` string. Returns `NOT_FOUND` (i.e. `type(uint256).max`) if the `key` is not found. Returns 0 in case of an empty `key`."},"isContext(uint8)":{"notice":"Returns true if `forge` command was executed in given context."},"isDir(string)":{"notice":"Returns true if the path exists on disk and is pointing at a directory, else returns false."},"isFile(string)":{"notice":"Returns true if the path exists on disk and is pointing at a regular file, else returns false."},"keyExists(string,string)":{"notice":"Checks if `key` exists in a JSON object `keyExists` is being deprecated in favor of `keyExistsJson`. It will be removed in future versions."},"keyExistsJson(string,string)":{"notice":"Checks if `key` exists in a JSON object."},"keyExistsToml(string,string)":{"notice":"Checks if `key` exists in a TOML table."},"label(address,string)":{"notice":"Labels an address in call traces."},"lastCallGas()":{"notice":"Gets the gas used in the last call from the callee perspective."},"load(address,bytes32)":{"notice":"Loads a storage slot from an address."},"parseAddress(string)":{"notice":"Parses the given `string` into an `address`."},"parseBool(string)":{"notice":"Parses the given `string` into a `bool`."},"parseBytes(string)":{"notice":"Parses the given `string` into `bytes`."},"parseBytes32(string)":{"notice":"Parses the given `string` into a `bytes32`."},"parseInt(string)":{"notice":"Parses the given `string` into a `int256`."},"parseJson(string)":{"notice":"ABI-encodes a JSON object."},"parseJson(string,string)":{"notice":"ABI-encodes a JSON object at `key`."},"parseJsonAddress(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address`."},"parseJsonAddressArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `address[]`."},"parseJsonBool(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool`."},"parseJsonBoolArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bool[]`."},"parseJsonBytes(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes`."},"parseJsonBytes32(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32`."},"parseJsonBytes32Array(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes32[]`."},"parseJsonBytesArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `bytes[]`."},"parseJsonInt(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256`."},"parseJsonIntArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `int256[]`."},"parseJsonKeys(string,string)":{"notice":"Returns an array of all the keys in a JSON object."},"parseJsonString(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string`."},"parseJsonStringArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `string[]`."},"parseJsonType(string,string)":{"notice":"Parses a string of JSON data and coerces it to type corresponding to `typeDescription`."},"parseJsonType(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type corresponding to `typeDescription`."},"parseJsonTypeArray(string,string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseJsonUint(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256`."},"parseJsonUintArray(string,string)":{"notice":"Parses a string of JSON data at `key` and coerces it to `uint256[]`."},"parseToml(string)":{"notice":"ABI-encodes a TOML table."},"parseToml(string,string)":{"notice":"ABI-encodes a TOML table at `key`."},"parseTomlAddress(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address`."},"parseTomlAddressArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `address[]`."},"parseTomlBool(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool`."},"parseTomlBoolArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bool[]`."},"parseTomlBytes(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes`."},"parseTomlBytes32(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32`."},"parseTomlBytes32Array(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes32[]`."},"parseTomlBytesArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `bytes[]`."},"parseTomlInt(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256`."},"parseTomlIntArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `int256[]`."},"parseTomlKeys(string,string)":{"notice":"Returns an array of all the keys in a TOML table."},"parseTomlString(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string`."},"parseTomlStringArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `string[]`."},"parseTomlType(string,string)":{"notice":"Parses a string of TOML data and coerces it to type corresponding to `typeDescription`."},"parseTomlType(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type corresponding to `typeDescription`."},"parseTomlTypeArray(string,string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to type array corresponding to `typeDescription`."},"parseTomlUint(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256`."},"parseTomlUintArray(string,string)":{"notice":"Parses a string of TOML data at `key` and coerces it to `uint256[]`."},"parseUint(string)":{"notice":"Parses the given `string` into a `uint256`."},"pauseGasMetering()":{"notice":"Pauses gas metering (i.e. gas usage is not counted). Noop if already paused."},"pauseTracing()":{"notice":"Pauses collection of call traces. Useful in cases when you want to skip tracing of complex calls which are not useful for debugging."},"projectRoot()":{"notice":"Get the path of the current project root."},"prompt(string)":{"notice":"Prompts the user for a string value in the terminal."},"promptAddress(string)":{"notice":"Prompts the user for an address in the terminal."},"promptSecret(string)":{"notice":"Prompts the user for a hidden string value in the terminal."},"promptSecretUint(string)":{"notice":"Prompts the user for hidden uint256 in the terminal (usually pk)."},"promptUint(string)":{"notice":"Prompts the user for uint256 in the terminal."},"publicKeyP256(uint256)":{"notice":"Derives secp256r1 public key from the provided `privateKey`."},"randomAddress()":{"notice":"Returns a random `address`."},"randomBool()":{"notice":"Returns a random `bool`."},"randomBytes(uint256)":{"notice":"Returns a random byte array value of the given length."},"randomBytes4()":{"notice":"Returns a random fixed-size byte array of length 4."},"randomBytes8()":{"notice":"Returns a random fixed-size byte array of length 8."},"randomInt()":{"notice":"Returns a random `int256` value."},"randomInt(uint256)":{"notice":"Returns a random `int256` value of given bits."},"randomUint()":{"notice":"Returns a random uint256 value."},"randomUint(uint256)":{"notice":"Returns a random `uint256` value of given bits."},"randomUint(uint256,uint256)":{"notice":"Returns random uint256 value between the provided range (=min..=max)."},"readDir(string)":{"notice":"Reads the directory at the given path recursively, up to `maxDepth`. `maxDepth` defaults to 1, meaning only the direct children of the given directory will be returned. Follows symbolic links if `followLinks` is true."},"readDir(string,uint64)":{"notice":"See `readDir(string)`."},"readDir(string,uint64,bool)":{"notice":"See `readDir(string)`."},"readFile(string)":{"notice":"Reads the entire content of file to string. `path` is relative to the project root."},"readFileBinary(string)":{"notice":"Reads the entire content of file as binary. `path` is relative to the project root."},"readLine(string)":{"notice":"Reads next line of file to string."},"readLink(string)":{"notice":"Reads a symbolic link, returning the path that the link points to. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` is not a symbolic link. - `path` does not exist."},"record()":{"notice":"Records all storage reads and writes."},"recordLogs()":{"notice":"Record all the transaction logs."},"rememberKey(uint256)":{"notice":"Adds a private key to the local forge wallet and returns the address."},"rememberKeys(string,string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic in the specified language at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"rememberKeys(string,string,uint32)":{"notice":"Derive a set number of wallets from a mnemonic at the derivation path `m/44'/60'/0'/0/{0..count}`. The respective private keys are saved to the local forge wallet for later use and their addresses are returned."},"removeDir(string,bool)":{"notice":"Removes a directory at the provided path. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` doesn't exist. - `path` isn't a directory. - User lacks permissions to modify `path`. - The directory is not empty and `recursive` is false. `path` is relative to the project root."},"removeFile(string)":{"notice":"Removes a file from the filesystem. This cheatcode will revert in the following situations, but is not limited to just these cases: - `path` points to a directory. - The file doesn't exist. - The user lacks permissions to remove the file. `path` is relative to the project root."},"replace(string,string,string)":{"notice":"Replaces occurrences of `from` in the given `string` with `to`."},"resetGasMetering()":{"notice":"Reset gas metering (i.e. gas usage is set to gas limit)."},"resumeGasMetering()":{"notice":"Resumes gas metering (i.e. gas usage is counted again). Noop if already on."},"resumeTracing()":{"notice":"Unpauses collection of call traces."},"rpc(string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the current fork URL."},"rpc(string,string,string)":{"notice":"Performs an Ethereum JSON-RPC request to the given endpoint."},"rpcUrl(string)":{"notice":"Returns the RPC url for the given alias."},"rpcUrlStructs()":{"notice":"Returns all rpc urls and their aliases as structs."},"rpcUrls()":{"notice":"Returns all rpc urls and their aliases `[alias, url][]`."},"serializeAddress(string,string,address)":{"notice":"See `serializeJson`."},"serializeAddress(string,string,address[])":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool)":{"notice":"See `serializeJson`."},"serializeBool(string,string,bool[])":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes)":{"notice":"See `serializeJson`."},"serializeBytes(string,string,bytes[])":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32)":{"notice":"See `serializeJson`."},"serializeBytes32(string,string,bytes32[])":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256)":{"notice":"See `serializeJson`."},"serializeInt(string,string,int256[])":{"notice":"See `serializeJson`."},"serializeJson(string,string)":{"notice":"Serializes a key and value to a JSON object stored in-memory that can be later written to a file. Returns the stringified version of the specific JSON file up to that moment."},"serializeJsonType(string,bytes)":{"notice":"See `serializeJson`."},"serializeJsonType(string,string,string,bytes)":{"notice":"See `serializeJson`."},"serializeString(string,string,string)":{"notice":"See `serializeJson`."},"serializeString(string,string,string[])":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256)":{"notice":"See `serializeJson`."},"serializeUint(string,string,uint256[])":{"notice":"See `serializeJson`."},"serializeUintToHex(string,string,uint256)":{"notice":"See `serializeJson`."},"setArbitraryStorage(address)":{"notice":"Utility cheatcode to set arbitrary storage for given target address."},"setEnv(string,string)":{"notice":"Sets environment variables."},"sign((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`."},"sign(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Raises error if none of the signers passed into the script have provided address."},"sign(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"sign(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve."},"signCompact((address,uint256,uint256,uint256),bytes32)":{"notice":"Signs data with a `Wallet`. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signCompact(address,bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. Raises error if none of the signers passed into the script have provided address."},"signCompact(bytes32)":{"notice":"Signs `digest` with signer provided to script using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes. If `--sender` is provided, the signer with provided address is used, otherwise, if exactly one signer is provided to the script, that signer is used. Raises error if signer passed through `--sender` does not match any unlocked signers or if `--sender` is not provided and not exactly one signer is passed to the script."},"signCompact(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256k1 curve. Returns a compact signature (`r`, `vs`) as per EIP-2098, where `vs` encodes both the signature's `s` value, and the recovery id `v` in a single bytes32. This format reduces the signature size from 65 to 64 bytes."},"signP256(uint256,bytes32)":{"notice":"Signs `digest` with `privateKey` using the secp256r1 curve."},"sleep(uint256)":{"notice":"Suspends execution of the main thread for `duration` milliseconds."},"split(string,string)":{"notice":"Splits the given `string` into an array of strings divided by the `delimiter`."},"startBroadcast()":{"notice":"Has all subsequent calls (at this call depth only) create transactions that can later be signed and sent onchain. Broadcasting address is determined by checking the following in order: 1. If `--sender` argument was provided, that address is used. 2. If exactly one signer (e.g. private key, hw wallet, keystore) is set when `forge broadcast` is invoked, that signer is used. 3. Otherwise, default foundry sender (1804c8AB1F12E6bbf3894d4083f33e07309d1f38) is used."},"startBroadcast(address)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the address provided that can later be signed and sent onchain."},"startBroadcast(uint256)":{"notice":"Has all subsequent calls (at this call depth only) create transactions with the private key provided that can later be signed and sent onchain."},"startDebugTraceRecording()":{"notice":"Records the debug trace during the run."},"startMappingRecording()":{"notice":"Starts recording all map SSTOREs for later retrieval."},"startStateDiffRecording()":{"notice":"Record all account accesses as part of CREATE, CALL or SELFDESTRUCT opcodes in order, along with the context of the calls"},"stopAndReturnDebugTraceRecording()":{"notice":"Stop debug trace recording and returns the recorded debug trace."},"stopAndReturnStateDiff()":{"notice":"Returns an ordered array of all account accesses from a `vm.startStateDiffRecording` session."},"stopBroadcast()":{"notice":"Stops collecting onchain transactions."},"stopMappingRecording()":{"notice":"Stops recording all map SSTOREs for later retrieval and clears the recorded data."},"toBase64(bytes)":{"notice":"Encodes a `bytes` value to a base64 string."},"toBase64(string)":{"notice":"Encodes a `string` value to a base64 string."},"toBase64URL(bytes)":{"notice":"Encodes a `bytes` value to a base64url string."},"toBase64URL(string)":{"notice":"Encodes a `string` value to a base64url string."},"toLowercase(string)":{"notice":"Converts the given `string` value to Lowercase."},"toString(address)":{"notice":"Converts the given value to a `string`."},"toString(bool)":{"notice":"Converts the given value to a `string`."},"toString(bytes)":{"notice":"Converts the given value to a `string`."},"toString(bytes32)":{"notice":"Converts the given value to a `string`."},"toString(int256)":{"notice":"Converts the given value to a `string`."},"toString(uint256)":{"notice":"Converts the given value to a `string`."},"toUppercase(string)":{"notice":"Converts the given `string` value to Uppercase."},"trim(string)":{"notice":"Trims leading and trailing whitespace from the given `string` value."},"tryFfi(string[])":{"notice":"Performs a foreign function call via terminal and returns the exit code, stdout, and stderr."},"unixTime()":{"notice":"Returns the time since unix epoch in milliseconds."},"writeFile(string,string)":{"notice":"Writes data to file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeFileBinary(string,bytes)":{"notice":"Writes binary data to a file, creating a file if it does not exist, and entirely replacing its contents if it does. `path` is relative to the project root."},"writeJson(string,string)":{"notice":"Write a serialized JSON object to a file. If the file exists, it will be overwritten."},"writeJson(string,string,string)":{"notice":"Write a serialized JSON object to an **existing** JSON file, replacing a value with key = This is useful to replace a specific value of a JSON file, without having to parse the entire thing."},"writeLine(string,string)":{"notice":"Writes line to file, creating a file if it does not exist. `path` is relative to the project root."},"writeToml(string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML to a file."},"writeToml(string,string,string)":{"notice":"Takes serialized JSON, converts to TOML and write a serialized TOML table to an **existing** TOML file, replacing a value with key = This is useful to replace a specific value of a TOML file, without having to parse the entire thing."}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/Vm.sol":"VmSafe"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"}},"version":1},"id":9} \ No newline at end of file diff --git a/out/build-info/35fec37d57b4d29e712fc83affe3c315.json b/out/build-info/35fec37d57b4d29e712fc83affe3c315.json deleted file mode 100644 index 156668d..0000000 --- a/out/build-info/35fec37d57b4d29e712fc83affe3c315.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"35fec37d57b4d29e712fc83affe3c315","source_id_to_path":{"0":"lib/solady/src/utils/MetadataReaderLib.sol","1":"lib/solady/src/utils/SafeTransferLib.sol","2":"src/AAVEIntents.sol","3":"src/IAEth.sol","4":"src/IERC20.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/build-info/58c984fa81f30e09c0163b31124a40e6.json b/out/build-info/58c984fa81f30e09c0163b31124a40e6.json deleted file mode 100644 index 96c7613..0000000 --- a/out/build-info/58c984fa81f30e09c0163b31124a40e6.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"58c984fa81f30e09c0163b31124a40e6","source_id_to_path":{"0":"lib/forge-std/src/Base.sol","1":"lib/forge-std/src/Script.sol","2":"lib/forge-std/src/StdChains.sol","3":"lib/forge-std/src/StdCheats.sol","4":"lib/forge-std/src/StdJson.sol","5":"lib/forge-std/src/StdMath.sol","6":"lib/forge-std/src/StdStorage.sol","7":"lib/forge-std/src/StdStyle.sol","8":"lib/forge-std/src/StdUtils.sol","9":"lib/forge-std/src/Vm.sol","10":"lib/forge-std/src/console.sol","11":"lib/forge-std/src/console2.sol","12":"lib/forge-std/src/interfaces/IERC165.sol","13":"lib/forge-std/src/interfaces/IERC20.sol","14":"lib/forge-std/src/interfaces/IERC721.sol","15":"lib/forge-std/src/interfaces/IMulticall3.sol","16":"lib/forge-std/src/mocks/MockERC20.sol","17":"lib/forge-std/src/mocks/MockERC721.sol","18":"lib/forge-std/src/safeconsole.sol","19":"lib/solady/src/utils/MetadataReaderLib.sol","20":"lib/solady/src/utils/SafeTransferLib.sol","21":"script/DeployTradeIntent.sol","22":"src/CompoundETHManager2.sol","23":"src/CompoundIntents.sol","24":"src/IERC20.sol","25":"src/IEth.sol","26":"src/IUniswap.sol","27":"src/IntentEngineTrade.sol","28":"src/UniswapRegistry.sol"},"language":"Solidity"} \ No newline at end of file diff --git a/out/console.sol/console.json b/out/console.sol/console.json index 5eeab45..a4c7850 100644 --- a/out/console.sol/console.json +++ b/out/console.sol/console.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212203528ce6baa1332ced1aad4139a72bee78c2827e1533cc300146d2518cc49bac964736f6c634300081c0033","sourceMap":"66:69203:10:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212203528ce6baa1332ced1aad4139a72bee78c2827e1533cc300146d2518cc49bac964736f6c634300081c0033","sourceMap":"66:69203:10:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207f422d56107d2ee7b239e349ac0f491a31deff8f6788b5207fc1e0615a3e122e64736f6c634300081c0033","sourceMap":"66:69203:10:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212207f422d56107d2ee7b239e349ac0f491a31deff8f6788b5207fc1e0615a3e122e64736f6c634300081c0033","sourceMap":"66:69203:10:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/console.sol":"console"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"}},"version":1},"id":10} \ No newline at end of file diff --git a/out/interfaces/IERC20.sol/IERC20.json b/out/interfaces/IERC20.sol/IERC20.json index b24b2d5..aa77e66 100644 --- a/out/interfaces/IERC20.sol/IERC20.json +++ b/out/interfaces/IERC20.sol/IERC20.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.This includes the optional name, symbol, and decimals metadata.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"balanceOf(address)\":{\"notice\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"balanceOf(address)":{"notice":"Returns the amount of tokens owned by `account`."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"}},"version":1},"id":13} \ No newline at end of file +{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.This includes the optional name, symbol, and decimals metadata.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set, where `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`).\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`\"},\"approve(address,uint256)\":{\"notice\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\"},\"balanceOf(address)\":{\"notice\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"notice\":\"Returns the decimals places of the token.\"},\"name()\":{\"notice\":\"Returns the name of the token.\"},\"symbol()\":{\"notice\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"notice\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"notice\":\"Moves `amount` tokens from the caller's account to `to`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"Be aware of front-running risks: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729"}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address)":{"notice":"Returns the remaining number of tokens that `spender` is allowed to spend on behalf of `owner`"},"approve(address,uint256)":{"notice":"Sets `amount` as the allowance of `spender` over the caller's tokens."},"balanceOf(address)":{"notice":"Returns the amount of tokens owned by `account`."},"decimals()":{"notice":"Returns the decimals places of the token."},"name()":{"notice":"Returns the name of the token."},"symbol()":{"notice":"Returns the symbol of the token."},"totalSupply()":{"notice":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"notice":"Moves `amount` tokens from the caller's account to `to`."},"transferFrom(address,address,uint256)":{"notice":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance."}},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/interfaces/IERC20.sol":"IERC20"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"}},"version":1},"id":13} \ No newline at end of file diff --git a/out/safeconsole.sol/safeconsole.json b/out/safeconsole.sol/safeconsole.json index 36d0c5a..4a207fc 100644 --- a/out/safeconsole.sol/safeconsole.json +++ b/out/safeconsole.sol/safeconsole.json @@ -1 +1 @@ -{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207b12fcd5eeec119744cc5042b36c1e39c13950c4f3a8c7a60557e04798d43e5264736f6c634300081c0033","sourceMap":"163:427371:18:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea26469706673582212207b12fcd5eeec119744cc5042b36c1e39c13950c4f3a8c7a60557e04798d43e5264736f6c634300081c0033","sourceMap":"163:427371:18:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"philogy \",\"details\":\"Code generated automatically by script.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/safeconsole.sol\":\"safeconsole\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":forge-std/=lib/forge-std/src/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/safeconsole.sol":"safeconsole"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file +{"abi":[],"bytecode":{"object":"0x6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220714d7c8d793f7ede84dc5af1b4ebb458e0abe04bb0bbf22b87a4b3df6a46aaf064736f6c634300081c0033","sourceMap":"163:427371:18:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fdfea2646970667358221220714d7c8d793f7ede84dc5af1b4ebb458e0abe04bb0bbf22b87a4b3df6a46aaf064736f6c634300081c0033","sourceMap":"163:427371:18:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"philogy \",\"details\":\"Code generated automatically by script.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/safeconsole.sol\":\"safeconsole\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[\":@forge/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@solady/=lib/solady/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@forge/=lib/forge-std/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@solady/=lib/solady/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer":{"enabled":true,"runs":9999},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/forge-std/src/safeconsole.sol":"safeconsole"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"}},"version":1},"id":18} \ No newline at end of file diff --git a/script/DeployTradeIntent.sol b/script/DeployTradeIntent.sol index 98f97a5..ed8f70d 100644 --- a/script/DeployTradeIntent.sol +++ b/script/DeployTradeIntent.sol @@ -3,7 +3,9 @@ pragma solidity ^0.8.17; import {Script} from "forge-std/Script.sol"; //import Script from Foundry Standard Lib -import {IntentEngine} from "../src/IntentEngineTrade.sol"; //import contract to deploy +// import {IntentEngine} from "../src/IntentEngineTrade.sol"; //import contract to deploy //old one +import {IntentEngine} from "../src/IntentEngineCore.sol"; //import contract to deploy //old one + contract DeployTradeIntent is Script { diff --git a/src/IntentEngineCore.sol b/src/IntentEngineCore.sol index f2791d9..272bb82 100644 --- a/src/IntentEngineCore.sol +++ b/src/IntentEngineCore.sol @@ -13,7 +13,8 @@ contract IntentEngine is UniswapRegistry { error InvalidSyntax(); error InvalidCharacter(); - address constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; + // address constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; + address constant USDT = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //Right now for testing its weth warna at time of trading is USDT struct StringPart { uint256 start; diff --git a/src/UniswapRegistry.sol b/src/UniswapRegistry.sol index 269cb86..f800ef9 100644 --- a/src/UniswapRegistry.sol +++ b/src/UniswapRegistry.sol @@ -12,13 +12,13 @@ contract UniswapRegistry{ address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; address constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F; - address constant WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; + address constant BTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; constructor() { uniswapTokenToAddress["weth"] = WETH; uniswapTokenToAddress["usdc"] = USDC; uniswapTokenToAddress["dai"] = DAI; - uniswapTokenToAddress["wbtc"] = WBTC; + uniswapTokenToAddress["btc"] = BTC; } From edf6762b1e5ba53627762ce5a204f2946d8adce5 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 20:02:13 +0530 Subject: [PATCH 28/71] Updated Readme TODO --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d44e2dd..83dab0b 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,6 @@ forge script script/DeployTradeIntent.sol:DeployTradeIntent --rpc-url http://127 ```bash anvil --fork-url https://eth-mainnet.g.alchemy.com/v2/KywLaq2zlVzePOhip0BY3U8ztfHkYDmo ``` - - New Flow Return a json @@ -32,4 +30,11 @@ short term long term { ,true -} \ No newline at end of file +} + +###### TO DO +problem in code for testing use hora h weth for testing // usey fix kr to usdt just uncomment +similarly in frontend part if buy h to approve lo usdt ka!! + +arbitrum mein deploy krenge to waha erc20s ka address change hojayega and uniswap router wagera ka bhi +data kahi achi api se lao rather than graphs From 96785f1d1309b1a15abd079b1434ce79bf9c313b Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 20:13:46 +0530 Subject: [PATCH 29/71] changed frontend for api call from flask (not tested flask yet) --- .../src/components/TradingChatRSIAlgos.jsx | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx index 76319a4..7e574a4 100644 --- a/frontend/src/components/TradingChatRSIAlgos.jsx +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -57,12 +57,32 @@ function IntentTradingAlgo() { setErrorMessage('Please connect your wallet before generating signals.'); return; } - + console.log("Generating signals with risk level:", riskLevel, "and term:", term); setLoadingSignals(true); setErrorMessage(''); try { - // Custom output for testing: + // Uncomment the following block to use the API call + const response = await fetch( + `http://localhost:5050/decisions?risk=${riskLevel}&term=${term}`, + { method: 'GET', headers: { 'Content-Type': 'application/json' } } + ); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const data = await response.json(); + console.log("Signals received from API:", data); + setTradingSignals(data); + // Prepopulate inputAmounts for tokens with BUY or SELL signals + setInputAmounts({ + BTC: "0.1", + WETH: "0.1" + }); + // Reset approvedTokens to ensure fresh approvals on new signals + setApprovedTokens({}); + + // --- Custom output for testing (commented out) --- + /* const customData = { timestamp: Date.now(), decisions: { @@ -73,13 +93,12 @@ function IntentTradingAlgo() { }; console.log("Custom signals generated:", customData); setTradingSignals(customData); - // Prepopulate inputAmounts for tokens with BUY or SELL signals setInputAmounts({ BTC: "0.1", WETH: "0.1" }); - // Reset approvedTokens to ensure fresh approvals on new signals setApprovedTokens({}); + */ } catch (error) { console.error('Error generating signals:', error); setErrorMessage('Failed to generate signals. Please try again.'); @@ -87,6 +106,7 @@ function IntentTradingAlgo() { setLoadingSignals(false); } }; + // When user clicks Trade, approval happens on-demand. const handleTrade = async (token, decision) => { From 0daf1b192fa5ab5517ab0ad71411739f015e0556 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sun, 30 Mar 2025 20:34:36 +0530 Subject: [PATCH 30/71] api name changes and added --- README.md | 8 + backend/Python./Python/Algorithms/DCA.py | 193 +++++++++++++++++ backend/{ => Python.}/Python/Algorithms/MA.py | 34 ++- backend/Python./Python/Algorithms/MACD.py | 128 ++++++++++++ .../{ => Python.}/Python/Algorithms/RSI.py | 0 backend/Python./Python/Decisions/DCA_dis.py | 132 ++++++++++++ backend/Python./Python/Decisions/MACD_dis.py | 89 ++++++++ backend/Python./Python/Decisions/MA_dis.py | 88 ++++++++ .../Python/Decisions/RSI_dis.py} | 52 ++--- .../Python./Python/Decisions/RSI_server.py | 43 ++++ .../{ => Python.}/Python/SubGraph/dai_usdc.py | 0 .../Python/SubGraph/wbtc_usdc.py | 0 .../Python/SubGraph/weth_usdc.py | 0 backend/{ => Python.}/Python/main.py | 0 backend/Python/Algorithms/DCA.py | 197 ------------------ backend/Python/Algorithms/MACD.py | 183 ---------------- backend/Python/Decisions/DCA_dis.py | 82 -------- backend/Python/Decisions/MACD_dis.py | 81 ------- backend/Python/Decisions/MA_dis.py | 82 -------- backend/Python/Decisions/RSI_dis.py | 109 ---------- testingapis.js | 6 + 21 files changed, 722 insertions(+), 785 deletions(-) create mode 100644 backend/Python./Python/Algorithms/DCA.py rename backend/{ => Python.}/Python/Algorithms/MA.py (82%) create mode 100644 backend/Python./Python/Algorithms/MACD.py rename backend/{ => Python.}/Python/Algorithms/RSI.py (100%) create mode 100644 backend/Python./Python/Decisions/DCA_dis.py create mode 100644 backend/Python./Python/Decisions/MACD_dis.py create mode 100644 backend/Python./Python/Decisions/MA_dis.py rename backend/{Python/Decisions/RSI_server.py => Python./Python/Decisions/RSI_dis.py} (73%) create mode 100644 backend/Python./Python/Decisions/RSI_server.py rename backend/{ => Python.}/Python/SubGraph/dai_usdc.py (100%) rename backend/{ => Python.}/Python/SubGraph/wbtc_usdc.py (100%) rename backend/{ => Python.}/Python/SubGraph/weth_usdc.py (100%) rename backend/{ => Python.}/Python/main.py (100%) delete mode 100644 backend/Python/Algorithms/DCA.py delete mode 100644 backend/Python/Algorithms/MACD.py delete mode 100644 backend/Python/Decisions/DCA_dis.py delete mode 100644 backend/Python/Decisions/MACD_dis.py delete mode 100644 backend/Python/Decisions/MA_dis.py delete mode 100644 backend/Python/Decisions/RSI_dis.py create mode 100644 testingapis.js diff --git a/README.md b/README.md index 83dab0b..1332cf7 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,11 @@ similarly in frontend part if buy h to approve lo usdt ka!! arbitrum mein deploy krenge to waha erc20s ka address change hojayega and uniswap router wagera ka bhi data kahi achi api se lao rather than graphs + + +python3 -m Python.Decisions.RSI_server + +api testing krni hogi like python folder add krdiya h Shorya ne and frontend with smart contracts chal gya h +1. api testing +2. full flow testing on anvil +3. fix json coming from apis boht saara aar ashort kro bas sell buy hold \ No newline at end of file diff --git a/backend/Python./Python/Algorithms/DCA.py b/backend/Python./Python/Algorithms/DCA.py new file mode 100644 index 0000000..7d59c7c --- /dev/null +++ b/backend/Python./Python/Algorithms/DCA.py @@ -0,0 +1,193 @@ +def extract_weth_prices(graph_data): + """ + Extracts a chronological list of WETH prices in USD from the subgraph swap data. + Assumes that the JSON structure is: + { + "data": { + "swaps": [ + { + "pool": { ... }, + "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, + "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } + }, + ... + ] + } + } + + Since the query orders swaps by timestamp in descending order, this function reverses the list + to create a chronological (oldest-first) price series. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Reverse the list so that the earliest swap is first. + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenOut", {}) + # We assume WETH is the asset of interest. + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + return prices + +def extract_latest_price(graph_data, asset_type="WETH"): + """ + Extracts the most recent price (in USDC) from the subgraph data for the specified asset. + """ + prices = extract_prices(graph_data, asset_type) + if not prices: + return None + return prices[-1] + +def extract_prices(graph_data, asset_type="WETH"): + """ + Extracts a chronological list of prices in USD from the subgraph swap data for the specified asset. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Reverse the list so that the earliest swap is first. + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenOut", {}) + try: + price = float(token_in.get("lastPriceUSD", "0")) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + return prices + +def compute_portfolio_value(portfolio, price_data): + """ + Computes the total portfolio value in USDC. + Each asset is valued at its current price. + Portfolio is a dictionary with keys representing different assets. + """ + total_value = 0 + for asset, amount in portfolio.items(): + if asset == "USDC": + total_value += amount + elif asset in price_data and price_data[asset] is not None: + total_value += amount * price_data[asset] + return total_value + +def dca_investment(graph_data, invest_amount, portfolio, asset="WETH"): + """ + Executes a Dollar-Cost Averaging (DCA) investment. + + Parameters: + - graph_data: The graph data containing price information. + - invest_amount: The USDC amount allocated for this investment cycle. + - portfolio: A dictionary representing current holdings. + - asset: The asset to invest in (default is "WETH"). + + Returns: + The updated portfolio and details of the transaction. + """ + current_price = extract_latest_price(graph_data[asset], asset) if asset in graph_data else None + if current_price is None: + return portfolio, {"invested": 0, "bought": 0, "price": None, "asset": asset} + + # For DCA, assume that if the portfolio does not have sufficient USDC, + # additional funds are injected (or invest_amount is added externally). + if portfolio.get("USDC", 0) < invest_amount: + portfolio["USDC"] = portfolio.get("USDC", 0) + invest_amount + + assets_bought = invest_amount / current_price + portfolio["USDC"] -= invest_amount + portfolio[asset] = portfolio.get(asset, 0) + assets_bought + + return portfolio, { + "action": "BUY", # For DCA, we always buy at regular intervals + "position_size": assets_bought, + "price": current_price, + "invested": invest_amount, + "asset": asset + } + +def rebalance_portfolio(portfolio, target_allocation, graph_data, tolerance=0.02): + """ + Rebalances the portfolio to meet the target allocation using a buy-and-hold approach. + + Parameters: + - portfolio: Dictionary with keys for different assets. + - target_allocation: Dictionary indicating desired ratios. + - tolerance: The allowable deviation before triggering a rebalance. + - graph_data: Latest subgraph data to determine current prices. + + Returns: + The updated portfolio along with trade instructions. + """ + # Extract current prices for all assets + price_data = {} + for asset in portfolio: + if asset == "USDC": + price_data[asset] = 1.0 + elif asset in graph_data and graph_data[asset]: + price_data[asset] = extract_latest_price(graph_data[asset], asset) + + total_value = compute_portfolio_value(portfolio, price_data) + + # Calculate current allocation for each asset + current_alloc = {} + for asset in portfolio: + if asset == "USDC": + current_alloc[asset] = portfolio[asset] / total_value if total_value > 0 else 0 + elif asset in price_data and price_data[asset]: + current_alloc[asset] = (portfolio[asset] * price_data[asset]) / total_value if total_value > 0 else 0 + + trade_instructions = {"trades": []} + needs_rebalance = False + + # Check deviation for each asset + for asset in target_allocation: + if asset not in current_alloc: + current_alloc[asset] = 0 + + target = target_allocation.get(asset, 0) + deviation = current_alloc[asset] - target + + if abs(deviation) >= tolerance: + needs_rebalance = True + + if deviation > 0: + # Overallocated: Sell some asset + if asset != "USDC": + value_to_sell = deviation * total_value + units_to_sell = value_to_sell / price_data[asset] if asset in price_data and price_data[asset] else 0 + portfolio[asset] -= units_to_sell + portfolio["USDC"] += value_to_sell + trade_instructions["trades"].append({ + "asset": asset, + "action": "SELL", + "units": units_to_sell, + "value": value_to_sell + }) + elif deviation < 0 and asset != "USDC": + # Underallocated: Buy asset using USDC + value_to_buy = -deviation * total_value + + # Ensure there is enough USDC available + if portfolio.get("USDC", 0) < value_to_buy: + value_to_buy = portfolio.get("USDC", 0) + + if value_to_buy > 0 and asset in price_data and price_data[asset]: + units_to_buy = value_to_buy / price_data[asset] + portfolio["USDC"] -= value_to_buy + portfolio[asset] = portfolio.get(asset, 0) + units_to_buy + trade_instructions["trades"].append({ + "asset": asset, + "action": "BUY", + "units": units_to_buy, + "value": value_to_buy + }) + + if not needs_rebalance: + trade_instructions["message"] = "Portfolio within tolerance. No rebalancing required." + else: + trade_instructions["message"] = "Portfolio rebalanced." + + return portfolio, trade_instructions \ No newline at end of file diff --git a/backend/Python/Algorithms/MA.py b/backend/Python./Python/Algorithms/MA.py similarity index 82% rename from backend/Python/Algorithms/MA.py rename to backend/Python./Python/Algorithms/MA.py index dded4e9..bb47164 100644 --- a/backend/Python/Algorithms/MA.py +++ b/backend/Python./Python/Algorithms/MA.py @@ -4,8 +4,8 @@ def extract_weth_prices(graph_data): """ - Extract a chronological list of WETH prices in USD from the subgraph swap data. - The JSON structure is assumed to be: + Extracts a chronological list of WETH prices in USD from the subgraph swap data. + Assumes that the JSON structure is: { "data": { "swaps": [ @@ -19,30 +19,26 @@ def extract_weth_prices(graph_data): } } - Since swaps are ordered by timestamp in descending order in the query, - we reverse the list to obtain chronological order (oldest first). + Since the query orders swaps by timestamp in descending order, this function reverses the list + to create a chronological (oldest-first) price series. """ swaps = graph_data.get("data", {}).get("swaps", []) prices = [] - # Reverse the swap list to have prices from oldest to newest. + # Reverse the list so that the earliest swap is first. + # print("swapsL",swaps) for swap in reversed(swaps): price = None - token_in = swap.get("tokenIn", {}) - token_out = swap.get("tokenOut", {}) - # Identify which token is WETH. - if token_in.get("symbol") == "WETH": - try: - price = float(token_in.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - elif token_out.get("symbol") == "WETH": - try: - price = float(token_out.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - # Only include valid, positive prices. + token_in = swap.get("tokenOut", {}) + # We assume WETH is the asset of interest. + # print(token_in) + try: + price = float(token_in.get("lastPriceUSD", "0")) + print(price) + except ValueError: + price = 0.0 if price and price > 0: prices.append(price) + # print(prices) return prices def compute_moving_average(prices, window): diff --git a/backend/Python./Python/Algorithms/MACD.py b/backend/Python./Python/Algorithms/MACD.py new file mode 100644 index 0000000..13ea18d --- /dev/null +++ b/backend/Python./Python/Algorithms/MACD.py @@ -0,0 +1,128 @@ +def extract_USDC_prices(graph_data): + """ + Extracts a chronological list of WETH prices in USD from the subgraph swap data. + Assumes that the JSON structure is: + { + "data": { + "swaps": [ + { + "pool": { ... }, + "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, + "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } + }, + ... + ] + } + } + + Since the query orders swaps by timestamp in descending order, this function reverses the list + to create a chronological (oldest-first) price series. + """ + swaps = graph_data.get("data", {}).get("swaps", []) + prices = [] + # Reverse the list so that the earliest swap is first. + # print("swapsL",swaps) + for swap in reversed(swaps): + price = None + token_in = swap.get("tokenIn", {}) + # We assume WETH is the asset of interest. + # print(token_in) + try: + price = float(token_in.get("lastPriceUSD", "0")) + print(price) + except ValueError: + price = 0.0 + if price and price > 0: + prices.append(price) + # print(prices) + return prices + +def compute_ema(prices, period): + """Robust EMA calculation with input validation""" + if not prices or len(prices) < period: + return [] + + ema_values = [] + smoothing = 2 / (period + 1) + + # Simple moving average as initial EMA + try: + current_ema = sum(prices[:period]) / period + except ZeroDivisionError: + return [] + + ema_values.append(current_ema) + + for price in prices[period:]: + current_ema = (price - current_ema) * smoothing + current_ema + ema_values.append(current_ema) + + # Pad with None for alignment + return [None]*(period-1) + ema_values + +def compute_macd(prices, short=12, long=26, signal=9): + """MACD calculation with alignment guarantees""" + if len(prices) < max(short, long): + return [], [] + + # Compute EMAs with proper alignment + short_ema = compute_ema(prices, short) + long_ema = compute_ema(prices, long) + + # Calculate MACD line (ensure equal length) + min_length = min(len(short_ema), len(long_ema)) + macd_line = [ + (s - l) if s is not None and l is not None else None + for s, l in zip(short_ema[:min_length], long_ema[:min_length]) + ] + + # Calculate signal line using valid MACD values + valid_macd = [m for m in macd_line if m is not None] + if len(valid_macd) >= signal: + signal_ema = compute_ema(valid_macd, signal) + signal_padding = len(macd_line) - len(signal_ema) + signal_line = [None]*signal_padding + signal_ema + else: + signal_line = [None]*len(macd_line) + + return macd_line, signal_line + +def macd_strategy_decision(graph_data): + """Final decision logic with safety checks""" + prices = extract_USDC_prices(graph_data) + + if not prices: + return {"decision": "NO_DATA", "reason": "Empty price series"} + + macd, signal = compute_macd(prices) + + # Ensure we have at least 2 valid points for crossover detection + valid_macd = [m for m in macd[-2:] if m is not None] + valid_signal = [s for s in signal[-2:] if s is not None] + + if len(valid_macd) < 2 or len(valid_signal) < 2: + return {"decision": "INSUFFICIENT_DATA", "reason": "Need 2+ MACD/Signal points"} + + latest_price = prices[-1] + current_macd = valid_macd[-1] + current_signal = valid_signal[-1] + + # Crossover detection + prev_macd = valid_macd[-2] + prev_signal = valid_signal[-2] + + decision = "HOLD" + if current_macd > current_signal and prev_macd <= prev_signal: + decision = "BUY" + elif current_macd < current_signal and prev_macd >= prev_signal: + decision = "SELL" + + return { + "decision": decision, + "macd": current_macd, + "signal": current_signal, + "latest_price": latest_price, + "price_series": prices, + "macd_line": macd, + "signal_line": signal + } diff --git a/backend/Python/Algorithms/RSI.py b/backend/Python./Python/Algorithms/RSI.py similarity index 100% rename from backend/Python/Algorithms/RSI.py rename to backend/Python./Python/Algorithms/RSI.py diff --git a/backend/Python./Python/Decisions/DCA_dis.py b/backend/Python./Python/Decisions/DCA_dis.py new file mode 100644 index 0000000..9a61d88 --- /dev/null +++ b/backend/Python./Python/Decisions/DCA_dis.py @@ -0,0 +1,132 @@ +import time +import json +from datetime import datetime +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc +from ..Algorithms.DCA import dca_investment, rebalance_portfolio, extract_latest_price, extract_prices +from dotenv import load_dotenv +import os +from groq import Groq + +load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client + +def get_llm_decision(portfolio_before, portfolio_after, dca_details, rebalance_details): + prompt = f""" + We executed a DCA investment and possibly rebalanced the portfolio. + + Before: + {portfolio_before} + + After: + {portfolio_after} + + DCA Details: + {dca_details} + + Rebalance Details: + {rebalance_details} + + Should we continue this approach or adjust our strategy? + Respond with a brief explanation or recommendation. + """ + + chat_completion = client.chat.completions.create( + messages=[{"role": "user", "content": prompt}], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=300 + ) + + return chat_completion.choices[0].message.content.strip() + +def fetch_graph_data(): + pools = { + "BTC": fetch_graph_data_wbtc_usdc, + "DAI": fetch_graph_data_dai_usdc, + "WETH": fetch_graph_data_weth_usdc + } + + data = {} + for asset, fetch_data in pools.items(): + print(f"Fetching data for {asset}...") + graph_data = fetch_data() + + if not graph_data: + data[asset] = None + else: + data[asset] = graph_data + return data + +def generate_decision_json(dca_details, portfolio): + """ + Generates a JSON response with decision data for each asset. + """ + decisions = {} + timestamp = int(time.time()) + + for asset in ["BTC", "DAI", "WETH"]: + if asset not in dca_details: + decisions[asset] = { + "action": "HOLD", + "position_size": portfolio.get(asset, 0), + "price": None, + "invested": 0 + } + continue + + asset_details = dca_details.get(asset, {}) + + decisions[asset] = { + "action": asset_details.get("action", "HOLD"), + "position_size": portfolio.get(asset, 0), + "price": asset_details.get("price"), + "invested": asset_details.get("invested", 0) + } + + return { + "decisions": decisions, + "timestamp": timestamp + } + +def dca_decision_loop(): + portfolio = {"USDC": 1000.0, "WETH": 1000.0, "BTC": 1000.0, "DAI": 1000.0} + target_allocation = {"WETH": 0.4, "BTC": 0.4, "DAI": 0.2, "USDC": 0.0} # Example allocation + invest_amount = 100.0 # invest 100 USDC each cycle + tolerance = 0.02 # 2% tolerance for rebalancing + + while True: + print("\n--- DCA Decision Loop Cycle ---") + portfolio_before = portfolio.copy() + + # Fetch latest data + graph_data = fetch_graph_data() + if not any(graph_data.values()): + print("No data fetched. Retrying next interval...") + continue + + # Perform DCA for each asset + dca_details = {} + for asset in ["WETH", "BTC", "DAI"]: + if asset in graph_data and graph_data[asset]: + asset_invest_amount = invest_amount * target_allocation.get(asset, 0) + if asset_invest_amount > 0: + portfolio, asset_details = dca_investment(graph_data, asset_invest_amount, portfolio, asset) + dca_details[asset] = asset_details + print(f"DCA executed for {asset}. Details: {asset_details}") + + # Rebalance portfolio + portfolio, rebalance_details = rebalance_portfolio( + portfolio, target_allocation, graph_data, tolerance + ) + print(f"Rebalance attempt. Details: {rebalance_details}") + + # Generate decision JSON + decision_json = generate_decision_json(dca_details, portfolio) + print("Decision JSON:") + print(json.dumps(decision_json, indent=4)) + return decision_json + + + diff --git a/backend/Python./Python/Decisions/MACD_dis.py b/backend/Python./Python/Decisions/MACD_dis.py new file mode 100644 index 0000000..fca5075 --- /dev/null +++ b/backend/Python./Python/Decisions/MACD_dis.py @@ -0,0 +1,89 @@ +import time +import json +from datetime import datetime +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc +from ..Algorithms.MACD import macd_strategy_decision +from dotenv import load_dotenv +import os +from groq import Groq + +load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client + +def get_llm_decision(algo_result): + prompt = f""" + The MACD-based strategy suggests: {algo_result['decision']}. + Latest MACD: {algo_result['macd']} + Latest Signal: {algo_result['signal']} + Latest Price: {algo_result['latest_price']} + + Do we BUY, SELL, or HOLD? + Respond with only one word: BUY, SELL, or HOLD. + """ + chat_completion = client.chat.completions.create( + messages=[{"role": "user", "content": prompt}], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=3 + ) + return chat_completion.choices[0].message.content.strip() + +def fetch_and_analyze(): + pools = { + "BTC": fetch_graph_data_wbtc_usdc, + "DAI": fetch_graph_data_dai_usdc, + "WETH": fetch_graph_data_weth_usdc + } + + decisions = {} + for asset, fetch_data in pools.items(): + print(f"Fetching data for {asset}...") + graph_data = fetch_data() + + if not graph_data: + decisions[asset] = { + "action": "HOLD", + "position_size": 0, + "reason": "No data available" + } + continue + + algo_result = macd_strategy_decision(graph_data) + print(f"MACD Algorithm Output for {asset}:", algo_result) + + if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): + decisions[asset] = { + "action": "HOLD", + "position_size": 0, + } + continue + + llm_decision = get_llm_decision(algo_result) + position_size = 100 if llm_decision == "BUY" else 0 # Example logic + + decisions[asset] = { + "action": llm_decision, + "position_size": position_size, + "macd": algo_result["macd"], + "signal": algo_result["signal"], + "price": algo_result["latest_price"] + } + + return { + "decisions": decisions, + "timestamp": int(time.time()) + } + +def macd_decision_loop(interval=600): + while True: + print("\n--- MACD Decision Loop Cycle ---") + decision_data = fetch_and_analyze() + print(json.dumps(decision_data, indent=2)) + + print(f"Waiting {interval} seconds before next cycle...\n") + time.sleep(interval) + +if __name__ == "__main__": + macd_decision_loop(interval=600) diff --git a/backend/Python./Python/Decisions/MA_dis.py b/backend/Python./Python/Decisions/MA_dis.py new file mode 100644 index 0000000..6db1d38 --- /dev/null +++ b/backend/Python./Python/Decisions/MA_dis.py @@ -0,0 +1,88 @@ +import time +import json +from datetime import datetime +from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc +from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc +from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc +from ..Algorithms.MA import moving_average_crossover_decision +from dotenv import load_dotenv +import os + +from groq import Groq +load_dotenv() +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client + + + +def get_llm_decision(algo_result): + prompt = f""" + The Moving Average Crossover algorithm suggests: {algo_result['decision']}. + Short-term MA: {algo_result['short_ma']} + Long-term MA: {algo_result['long_ma']} + Latest Price: {algo_result['latest_price']} + Relative Diff: {algo_result.get('relative_difference')} + + Please confirm the final decision: BUY, SELL, or HOLD. + Respond with only one word: BUY, SELL, or HOLD. + """ + chat_completion = client.chat.completions.create( + messages=[{"role": "user", "content": prompt}], + model="llama3-70b-8192", + temperature=0.3, + max_tokens=3 + ) + return chat_completion.choices[0].message.content.strip() + +def fetch_and_analyze(): + pools = { + "BTC": fetch_graph_data_wbtc_usdc, + "DAI": fetch_graph_data_dai_usdc, + "WETH": fetch_graph_data_weth_usdc + } + + decisions = {} + for asset, fetch_data in pools.items(): + print(f"Fetching data for {asset}...") + graph_data = fetch_data() + + if not graph_data: + decisions[asset] = { + "action": "HOLD", + "position_size": 0, + "reason": "No data available" + } + continue + + algo_result = moving_average_crossover_decision(graph_data, short_window=3, long_window=5, threshold=0.005) + print(f"MA Algorithm Output for {asset}:", algo_result) + + if algo_result.get("decision") == "NO_DATA": + decisions[asset] = { + "action": "HOLD", + "position_size": 0, + "reason": "Insufficient data" + } + continue + + llm_decision = get_llm_decision(algo_result) + position_size = 100 if llm_decision == "BUY" else 0 # Example logic + + decisions[asset] = { + "action": llm_decision, + "position_size": position_size, + "short_ma": algo_result["short_ma"], + "long_ma": algo_result["long_ma"], + "price": algo_result["latest_price"], + "relative_difference": algo_result.get("relative_difference") + } + + return { + "decisions": decisions, + "timestamp": int(time.time()) + } + +def ma_decision_loop(): + print("\n--- MA Decision Loop Cycle ---") + decision_data = fetch_and_analyze() + return decision_data # Ensure function returns JSON string + diff --git a/backend/Python/Decisions/RSI_server.py b/backend/Python./Python/Decisions/RSI_dis.py similarity index 73% rename from backend/Python/Decisions/RSI_server.py rename to backend/Python./Python/Decisions/RSI_dis.py index 1621222..a34ef88 100644 --- a/backend/Python/Decisions/RSI_server.py +++ b/backend/Python./Python/Decisions/RSI_dis.py @@ -1,20 +1,14 @@ import time -import json -import os -from flask import Flask, jsonify -from flask_cors import CORS -from groq import Groq # Replace OpenAI with Groq SDK -from dotenv import load_dotenv - -# Import your algorithm and data fetching functions from ..Algorithms.RSI import rsi_strategy_decision from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc - -# Load environment variables and initialize Groq client +import json +from dotenv import load_dotenv +import os +from groq import Groq load_dotenv() -client = Groq(api_key=os.getenv("GROQ_API_KEY")) +client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client SYSTEM_PROMPT = """You are an expert trading AI specializing in low-risk cryptocurrency strategies. Analyze the RSI data and provide only BUY/SELL/HOLD decisions considering: @@ -25,7 +19,7 @@ def get_llm_decision(algo_result): """ - Modified for Groq API with risk-averse strategy. + Modified for Groq API with risk-averse strategy """ user_prompt = f""" Trading Context: @@ -37,6 +31,7 @@ def get_llm_decision(algo_result): Required Action: For a LOW-RISK strategy, should we BUY, SELL, or HOLD? Respond with ONLY the action word in uppercase. """ + try: chat_completion = client.chat.completions.create( messages=[ @@ -45,21 +40,22 @@ def get_llm_decision(algo_result): ], model="llama3-70b-8192", temperature=0.3, - max_tokens=1 + max_tokens=3 # Allowing up to 3 tokens to avoid truncation ) return chat_completion.choices[0].message.content.strip() except Exception as e: print(f"Groq API Error: {str(e)}") return "HOLD" # Fail-safe default - -def make_decision_cycle(): + +def rsi_decision_loop(): """ - Process all trading pairs and return the decision JSON. + Executes once per API call and returns JSON-formatted decisions. """ + print("\n--- RSI Decision Execution ---") decisions = {} - # Process each trading pair with its corresponding fetch function. + # Process all trading pairs for pair, fetch_fn in [ ("BTC", fetch_graph_data_wbtc_usdc), ("DAI", fetch_graph_data_dai_usdc), @@ -84,8 +80,9 @@ def make_decision_cycle(): try: llm_decision = get_llm_decision(algo_result) - # Example fixed position size; you can adjust based on your strategy. - position_size = 69 + + # Dynamically calculate position size (example logic) + position_size = max(10, min(100, 100 - algo_result["rsi"])) decisions[pair] = { "action": llm_decision, @@ -93,24 +90,15 @@ def make_decision_cycle(): "rsi": algo_result['rsi'], "price": algo_result['latest_price'] } + except Exception as e: decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": str(e)} + # Create final JSON output output_json = { "timestamp": int(time.time()), "decisions": decisions } - return output_json - -# Initialize the Flask app and enable CORS. -app = Flask(__name__) -CORS(app) # This will enable CORS for all routes and origins. - -@app.route("/decisions", methods=["GET"]) -def decisions(): - output_json = make_decision_cycle() - return jsonify(output_json) -if __name__ == "__main__": - # Run the Flask server. - app.run(host="0.0.0.0", port=5050, debug=True) + print("Final Output:", json.dumps(output_json, indent=2)) + return output_json # Returning JSON instead of running indefinitely diff --git a/backend/Python./Python/Decisions/RSI_server.py b/backend/Python./Python/Decisions/RSI_server.py new file mode 100644 index 0000000..1e515c8 --- /dev/null +++ b/backend/Python./Python/Decisions/RSI_server.py @@ -0,0 +1,43 @@ +from flask import Flask, jsonify +from flask_cors import CORS +from .RSI_dis import rsi_decision_loop +from .MACD_dis import fetch_and_analyze +from .DCA_dis import dca_decision_loop +from .MA_dis import ma_decision_loop +app = Flask(__name__) +CORS(app) # Enable CORS for all origins + +@app.route("/decisions/high/short", methods=["GET"]) +def rsi_decision(): + """ + API endpoint to return RSI-based trading decisions. + """ + output_json = rsi_decision_loop() # Execute once and return response + return jsonify(output_json) + +@app.route("/decisions/high/long", methods=["GET"]) +def macd_decision(): + """ + API endpoint to return RSI-based trading decisions. + """ + output_json = fetch_and_analyze() # Execute once and return response + return jsonify(output_json) + +@app.route("/decisions/low/short", methods=["GET"]) +def ma_decision(): + """ + API endpoint to return RSI-based trading decisions. + """ + output_json = ma_decision_loop() # Execute once and return response + return output_json + +@app.route("/decisions/low/long", methods=["GET"]) +def dca_decision(): + """ + API endpoint to return RSI-based trading decisions. + """ + output_json = dca_decision_loop() # Execute once and return response + return output_json + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=5050, debug=True) diff --git a/backend/Python/SubGraph/dai_usdc.py b/backend/Python./Python/SubGraph/dai_usdc.py similarity index 100% rename from backend/Python/SubGraph/dai_usdc.py rename to backend/Python./Python/SubGraph/dai_usdc.py diff --git a/backend/Python/SubGraph/wbtc_usdc.py b/backend/Python./Python/SubGraph/wbtc_usdc.py similarity index 100% rename from backend/Python/SubGraph/wbtc_usdc.py rename to backend/Python./Python/SubGraph/wbtc_usdc.py diff --git a/backend/Python/SubGraph/weth_usdc.py b/backend/Python./Python/SubGraph/weth_usdc.py similarity index 100% rename from backend/Python/SubGraph/weth_usdc.py rename to backend/Python./Python/SubGraph/weth_usdc.py diff --git a/backend/Python/main.py b/backend/Python./Python/main.py similarity index 100% rename from backend/Python/main.py rename to backend/Python./Python/main.py diff --git a/backend/Python/Algorithms/DCA.py b/backend/Python/Algorithms/DCA.py deleted file mode 100644 index 025d198..0000000 --- a/backend/Python/Algorithms/DCA.py +++ /dev/null @@ -1,197 +0,0 @@ -############################# LONG TERM LOW RISK TRADING STRATEGY ############################# -############################# DOLLAR COST AVERAGING ############################# -def extract_weth_prices(graph_data): - """ - Extracts a chronological list of WETH prices in USD from the subgraph swap data. - Expected JSON structure: - { - "data": { - "swaps": [ - { - "pool": { ... }, - "tokenIn": { "lastPriceUSD": "xxx", "symbol": "..." }, - "tokenOut": { "lastPriceUSD": "xxx", "symbol": "..." } - }, - ... - ] - } - } - Since the query orders swaps in descending order by timestamp, - we reverse the list to produce a chronological (oldest-first) price series. - """ - swaps = graph_data.get("data", {}).get("swaps", []) - prices = [] - # Process swaps from oldest to newest. - for swap in reversed(swaps): - price = None - token_in = swap.get("tokenIn", {}) - token_out = swap.get("tokenOut", {}) - # Identify WETH by its symbol. - if token_in.get("symbol") == "WETH": - try: - price = float(token_in.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - elif token_out.get("symbol") == "WETH": - try: - price = float(token_out.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - if price and price > 0: - prices.append(price) - return prices - -def extract_latest_weth_price(graph_data): - """ - Extracts the most recent WETH price (in USDC) from the subgraph data. - """ - prices = extract_weth_prices(graph_data) - if not prices: - return None - return prices[-1] - -def compute_portfolio_value(portfolio, current_price): - """ - Computes the total portfolio value in USDC. - - WETH holdings are valued at the current price. - - USDC holdings remain as is. - Portfolio is a dictionary with keys: "WETH" and "USDC". - """ - weth_value = portfolio.get("WETH", 0) * current_price - usdc_value = portfolio.get("USDC", 0) - return weth_value + usdc_value - -def dca_investment(graph_data, invest_amount, portfolio): - """ - Executes a Dollar-Cost Averaging (DCA) investment. - - Parameters: - - invest_amount: The USDC amount allocated for this investment cycle. - - portfolio: A dictionary representing current holdings (e.g., {"WETH": 0.0, "USDC": 1000}). - - Process: - 1. Fetch the latest WETH price from the subgraph. - 2. Calculate how many WETH tokens can be purchased with 'invest_amount' (weth_bought = invest_amount / price). - 3. Update the portfolio by deducting the invested USDC and adding the acquired WETH. - - Returns: - The updated portfolio and details of the transaction. - """ - current_price = extract_latest_weth_price(graph_data) - if current_price is None: - return portfolio, "No price data available" - - # For DCA, assume that if the portfolio does not have sufficient USDC, - # additional funds are injected (or invest_amount is added externally). - if portfolio.get("USDC", 0) < invest_amount: - portfolio["USDC"] = portfolio.get("USDC", 0) + invest_amount - - weth_bought = invest_amount / current_price - portfolio["USDC"] -= invest_amount - portfolio["WETH"] = portfolio.get("WETH", 0) + weth_bought - - return portfolio, {"invested": invest_amount, "weth_bought": weth_bought, "price": current_price} - -def rebalance_portfolio(portfolio, target_allocation, graph_data, tolerance=0.02): - """ - Rebalances the portfolio to meet the target allocation using a buy-and-hold approach. - - Parameters: - - portfolio: Dictionary with keys "WETH" and "USDC". - - target_allocation: Dictionary indicating desired ratios, e.g., {"WETH": 0.6, "USDC": 0.4}. - The values should sum to 1. - - tolerance: The allowable deviation (e.g., 0.02 for 2%) before triggering a rebalance. - - graph_data: Latest subgraph data to determine current WETH price. - - Process: - 1. Compute the current total portfolio value (in USDC). - 2. Calculate the current allocation for WETH and USDC. - 3. If the deviation from the target allocation exceeds 'tolerance', determine how much to trade. - - If overallocated in WETH, sell a portion of WETH to increase USDC. - - If underallocated in WETH, use USDC to buy additional WETH. - - Returns: - The updated portfolio along with trade instructions. - """ - current_price = extract_latest_weth_price(graph_data) - if current_price is None: - return portfolio, "No price data available" - - total_value = compute_portfolio_value(portfolio, current_price) - current_weth_value = portfolio.get("WETH", 0) * current_price - current_usdc_value = portfolio.get("USDC", 0) - - current_alloc_weth = current_weth_value / total_value if total_value > 0 else 0 - current_alloc_usdc = current_usdc_value / total_value if total_value > 0 else 0 - - target_weth = target_allocation.get("WETH", 0) - target_usdc = target_allocation.get("USDC", 0) - - trade_instructions = {} - # Calculate deviation for WETH allocation. - deviation_weth = current_alloc_weth - target_weth - if abs(deviation_weth) < tolerance: - # Allocation is within tolerance; no rebalancing needed. - return portfolio, {"message": "Portfolio within tolerance. No rebalancing required."} - - if deviation_weth > 0: - # Overallocated in WETH: Sell some WETH to increase USDC holdings. - value_to_sell = (current_alloc_weth - target_weth) * total_value - weth_to_sell = value_to_sell / current_price - portfolio["WETH"] -= weth_to_sell - portfolio["USDC"] += value_to_sell - trade_instructions["action"] = "SELL_WETH" - trade_instructions["weth_to_sell"] = weth_to_sell - trade_instructions["usdc_received"] = value_to_sell - elif deviation_weth < 0: - # Underallocated in WETH: Buy WETH using available USDC. - value_to_buy = (target_weth - current_alloc_weth) * total_value - weth_to_buy = value_to_buy / current_price - # Ensure there is enough USDC available. - if portfolio.get("USDC", 0) < value_to_buy: - value_to_buy = portfolio.get("USDC", 0) - weth_to_buy = value_to_buy / current_price - portfolio["USDC"] -= value_to_buy - portfolio["WETH"] += weth_to_buy - trade_instructions["action"] = "BUY_WETH" - trade_instructions["weth_to_buy"] = weth_to_buy - trade_instructions["usdc_spent"] = value_to_buy - - return portfolio, trade_instructions - -# Example of using the above functions: -if __name__ == "__main__": - # Simulated subgraph JSON data (in practice, use the live JSON response from your Graph query) - sample_graph_data = { - "data": { - "swaps": [ - { - "pool": { - "activeLiquidity": "143806042277547279", - "inputTokenBalances": ["884103982508430051565", "443229485261"], - "inputTokenBalancesUSD": ["1731249.4302765468484810087103", "443229.485261"], - "totalLiquidity": "368810659123235493410897053" - }, - "tokenIn": {"_totalSupply": "2140436484428", "lastPriceUSD": "1", "symbol": "USDC"}, - "tokenOut": {"_totalSupply": "54616712146342958192185", "lastPriceUSD": "1958.50689", "symbol": "WETH"} - }, - # ... add more swap entries as needed for simulation - ] - } - } - - # Initial portfolio: starting with some USDC and no WETH. - portfolio = {"USDC": 1000, "WETH": 0.0} - - # Example 1: Execute a DCA investment of 200 USDC. - portfolio, dca_details = dca_investment(sample_graph_data, invest_amount=200, portfolio=portfolio) - print("After DCA Investment:") - print("Portfolio:", portfolio) - print("DCA Details:", dca_details) - - # Example 2: Rebalance portfolio to target allocation: 60% WETH and 40% USDC. - target_allocation = {"WETH": 0.6, "USDC": 0.4} - portfolio, rebalance_details = rebalance_portfolio(portfolio, target_allocation, sample_graph_data, tolerance=0.02) - print("\nAfter Rebalancing:") - print("Portfolio:", portfolio) - print("Rebalance Details:", rebalance_details) diff --git a/backend/Python/Algorithms/MACD.py b/backend/Python/Algorithms/MACD.py deleted file mode 100644 index 6c54d01..0000000 --- a/backend/Python/Algorithms/MACD.py +++ /dev/null @@ -1,183 +0,0 @@ -#############################LONG TERM HIGH RISK TRADING STRATEGY############################# -#############################MOVING AVERAGE CONVERGENCE DIVERGENCE############################# - - -def extract_weth_prices(graph_data): - """ - Extract a chronological list of WETH prices in USD from subgraph swap data. - Assumes the JSON structure: - { - "data": { - "swaps": [ - { - "pool": {...}, - "tokenIn": {"lastPriceUSD": "xxx", "symbol": "..."}, - "tokenOut": {"lastPriceUSD": "xxx", "symbol": "..."} - }, - ... - ] - } - } - Since the query returns swaps in descending order by timestamp, - this function reverses the list so that prices are in chronological order. - """ - swaps = graph_data.get("data", {}).get("swaps", []) - prices = [] - # Process swaps in reverse (oldest first) - for swap in reversed(swaps): - price = None - token_in = swap.get("tokenIn", {}) - token_out = swap.get("tokenOut", {}) - # Identify WETH by symbol. - if token_in.get("symbol") == "WETH": - try: - price = float(token_in.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - elif token_out.get("symbol") == "WETH": - try: - price = float(token_out.get("lastPriceUSD", "0")) - except ValueError: - price = 0.0 - if price and price > 0: - prices.append(price) - return prices - -def compute_ema(prices, period): - """ - Compute the Exponential Moving Average (EMA) for a given list of prices and period. - - Parameters: - prices - List of float prices (assumed in chronological order). - period - Number of periods for EMA calculation. - - Returns: - List of EMA values where the first EMA is the simple average of the first 'period' prices. - Subsequent values use the standard EMA formula. - """ - if len(prices) < period: - return [] - ema_values = [] - # Start with a simple average for the first EMA value. - initial_ema = sum(prices[:period]) / period - ema_values.append(initial_ema) - multiplier = 2 / (period + 1) - # Compute EMA for each subsequent price. - for price in prices[period:]: - prev_ema = ema_values[-1] - ema = (price - prev_ema) * multiplier + prev_ema - ema_values.append(ema) - # Prepend the initial period with None to align the indices if needed. - return [None]*(period-1) + ema_values - -def compute_macd(prices, short_period=12, long_period=26, signal_period=9): - """ - Compute the MACD line and Signal line from the price series. - - MACD is defined as the difference between the short-term EMA and the long-term EMA. - The Signal line is the EMA of the MACD line. - - Parameters: - prices - List of float prices in chronological order. - short_period - Period for the short-term EMA (default: 12). - long_period - Period for the long-term EMA (default: 26). - signal_period - Period for the Signal line EMA (default: 9). - - Returns: - A tuple (macd_line, signal_line), each being a list aligned with the price series. - Note: Leading None values may appear where data is insufficient. - """ - if len(prices) < long_period: - return [], [] # Insufficient data - - # Compute short-term and long-term EMAs. - short_ema = compute_ema(prices, short_period) - long_ema = compute_ema(prices, long_period) - - # MACD line: difference between short-term EMA and long-term EMA. - macd_line = [] - # We align the MACD line to the longer EMA since data before that is None. - for s, l in zip(short_ema, long_ema): - if s is None or l is None: - macd_line.append(None) - else: - macd_line.append(s - l) - - # Filter out None values for computing the Signal line. - valid_macd = [m for m in macd_line if m is not None] - if len(valid_macd) < signal_period: - # Not enough MACD values to compute the signal line. - signal_line = [None] * len(macd_line) - else: - # Compute EMA on the MACD line for the signal line. - signal_values = compute_ema(valid_macd, signal_period) - # Reconstruct the signal_line to align with the full macd_line. - signal_line = [None]*(len(macd_line) - len(signal_values)) + signal_values - return macd_line, signal_line - -def macd_strategy_decision(graph_data, short_period=12, long_period=26, signal_period=9): - """ - Implements a MACD-based trading strategy for a long-term, high-risk scenario. - - Process: - 1. Extract the WETH price series from the subgraph data. - 2. Compute the MACD line and its Signal line. - 3. Generate a trading signal: - - If the latest MACD value is above its Signal line (and a bullish crossover is detected), - signal BUY. - - If the latest MACD value is below its Signal line (and a bearish crossover is detected), - signal SELL. - - Otherwise, signal HOLD. - - Parameters: - graph_data - JSON response from the subgraph. - short_period - Short-term EMA period for MACD calculation. - long_period - Long-term EMA period for MACD calculation. - signal_period - EMA period for computing the Signal line. - - Returns: - A dictionary containing: - - 'decision': "BUY", "SELL", or "HOLD". - - 'macd': Latest MACD value. - - 'signal': Latest Signal line value. - - 'latest_price': Most recent WETH price. - - 'price_series': The extracted WETH price series. - - 'macd_line': The complete MACD line. - - 'signal_line': The complete Signal line. - """ - prices = extract_weth_prices(graph_data) - if not prices: - return {"decision": "NO_DATA", "reason": "No valid price data found."} - - macd_line, signal_line = compute_macd(prices, short_period, long_period, signal_period) - # Ensure we have computed valid MACD and Signal values. - if not macd_line or macd_line[-1] is None or signal_line[-1] is None: - return {"decision": "INSUFFICIENT_DATA", "reason": "Not enough data to compute MACD."} - - latest_macd = macd_line[-1] - latest_signal = signal_line[-1] - - # A simple decision rule based on the latest MACD crossover: - if latest_macd > latest_signal: - decision = "BUY" - elif latest_macd < latest_signal: - decision = "SELL" - else: - decision = "HOLD" - - return { - "decision": decision, - "macd": latest_macd, - "signal": latest_signal, - "latest_price": prices[-1], - "price_series": prices, - "macd_line": macd_line, - "signal_line": signal_line - } - -# Example usage: -# Suppose 'graph_json' is the JSON response directly obtained from the subgraph. -# The AI agent would call: -# -# result = macd_strategy_decision(graph_json, short_period=12, long_period=26, signal_period=9) -# print("MACD Strategy Decision:", result) diff --git a/backend/Python/Decisions/DCA_dis.py b/backend/Python/Decisions/DCA_dis.py deleted file mode 100644 index 2fa07d6..0000000 --- a/backend/Python/Decisions/DCA_dis.py +++ /dev/null @@ -1,82 +0,0 @@ -import time -import openai -from ..graph import fetch_graph_data -from ..Algorithms.DCA import dca_investment, rebalance_portfolio - -from dotenv import load_dotenv -import os -load_dotenv() - -openai.api_key = os.getenv('OPENAI_API_KEY') - -def get_llm_decision(portfolio_before, portfolio_after, rebalance_details): - """ - Example prompt that sends the before/after portfolio states - to the LLM, asking for a final confirmation or next steps. - """ - prompt = f""" - We executed a DCA investment and possibly rebalanced the portfolio. - - Before: - {portfolio_before} - - After: - {portfolio_after} - - Rebalance Details: - {rebalance_details} - - Should we continue this approach or adjust our strategy? - Respond with a brief explanation or recommendation. - """ - - # This example uses ChatCompletion; adapt as needed. - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[{"role": "user", "content": prompt}], - temperature=0.5 - ) - return response.choices[0].message.content.strip() - -def dca_decision_loop(interval=3600): - """ - Periodically executes DCA and optional rebalancing. - Default interval: 3600 seconds (1 hour). - """ - # Example portfolio with 1000 USDC, 0 WETH initially - portfolio = {"USDC": 1000.0, "WETH": 0.0} - target_allocation = {"WETH": 0.6, "USDC": 0.4} # 60% WETH, 40% USDC - invest_amount = 100.0 # invest 100 USDC each cycle - tolerance = 0.02 # 2% tolerance for rebalancing - - while True: - print("\n--- DCA Decision Loop Cycle ---") - portfolio_before = portfolio.copy() - - # 1. Fetch data from subgraph - graph_data = fetch_graph_data() - if not graph_data: - print("No data fetched. Retrying next interval...") - time.sleep(interval) - continue - - # 2. Execute DCA investment - portfolio, dca_details = dca_investment(graph_data, invest_amount, portfolio) - print(f"DCA executed. Details: {dca_details}") - - # 3. Rebalance portfolio if needed - portfolio, rebalance_details = rebalance_portfolio( - portfolio, target_allocation, graph_data, tolerance - ) - print(f"Rebalance attempt. Details: {rebalance_details}") - - # 4. (Optional) Confirm with LLM or get next step - llm_response = get_llm_decision(portfolio_before, portfolio, rebalance_details) - print("LLM says:", llm_response) - - # 5. Wait until the next cycle - print(f"Waiting {interval} seconds until next DCA cycle...\n") - time.sleep(interval) - -if __name__ == "__main__": - dca_decision_loop(interval=3600) # Run once per hour by default diff --git a/backend/Python/Decisions/MACD_dis.py b/backend/Python/Decisions/MACD_dis.py deleted file mode 100644 index 5a8b5d2..0000000 --- a/backend/Python/Decisions/MACD_dis.py +++ /dev/null @@ -1,81 +0,0 @@ -import time -import openai -from ..graph import fetch_graph_data -from ..Algorithms.MACD import macd_strategy_decision -from dotenv import load_dotenv -import os -load_dotenv() - -openai.api_key = os.getenv('OPENAI_API_KEY') - -def get_llm_decision(algo_result): - """ - The algo_result might look like: - { - "decision": "BUY" or "SELL" or "HOLD", - "macd": ..., - "signal": ..., - "latest_price": ..., - "macd_line": [...], - "signal_line": [...] - } - """ - prompt = f""" - The MACD-based strategy suggests: {algo_result['decision']}. - Latest MACD: {algo_result['macd']} - Latest Signal: {algo_result['signal']} - Latest Price: {algo_result['latest_price']} - - Do we BUY, SELL, or HOLD? - Respond with only one word: BUY, SELL, or HOLD. - """ - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[{"role": "user", "content": prompt}], - temperature=0.3 - ) - return response.choices[0].message.content.strip() - -def macd_decision_loop(interval=600): - """ - Periodically applies a MACD strategy for long-term, high-risk trades. - Default interval: 600 seconds (10 minutes). - """ - while True: - print("\n--- MACD Decision Loop Cycle ---") - graph_data = fetch_graph_data() - if not graph_data: - print("No data returned. Retrying...") - time.sleep(interval) - continue - - algo_result = macd_strategy_decision( - graph_data, - short_period=12, - long_period=26, - signal_period=9 - ) - print("MACD Algorithm Output:", algo_result) - - if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): - print("Insufficient data to compute MACD. Skipping...") - time.sleep(interval) - continue - - # Final decision from LLM - llm_decision = get_llm_decision(algo_result) - print("LLM Decision:", llm_decision) - - # Pseudo-code for trade: - if llm_decision == "BUY": - print(">>> Executing BUY trade <<<") - elif llm_decision == "SELL": - print(">>> Executing SELL trade <<<") - else: - print(">>> HOLD - No trade executed <<<") - - print(f"Waiting {interval} seconds before next cycle...\n") - time.sleep(interval) - -if __name__ == "__main__": - macd_decision_loop(interval=600) diff --git a/backend/Python/Decisions/MA_dis.py b/backend/Python/Decisions/MA_dis.py deleted file mode 100644 index 4937d47..0000000 --- a/backend/Python/Decisions/MA_dis.py +++ /dev/null @@ -1,82 +0,0 @@ -import time -import openai -from ..graph import fetch_graph_data -from ..Algorithms.MA import moving_average_crossover_decision -from dotenv import load_dotenv -import os -load_dotenv() - -openai.api_key = os.getenv('OPENAI_API_KEY') - -def get_llm_decision(algo_result): - """ - Ask the LLM to confirm or refine the final action. - The algo_result might look like: - { - "decision": "BUY" or "SELL" or "HOLD", - "short_ma": ..., - "long_ma": ..., - "latest_price": ..., - "relative_difference": ... - } - """ - prompt = f""" - The Moving Average Crossover algorithm suggests: {algo_result['decision']}. - Short-term MA: {algo_result['short_ma']} - Long-term MA: {algo_result['long_ma']} - Latest Price: {algo_result['latest_price']} - Relative Diff: {algo_result.get('relative_difference')} - - Please confirm the final decision: BUY, SELL, or HOLD. - Respond with only one word: BUY, SELL, or HOLD. - """ - response = openai.ChatCompletion.create( - model="gpt-3.5-turbo", - messages=[{"role": "user", "content": prompt}], - temperature=0.3 - ) - return response.choices[0].message.content.strip() - -def ma_decision_loop(interval=300): - """ - Periodically fetches market data and applies a short-term, low-risk - moving average crossover strategy. Default interval: 300 seconds (5 minutes). - """ - while True: - print("\n--- MA Decision Loop Cycle ---") - graph_data = fetch_graph_data() - if not graph_data: - print("No data available. Will retry...") - time.sleep(interval) - continue - - algo_result = moving_average_crossover_decision( - graph_data, - short_window=3, - long_window=5, - threshold=0.005 - ) - print("Algorithm Output:", algo_result) - - if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): - print("Insufficient data to make a decision. Skipping...") - time.sleep(interval) - continue - - # LLM final confirmation - llm_decision = get_llm_decision(algo_result) - print("LLM Decision:", llm_decision) - - # Pseudo-code for trade execution: - if llm_decision == "BUY": - print(">>> Executing BUY on-chain <<<") - elif llm_decision == "SELL": - print(">>> Executing SELL on-chain <<<") - else: - print(">>> HOLD - No trade executed <<<") - - print(f"Waiting {interval} seconds until next cycle...\n") - time.sleep(interval) - -if __name__ == "__main__": - ma_decision_loop(interval=300) diff --git a/backend/Python/Decisions/RSI_dis.py b/backend/Python/Decisions/RSI_dis.py deleted file mode 100644 index e62fada..0000000 --- a/backend/Python/Decisions/RSI_dis.py +++ /dev/null @@ -1,109 +0,0 @@ -import time -from groq import Groq # Replace OpenAI with Groq SDK -from ..Algorithms.RSI import rsi_strategy_decision -from ..SubGraph.weth_usdc import fetch_graph_data_weth_usdc -from ..SubGraph.wbtc_usdc import fetch_graph_data_wbtc_usdc -from ..SubGraph.dai_usdc import fetch_graph_data_dai_usdc -import json -from dotenv import load_dotenv -import os - -load_dotenv() -client = Groq(api_key=os.getenv("GROQ_API_KEY")) # New Groq client - -SYSTEM_PROMPT = """You are an expert trading AI specializing in low-risk cryptocurrency -strategies. Analyze the RSI data and provide only BUY/SELL/HOLD decisions considering: -- Current market conditions -- Low risk tolerance -- Historical price patterns -- Volatility indicators""" - -def get_llm_decision(algo_result): - """ - Modified for Groq API with risk-averse strategy - """ - user_prompt = f""" - Trading Context: - - RSI Strategy Suggestion: {algo_result['decision']} - - Current RSI: {algo_result['rsi']} - - Latest Price: {algo_result['latest_price']} - - Recent Prices: {algo_result['price_series'][-5:]} - - Required Action: For a LOW-RISK strategy, should we BUY, SELL, or HOLD? - Respond with ONLY the action word in uppercase. - """ - - try: - chat_completion = client.chat.completions.create( - messages=[ - {"role": "system", "content": SYSTEM_PROMPT}, - {"role": "user", "content": user_prompt} - ], - model="llama3-70b-8192", - temperature=0.3, - max_tokens=1 - ) - return chat_completion.choices[0].message.content.strip() - - except Exception as e: - print(f"Groq API Error: {str(e)}") - return "HOLD" # Fail-safe default - -def rsi_decision_loop(interval=300): - """ - Modified version returning JSON formatted decisions - """ - while True: - print("\n--- RSI Decision Loop Cycle ---") - decisions = {} - - # Process all trading pairs - for pair, fetch_fn in [ - ("BTC", fetch_graph_data_wbtc_usdc), - ("DAI", fetch_graph_data_dai_usdc), - ("WETH", fetch_graph_data_weth_usdc) - ]: - graph_data = fetch_fn() - if not graph_data: - decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "No data"} - continue - - algo_result = rsi_strategy_decision( - graph_data, - rsi_period=5, - overbought_threshold=70, - oversold_threshold=30 - ) - print(algo_result) - if algo_result.get("decision") in ("NO_DATA", "INSUFFICIENT_DATA"): - print(algo_result.get("decision")) - decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": "Insufficient data"} - continue - - try: - llm_decision = get_llm_decision(algo_result) - - # Calculate position size based on RSI - position_size = 69 - - decisions[pair] = { - "action": llm_decision, - "position_size": position_size, - "rsi": algo_result['rsi'], - "price": algo_result['latest_price'] - } - - except Exception as e: - decisions[pair] = {"action": "HOLD", "position_size": 0, "reason": str(e)} - - # Create final JSON output - output_json = { - "timestamp": int(time.time()), - "decisions": decisions - } - - print("Final Output:", json.dumps(output_json, indent=2)) - time.sleep(interval) - -if __name__ == "__main__": - rsi_decision_loop(interval=300) \ No newline at end of file diff --git a/testingapis.js b/testingapis.js new file mode 100644 index 0000000..de44347 --- /dev/null +++ b/testingapis.js @@ -0,0 +1,6 @@ +fetch("http://127.0.0.1:5050/decisions/high/long") + .then(async response => { + const data = await response.json(); + console.log(data); + }) + .catch(error => console.error('Error:', error)); From 11fc3cecd10dba6df5ab877e0129129c43d1bc31 Mon Sep 17 00:00:00 2001 From: singhyash05 Date: Sat, 5 Apr 2025 19:02:05 +0530 Subject: [PATCH 31/71] intent engine working yash contract before shorya core.sol --- .../{Python. => }/Python/Algorithms/DCA.py | 0 backend/{Python. => }/Python/Algorithms/MA.py | 0 .../{Python. => }/Python/Algorithms/MACD.py | 0 .../{Python. => }/Python/Algorithms/RSI.py | 0 .../{Python. => }/Python/Decisions/DCA_dis.py | 0 .../Python/Decisions/MACD_dis.py | 0 .../{Python. => }/Python/Decisions/MA_dis.py | 0 .../{Python. => }/Python/Decisions/RSI_dis.py | 0 .../Python/Decisions/RSI_server.py | 0 .../{Python. => }/Python/SubGraph/dai_usdc.py | 0 .../Python/SubGraph/wbtc_usdc.py | 0 .../Python/SubGraph/weth_usdc.py | 0 backend/{Python. => }/Python/main.py | 0 cache/solidity-files-cache.json | 2 +- frontend/package-lock.json | 26 +- frontend/src/App.jsx | 8 +- frontend/src/components/GeneralChat.jsx | 4 +- .../src/components/TradingChatRSIAlgos.jsx | 11 +- out/AAVEIntents.sol/IAaveETHManager.json | 2 +- out/AAVEIntents.sol/aaveIntents.json | 2 +- out/Base.sol/CommonBase.json | 1 - out/Base.sol/ScriptBase.json | 1 - out/Base.sol/TestBase.json | 1 - .../CompoundETHManager.json | 2 +- out/CompoundETHManager2.sol/ICEth.json | 2 +- out/CompoundIntents.sol/CompoundIntents.json | 2 +- .../DeployTradeIntent.json | 1 - out/IAEth.sol/IAEth.json | 2 +- out/IAEth.sol/IENSHelper.json | 2 +- out/IAEth.sol/IETH.json | 2 +- out/IAEth.sol/IEscrows.json | 2 +- out/IAEth.sol/IExecutor.json | 2 +- out/IAEth.sol/ISwapRouter.json | 2 +- out/IAEth.sol/IToken.json | 2 +- out/IERC165.sol/IERC165.json | 1 - out/IERC20.sol/IERC20.json | 2 +- out/IERC721.sol/IERC721.json | 1 - out/IERC721.sol/IERC721Enumerable.json | 1 - out/IERC721.sol/IERC721Metadata.json | 1 - out/IERC721.sol/IERC721TokenReceiver.json | 1 - out/IEth.sol/IENSHelper.json | 2 +- out/IEth.sol/IETH.json | 2 +- out/IEth.sol/IEscrows.json | 2 +- out/IEth.sol/IExecutor.json | 2 +- out/IEth.sol/ISwapRouter.json | 2 +- out/IEth.sol/IToken.json | 2 +- out/IMulticall3.sol/IMulticall3.json | 1 - out/IUniswap.sol/IUniswap.json | 2 +- out/IntentEngineTrade.sol/IntentEngine.json | 2 +- .../MetadataReaderLib.json | 2 +- out/MockERC20.sol/MockERC20.json | 1 - out/MockERC721.sol/MockERC721.json | 1 - out/SafeTransferLib.sol/SafeTransferLib.json | 2 +- out/Script.sol/Script.json | 1 - out/StdChains.sol/StdChains.json | 1 - out/StdCheats.sol/StdCheats.json | 1 - out/StdCheats.sol/StdCheatsSafe.json | 1 - out/StdJson.sol/stdJson.json | 1 - out/StdMath.sol/stdMath.json | 1 - out/StdStorage.sol/stdStorage.json | 1 - out/StdStorage.sol/stdStorageSafe.json | 1 - out/StdStyle.sol/StdStyle.json | 1 - out/StdUtils.sol/StdUtils.json | 1 - out/UniswapRegistry.sol/UniswapRegistry.json | 2 +- out/Vm.sol/Vm.json | 1 - out/Vm.sol/VmSafe.json | 1 - out/console.sol/console.json | 1 - out/interfaces/IERC20.sol/IERC20.json | 1 - out/safeconsole.sol/safeconsole.json | 1 - script/DeployTradeIntent.sol | 26 +- src/AAVEETHManager.sol | 82 +++++++ src/CompoundETHManager2.sol | 9 +- src/IntentEngineCore.sol | 152 +++++++++++- src/Intents.sol | 227 ++++++++++++++++++ test/test2.t.sol | 88 +++---- test/testIntents.t.sol | 170 ++++++------- test/tradeTest.sol | 220 ++++++++--------- 77 files changed, 773 insertions(+), 327 deletions(-) rename backend/{Python. => }/Python/Algorithms/DCA.py (100%) rename backend/{Python. => }/Python/Algorithms/MA.py (100%) rename backend/{Python. => }/Python/Algorithms/MACD.py (100%) rename backend/{Python. => }/Python/Algorithms/RSI.py (100%) rename backend/{Python. => }/Python/Decisions/DCA_dis.py (100%) rename backend/{Python. => }/Python/Decisions/MACD_dis.py (100%) rename backend/{Python. => }/Python/Decisions/MA_dis.py (100%) rename backend/{Python. => }/Python/Decisions/RSI_dis.py (100%) rename backend/{Python. => }/Python/Decisions/RSI_server.py (100%) rename backend/{Python. => }/Python/SubGraph/dai_usdc.py (100%) rename backend/{Python. => }/Python/SubGraph/wbtc_usdc.py (100%) rename backend/{Python. => }/Python/SubGraph/weth_usdc.py (100%) rename backend/{Python. => }/Python/main.py (100%) delete mode 100644 out/Base.sol/CommonBase.json delete mode 100644 out/Base.sol/ScriptBase.json delete mode 100644 out/Base.sol/TestBase.json delete mode 100644 out/DeployTradeIntent.sol/DeployTradeIntent.json delete mode 100644 out/IERC165.sol/IERC165.json delete mode 100644 out/IERC721.sol/IERC721.json delete mode 100644 out/IERC721.sol/IERC721Enumerable.json delete mode 100644 out/IERC721.sol/IERC721Metadata.json delete mode 100644 out/IERC721.sol/IERC721TokenReceiver.json delete mode 100644 out/IMulticall3.sol/IMulticall3.json delete mode 100644 out/MockERC20.sol/MockERC20.json delete mode 100644 out/MockERC721.sol/MockERC721.json delete mode 100644 out/Script.sol/Script.json delete mode 100644 out/StdChains.sol/StdChains.json delete mode 100644 out/StdCheats.sol/StdCheats.json delete mode 100644 out/StdCheats.sol/StdCheatsSafe.json delete mode 100644 out/StdJson.sol/stdJson.json delete mode 100644 out/StdMath.sol/stdMath.json delete mode 100644 out/StdStorage.sol/stdStorage.json delete mode 100644 out/StdStorage.sol/stdStorageSafe.json delete mode 100644 out/StdStyle.sol/StdStyle.json delete mode 100644 out/StdUtils.sol/StdUtils.json delete mode 100644 out/Vm.sol/Vm.json delete mode 100644 out/Vm.sol/VmSafe.json delete mode 100644 out/console.sol/console.json delete mode 100644 out/interfaces/IERC20.sol/IERC20.json delete mode 100644 out/safeconsole.sol/safeconsole.json create mode 100644 src/AAVEETHManager.sol create mode 100644 src/Intents.sol diff --git a/backend/Python./Python/Algorithms/DCA.py b/backend/Python/Algorithms/DCA.py similarity index 100% rename from backend/Python./Python/Algorithms/DCA.py rename to backend/Python/Algorithms/DCA.py diff --git a/backend/Python./Python/Algorithms/MA.py b/backend/Python/Algorithms/MA.py similarity index 100% rename from backend/Python./Python/Algorithms/MA.py rename to backend/Python/Algorithms/MA.py diff --git a/backend/Python./Python/Algorithms/MACD.py b/backend/Python/Algorithms/MACD.py similarity index 100% rename from backend/Python./Python/Algorithms/MACD.py rename to backend/Python/Algorithms/MACD.py diff --git a/backend/Python./Python/Algorithms/RSI.py b/backend/Python/Algorithms/RSI.py similarity index 100% rename from backend/Python./Python/Algorithms/RSI.py rename to backend/Python/Algorithms/RSI.py diff --git a/backend/Python./Python/Decisions/DCA_dis.py b/backend/Python/Decisions/DCA_dis.py similarity index 100% rename from backend/Python./Python/Decisions/DCA_dis.py rename to backend/Python/Decisions/DCA_dis.py diff --git a/backend/Python./Python/Decisions/MACD_dis.py b/backend/Python/Decisions/MACD_dis.py similarity index 100% rename from backend/Python./Python/Decisions/MACD_dis.py rename to backend/Python/Decisions/MACD_dis.py diff --git a/backend/Python./Python/Decisions/MA_dis.py b/backend/Python/Decisions/MA_dis.py similarity index 100% rename from backend/Python./Python/Decisions/MA_dis.py rename to backend/Python/Decisions/MA_dis.py diff --git a/backend/Python./Python/Decisions/RSI_dis.py b/backend/Python/Decisions/RSI_dis.py similarity index 100% rename from backend/Python./Python/Decisions/RSI_dis.py rename to backend/Python/Decisions/RSI_dis.py diff --git a/backend/Python./Python/Decisions/RSI_server.py b/backend/Python/Decisions/RSI_server.py similarity index 100% rename from backend/Python./Python/Decisions/RSI_server.py rename to backend/Python/Decisions/RSI_server.py diff --git a/backend/Python./Python/SubGraph/dai_usdc.py b/backend/Python/SubGraph/dai_usdc.py similarity index 100% rename from backend/Python./Python/SubGraph/dai_usdc.py rename to backend/Python/SubGraph/dai_usdc.py diff --git a/backend/Python./Python/SubGraph/wbtc_usdc.py b/backend/Python/SubGraph/wbtc_usdc.py similarity index 100% rename from backend/Python./Python/SubGraph/wbtc_usdc.py rename to backend/Python/SubGraph/wbtc_usdc.py diff --git a/backend/Python./Python/SubGraph/weth_usdc.py b/backend/Python/SubGraph/weth_usdc.py similarity index 100% rename from backend/Python./Python/SubGraph/weth_usdc.py rename to backend/Python/SubGraph/weth_usdc.py diff --git a/backend/Python./Python/main.py b/backend/Python/main.py similarity index 100% rename from backend/Python./Python/main.py rename to backend/Python/main.py diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json index 83ca3a6..4c31ba8 100644 --- a/cache/solidity-files-cache.json +++ b/cache/solidity-files-cache.json @@ -1 +1 @@ -{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/forge-std/src/Base.sol":{"lastModificationDate":1743236377442,"contentHash":"ee13c050b1914464f1d3f90cde90204b","sourceName":"lib/forge-std/src/Base.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"CommonBase":{"0.8.28":{"default":{"path":"Base.sol/CommonBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ScriptBase":{"0.8.28":{"default":{"path":"Base.sol/ScriptBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"TestBase":{"0.8.28":{"default":{"path":"Base.sol/TestBase.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/Script.sol":{"lastModificationDate":1743236377442,"contentHash":"ba325c778a7da8a21c2136aa32763c14","sourceName":"lib/forge-std/src/Script.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Script":{"0.8.28":{"default":{"path":"Script.sol/Script.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdChains.sol":{"lastModificationDate":1743236377442,"contentHash":"b039727c96bb3d5b9a59448fd16b1e0f","sourceName":"lib/forge-std/src/StdChains.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdChains":{"0.8.28":{"default":{"path":"StdChains.sol/StdChains.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdCheats.sol":{"lastModificationDate":1743236377442,"contentHash":"96c712134b63f85d00461749d0c1611c","sourceName":"lib/forge-std/src/StdCheats.sol","imports":["lib/forge-std/src/StdStorage.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdCheats":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheats.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"StdCheatsSafe":{"0.8.28":{"default":{"path":"StdCheats.sol/StdCheatsSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdJson.sol":{"lastModificationDate":1743236377442,"contentHash":"02209da5708eaee03e24a9c24a687370","sourceName":"lib/forge-std/src/StdJson.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.0, <0.9.0","artifacts":{"stdJson":{"0.8.28":{"default":{"path":"StdJson.sol/stdJson.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdMath.sol":{"lastModificationDate":1743236377442,"contentHash":"9da8f453eba6bb98f3d75bc6822bfb29","sourceName":"lib/forge-std/src/StdMath.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdMath":{"0.8.28":{"default":{"path":"StdMath.sol/stdMath.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStorage.sol":{"lastModificationDate":1743236377442,"contentHash":"ce68f6e336944f16d31351a47d0b19b8","sourceName":"lib/forge-std/src/StdStorage.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"stdStorage":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorage.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"stdStorageSafe":{"0.8.28":{"default":{"path":"StdStorage.sol/stdStorageSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdStyle.sol":{"lastModificationDate":1743236377442,"contentHash":"6281165a12aa639705c691fccefd855e","sourceName":"lib/forge-std/src/StdStyle.sol","imports":["lib/forge-std/src/Vm.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"StdStyle":{"0.8.28":{"default":{"path":"StdStyle.sol/StdStyle.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/StdUtils.sol":{"lastModificationDate":1743236377442,"contentHash":"b50717f17f251a2a96a5884c90add7bf","sourceName":"lib/forge-std/src/StdUtils.sol","imports":["lib/forge-std/src/Vm.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"StdUtils":{"0.8.28":{"default":{"path":"StdUtils.sol/StdUtils.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/Vm.sol":{"lastModificationDate":1743236377443,"contentHash":"707e31ca7be04756b2a1b853d9c110ac","sourceName":"lib/forge-std/src/Vm.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"Vm":{"0.8.28":{"default":{"path":"Vm.sol/Vm.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"VmSafe":{"0.8.28":{"default":{"path":"Vm.sol/VmSafe.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/console.sol":{"lastModificationDate":1743236377443,"contentHash":"ce19a9e49945b42118379ff99d853c05","sourceName":"lib/forge-std/src/console.sol","imports":[],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{"console":{"0.8.28":{"default":{"path":"console.sol/console.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/console2.sol":{"lastModificationDate":1743236377443,"contentHash":"f65ad21034b111e70fb5342d5771efcd","sourceName":"lib/forge-std/src/console2.sol","imports":["lib/forge-std/src/console.sol"],"versionRequirement":">=0.4.22, <0.9.0","artifacts":{},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC165.sol":{"lastModificationDate":1743236377444,"contentHash":"90fe5e2e3ed432d6f3b408e7c9e8a739","sourceName":"lib/forge-std/src/interfaces/IERC165.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC165":{"0.8.28":{"default":{"path":"IERC165.sol/IERC165.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC20.sol":{"lastModificationDate":1743236377444,"contentHash":"8099161d518e5862a76750349d58e801","sourceName":"lib/forge-std/src/interfaces/IERC20.sol","imports":[],"versionRequirement":">=0.6.2","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"interfaces/IERC20.sol/IERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IERC721.sol":{"lastModificationDate":1743236377444,"contentHash":"efc26e7f9a2f76b68088c8760ceae2dc","sourceName":"lib/forge-std/src/interfaces/IERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol"],"versionRequirement":">=0.6.2","artifacts":{"IERC721":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721Enumerable":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Enumerable.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721Metadata":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721Metadata.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IERC721TokenReceiver":{"0.8.28":{"default":{"path":"IERC721.sol/IERC721TokenReceiver.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/interfaces/IMulticall3.sol":{"lastModificationDate":1743236377444,"contentHash":"7b131ca1ca32ef6378b7b9ad5488b901","sourceName":"lib/forge-std/src/interfaces/IMulticall3.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"IMulticall3":{"0.8.28":{"default":{"path":"IMulticall3.sol/IMulticall3.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC20.sol":{"lastModificationDate":1743236377444,"contentHash":"8e14d63e81e1d54dbc2d44df38ae9dec","sourceName":"lib/forge-std/src/mocks/MockERC20.sol","imports":["lib/forge-std/src/interfaces/IERC20.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC20":{"0.8.28":{"default":{"path":"MockERC20.sol/MockERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/mocks/MockERC721.sol":{"lastModificationDate":1743236377444,"contentHash":"e91cd9dba7f88f03710c56a347d89d1e","sourceName":"lib/forge-std/src/mocks/MockERC721.sol","imports":["lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC721.sol"],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"MockERC721":{"0.8.28":{"default":{"path":"MockERC721.sol/MockERC721.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/forge-std/src/safeconsole.sol":{"lastModificationDate":1743236377444,"contentHash":"1445aa2f47000e212173e0cefd6c7a77","sourceName":"lib/forge-std/src/safeconsole.sol","imports":[],"versionRequirement":">=0.6.2, <0.9.0","artifacts":{"safeconsole":{"0.8.28":{"default":{"path":"safeconsole.sol/safeconsole.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1743236377459,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1743236377459,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1743342437325,"contentHash":"4d18a288c55c12826698698952c935aa","sourceName":"script/DeployTradeIntent.sol","imports":["lib/forge-std/src/Base.sol","lib/forge-std/src/Script.sol","lib/forge-std/src/StdChains.sol","lib/forge-std/src/StdCheats.sol","lib/forge-std/src/StdJson.sol","lib/forge-std/src/StdMath.sol","lib/forge-std/src/StdStorage.sol","lib/forge-std/src/StdStyle.sol","lib/forge-std/src/StdUtils.sol","lib/forge-std/src/Vm.sol","lib/forge-std/src/console.sol","lib/forge-std/src/console2.sol","lib/forge-std/src/interfaces/IERC165.sol","lib/forge-std/src/interfaces/IERC20.sol","lib/forge-std/src/interfaces/IERC721.sol","lib/forge-std/src/interfaces/IMulticall3.sol","lib/forge-std/src/mocks/MockERC20.sol","lib/forge-std/src/mocks/MockERC721.sol","lib/forge-std/src/safeconsole.sol","src/IERC20.sol","src/IUniswap.sol","src/IntentEngineCore.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"DeployTradeIntent":{"0.8.28":{"default":{"path":"DeployTradeIntent.sol/DeployTradeIntent.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1743236377470,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1743236377470,"contentHash":"6c2dd55e16e2c5f9bef9c6ae261b2bc0","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1743236377470,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1743236377470,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1743236377471,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1743236377471,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1743236377471,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IntentEngineCore.sol":{"lastModificationDate":1743342267474,"contentHash":"9c99b4dc23932fa8e8ac9fcccc7528b0","sourceName":"src/IntentEngineCore.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IntentEngine.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1743238781850,"contentHash":"bdc93fadebb5267a85fc5ee67e953066","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1743342325656,"contentHash":"d6d255e4cc90ea588d419cb81003dfb5","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"68d14368b5a75ea21786b8169492bda2"}}}},"seenByCompiler":true}},"builds":["68d14368b5a75ea21786b8169492bda2"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file +{"_format":"","paths":{"artifacts":"out","build_infos":"out/build-info","sources":"src","tests":"test","scripts":"script","libraries":["lib"]},"files":{"lib/solady/src/utils/MetadataReaderLib.sol":{"lastModificationDate":1743377637237,"contentHash":"05b805166ce5f4cdf2f552e5a87d7243","sourceName":"lib/solady/src/utils/MetadataReaderLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"MetadataReaderLib":{"0.8.28":{"default":{"path":"MetadataReaderLib.sol/MetadataReaderLib.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"lib/solady/src/utils/SafeTransferLib.sol":{"lastModificationDate":1743377637237,"contentHash":"3c77f8875c8385333ee7702c6c829954","sourceName":"lib/solady/src/utils/SafeTransferLib.sol","imports":[],"versionRequirement":"^0.8.4","artifacts":{"SafeTransferLib":{"0.8.28":{"default":{"path":"SafeTransferLib.sol/SafeTransferLib.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"script/DeployTradeIntent.sol":{"lastModificationDate":1743859765654,"contentHash":"7e4b943e9900b972472a105ad5542cdc","sourceName":"script/DeployTradeIntent.sol","imports":[],"versionRequirement":null,"artifacts":{},"seenByCompiler":true},"src/AAVEETHManager.sol":{"lastModificationDate":1743852156444,"contentHash":"320cee64c8d9547960ff93c34a01fd91","sourceName":"src/AAVEETHManager.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"AaveETHManager":{"0.8.28":{"default":{"path":"AAVEETHManager.sol/AaveETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IERC20":{"0.8.28":{"default":{"path":"AAVEETHManager.sol/IERC20.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IPoolAaveV3":{"0.8.28":{"default":{"path":"AAVEETHManager.sol/IPoolAaveV3.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IWETH":{"0.8.28":{"default":{"path":"AAVEETHManager.sol/IWETH.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/AAVEIntents.sol":{"lastModificationDate":1743377637256,"contentHash":"0ec5ec393ec7007e481d526b5ef1671d","sourceName":"src/AAVEIntents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"AAVEIntents.sol/IAaveETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"aaveIntents":{"0.8.28":{"default":{"path":"AAVEIntents.sol/aaveIntents.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/CompoundETHManager2.sol":{"lastModificationDate":1743850920632,"contentHash":"f5f892284006300c075f7e58edbf4ed2","sourceName":"src/CompoundETHManager2.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"CompoundETHManager":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/CompoundETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ICEth":{"0.8.28":{"default":{"path":"CompoundETHManager2.sol/ICEth.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/CompoundIntents.sol":{"lastModificationDate":1743377637256,"contentHash":"5ff78ec07714f3ebd8ac895a0e2c379d","sourceName":"src/CompoundIntents.sol","imports":["src/CompoundETHManager2.sol"],"versionRequirement":"^0.8.17","artifacts":{"CompoundIntents":{"0.8.28":{"default":{"path":"CompoundIntents.sol/CompoundIntents.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IAEth.sol":{"lastModificationDate":1743377637256,"contentHash":"69faac8ffa5c89b9386c04aceeca00bb","sourceName":"src/IAEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IAEth":{"0.8.28":{"default":{"path":"IAEth.sol/IAEth.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IENSHelper":{"0.8.28":{"default":{"path":"IAEth.sol/IENSHelper.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IETH":{"0.8.28":{"default":{"path":"IAEth.sol/IETH.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IEscrows":{"0.8.28":{"default":{"path":"IAEth.sol/IEscrows.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IExecutor":{"0.8.28":{"default":{"path":"IAEth.sol/IExecutor.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IAEth.sol/ISwapRouter.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IToken":{"0.8.28":{"default":{"path":"IAEth.sol/IToken.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IERC20.sol":{"lastModificationDate":1743377637256,"contentHash":"e8ec63056d9480976ec97e08842b4384","sourceName":"src/IERC20.sol","imports":[],"versionRequirement":"^0.8.20","artifacts":{"IERC20":{"0.8.28":{"default":{"path":"IERC20.sol/IERC20.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IEth.sol":{"lastModificationDate":1743377637256,"contentHash":"879e5103d1b8edcd4df45a063cfd70a5","sourceName":"src/IEth.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol"],"versionRequirement":"^0.8.19","artifacts":{"IENSHelper":{"0.8.28":{"default":{"path":"IEth.sol/IENSHelper.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IETH":{"0.8.28":{"default":{"path":"IEth.sol/IETH.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IEscrows":{"0.8.28":{"default":{"path":"IEth.sol/IEscrows.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IExecutor":{"0.8.28":{"default":{"path":"IEth.sol/IExecutor.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ISwapRouter":{"0.8.28":{"default":{"path":"IEth.sol/ISwapRouter.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IToken":{"0.8.28":{"default":{"path":"IEth.sol/IToken.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IUniswap.sol":{"lastModificationDate":1743377637256,"contentHash":"11a653812b0fdb68843887945fcc6db5","sourceName":"src/IUniswap.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"IUniswap":{"0.8.28":{"default":{"path":"IUniswap.sol/IUniswap.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IntentEngineCore.sol":{"lastModificationDate":1743859595864,"contentHash":"5782810e5dac63c1c8f25783e7f9c7e9","sourceName":"src/IntentEngineCore.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol","src/IERC20.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IAaveETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ICEth":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/ICEth.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ICompoundETHManager":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/ICompoundETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IUniswap":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IUniswap.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineCore.sol/IntentEngine.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/IntentEngineTrade.sol":{"lastModificationDate":1743377637257,"contentHash":"bdc93fadebb5267a85fc5ee67e953066","sourceName":"src/IntentEngineTrade.sol","imports":["src/IERC20.sol","src/IUniswap.sol","src/UniswapRegistry.sol"],"versionRequirement":"^0.8.17","artifacts":{"IntentEngine":{"0.8.28":{"default":{"path":"IntentEngineTrade.sol/IntentEngine.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/Intents.sol":{"lastModificationDate":1743852361295,"contentHash":"1e9b2cf4c6b4b41cf3b52a6d3ca25940","sourceName":"src/Intents.sol","imports":["lib/solady/src/utils/MetadataReaderLib.sol","lib/solady/src/utils/SafeTransferLib.sol","src/IAEth.sol"],"versionRequirement":"^0.8.17","artifacts":{"IAaveETHManager":{"0.8.28":{"default":{"path":"Intents.sol/IAaveETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ICEth":{"0.8.28":{"default":{"path":"Intents.sol/ICEth.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"ICompoundETHManager":{"0.8.28":{"default":{"path":"Intents.sol/ICompoundETHManager.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"IERC20":{"0.8.28":{"default":{"path":"Intents.sol/IERC20.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}},"Intents":{"0.8.28":{"default":{"path":"Intents.sol/Intents.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"src/UniswapRegistry.sol":{"lastModificationDate":1743377637257,"contentHash":"d6d255e4cc90ea588d419cb81003dfb5","sourceName":"src/UniswapRegistry.sol","imports":[],"versionRequirement":"^0.8.17","artifacts":{"UniswapRegistry":{"0.8.28":{"default":{"path":"UniswapRegistry.sol/UniswapRegistry.json","build_id":"25160f9b6b551f35ff07082a9c4a0069"}}}},"seenByCompiler":true},"test/test2.t.sol":{"lastModificationDate":1743859749377,"contentHash":"c4b464ae7f8d411b31ed745b59cf8281","sourceName":"test/test2.t.sol","imports":[],"versionRequirement":null,"artifacts":{},"seenByCompiler":true},"test/testIntents.t.sol":{"lastModificationDate":1743859740266,"contentHash":"f53b8041c128d3bbca14629939e97f8b","sourceName":"test/testIntents.t.sol","imports":[],"versionRequirement":null,"artifacts":{},"seenByCompiler":true},"test/tradeTest.sol":{"lastModificationDate":1743859745287,"contentHash":"451e72f02196d6cc009407e4583acd3d","sourceName":"test/tradeTest.sol","imports":[],"versionRequirement":null,"artifacts":{},"seenByCompiler":true}},"builds":["25160f9b6b551f35ff07082a9c4a0069"],"profiles":{"default":{"solc":{"optimizer":{"enabled":true,"runs":9999},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"*":{"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"cancun","viaIR":true,"libraries":{}},"vyper":{"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode"]}}}}}} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4a64cb5..e11f57a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -2565,7 +2565,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, "node_modules/d3-array": { @@ -3992,6 +3991,29 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -5348,7 +5370,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -5411,7 +5432,6 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, "node_modules/react-merge-refs": { diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index ef30a27..09903c8 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { BrowserRouter as Router, Routes, Route, NavLink } from 'react-router-dom'; import { MessageSquare, TrendingUp, Menu } from 'lucide-react'; -import GeneralChat from './components/GeneralChat'; +import GeneralAI from './components/GeneralChat'; import TradingChat from './components/TradingChat'; import Homepage from './components/Homepage'; import TokenPortfolio from './components/TokenPortfolio'; @@ -16,10 +16,10 @@ function App() {
} /> - } /> - } /> + } /> + } /> } /> - } /> + } />
diff --git a/frontend/src/components/GeneralChat.jsx b/frontend/src/components/GeneralChat.jsx index 5ae184c..470d01d 100644 --- a/frontend/src/components/GeneralChat.jsx +++ b/frontend/src/components/GeneralChat.jsx @@ -3,7 +3,7 @@ import { Send, Image as ImageIcon, X, Camera, Loader, Sparkles, Command, Message import Spline from '@splinetool/react-spline'; import { TradeABI } from '../constants/abi'; -const IntentAI = () => { +const GeneralAI = () => { const fileInputRef = useRef(null); const chatContainerRef = useRef(null); const [isLoading, setIsLoading] = useState(false); @@ -274,4 +274,4 @@ const IntentAI = () => { ); }; -export default IntentAI; \ No newline at end of file +export default GeneralAI; \ No newline at end of file diff --git a/frontend/src/components/TradingChatRSIAlgos.jsx b/frontend/src/components/TradingChatRSIAlgos.jsx index 7e574a4..f640218 100644 --- a/frontend/src/components/TradingChatRSIAlgos.jsx +++ b/frontend/src/components/TradingChatRSIAlgos.jsx @@ -1,6 +1,8 @@ import React, { useState, useEffect } from 'react'; import { Wallet, TrendingUp } from 'lucide-react'; -import { PriceChartWidget } from './PriceChartWidget'; // Adjust path if necessary +import { PriceChartWidget } from './PriceChartWidget'; +import { useNavigate } from 'react-router-dom'; + import { connectWallet as connectToWallet, fetchTokenBalances, @@ -64,7 +66,7 @@ function IntentTradingAlgo() { try { // Uncomment the following block to use the API call const response = await fetch( - `http://localhost:5050/decisions?risk=${riskLevel}&term=${term}`, + `http://localhost:5050/decisions/${riskLevel}/${term}`, { method: 'GET', headers: { 'Content-Type': 'application/json' } } ); if (!response.ok) { @@ -106,6 +108,9 @@ function IntentTradingAlgo() { setLoadingSignals(false); } }; + + const navigate = useNavigate(); + // When user clicks Trade, approval happens on-demand. @@ -169,7 +174,7 @@ function IntentTradingAlgo() { {/* Header Section */}
-

+

navigate('/')} className="text-4xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-blue-400 to-purple-400"> Stratos

- {/* Right Side - Chat Interface - Same as before */} + {/* Right Side - Chat Interface */}
-
-
-
- -
- {/* Chat header and tabs */} -
-
-
-
-
-
- πŸ€– -
-
-
-

AI Assistant

-
- -

Online & Ready

+
+
+
+ +
+ {/* Chat header and wallet controls */} +
+
+
+
+
+
+ πŸ€– +
+
+
+

AI Assistant

+
+ +

Online & Ready

+
+
+
-
-
-
-
+ {!account && ( +
+ +
+ )} +
+ +
- {/* Chat messages */} -
- {messages.map((message, index) => ( -
+ {/* Chat messages */}
-

{message.content}

+ {messages.map((message, index) => ( +
+
+

{message.content}

+
+
+ ))} + {isLoading && ( +
+ + AI is thinking... +
+ )}
-
- ))} - {isLoading && ( -
- - AI is thinking... -
- )} -
- {/* Input area */} -
-
-
-
-