Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 106 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Emergency Token2... | 17572936 | 582 days ago | IN | 0 ETH | 0.00139016 | ||||
Emergency Token1... | 17572935 | 582 days ago | IN | 0 ETH | 0.00144459 | ||||
Trade In Tokens | 17572885 | 582 days ago | IN | 0 ETH | 0.00384951 | ||||
Trade In Tokens | 17572683 | 582 days ago | IN | 0 ETH | 0.00418874 | ||||
Trade In Tokens | 17572468 | 582 days ago | IN | 0 ETH | 0.00124141 | ||||
Trade In Tokens | 17572103 | 583 days ago | IN | 0 ETH | 0.00215114 | ||||
Trade In Tokens | 17572096 | 583 days ago | IN | 0 ETH | 0.00301819 | ||||
Trade In Tokens | 17572029 | 583 days ago | IN | 0 ETH | 0.00204747 | ||||
Trade In Tokens | 17571877 | 583 days ago | IN | 0 ETH | 0.00315955 | ||||
Trade In Tokens | 17571333 | 583 days ago | IN | 0 ETH | 0.00201015 | ||||
Trade In Tokens | 17571250 | 583 days ago | IN | 0 ETH | 0.00205161 | ||||
Trade In Tokens | 17570197 | 583 days ago | IN | 0 ETH | 0.00117284 | ||||
Trade In Tokens | 17569970 | 583 days ago | IN | 0 ETH | 0.00101261 | ||||
Trade In Tokens | 17569184 | 583 days ago | IN | 0 ETH | 0.001457 | ||||
Trade In Tokens | 17569018 | 583 days ago | IN | 0 ETH | 0.00115544 | ||||
Trade In Tokens | 17568984 | 583 days ago | IN | 0 ETH | 0.00103031 | ||||
Trade In Tokens | 17568825 | 583 days ago | IN | 0 ETH | 0.0010419 | ||||
Trade In Tokens | 17568050 | 583 days ago | IN | 0 ETH | 0.00152065 | ||||
Trade In Tokens | 17567193 | 583 days ago | IN | 0 ETH | 0.00111852 | ||||
Trade In Tokens | 17566987 | 583 days ago | IN | 0 ETH | 0.00125185 | ||||
Trade In Tokens | 17566786 | 583 days ago | IN | 0 ETH | 0.00102982 | ||||
Trade In Tokens | 17566535 | 583 days ago | IN | 0 ETH | 0.00100151 | ||||
Trade In Tokens | 17566480 | 583 days ago | IN | 0 ETH | 0.0013845 | ||||
Trade In Tokens | 17566432 | 583 days ago | IN | 0 ETH | 0.00191748 | ||||
Trade In Tokens | 17566234 | 583 days ago | IN | 0 ETH | 0.00098787 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TokenBridge
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.13; // SPDX-License-Identifier: MIT /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TokenBridge is Ownable { IERC20 public token1; // V1 token IERC20 public token2; // V2 token uint256 public immutable token1TotalSupply; uint256 public immutable token2TotalSupply; bool public isInitialized = false; bool public finalized = false; uint256 public bridgeTime; uint256 public exchangeEndTime; address public immutable liquidityWalletForV2; uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; // pay close attention here and make sure all values are CORRECT constructor() { _status = _NOT_ENTERED; // Token V1 token1 = IERC20(0x04b77A1be2981c1Ca353aaf251b0F11398413bFA); // UPDATE with original token address // Token V2 token2 = IERC20(0x3094Ee087FCC4De45b630fcFe551FC39764466D3); // UPDATE with new token address // change to token owner or liquidity holder (usually the project owner, not the developer) before launch liquidityWalletForV2 = address(0x86dD22Cd9Be83073d3b830e4dE970329DFaBA724); // UPDATE // set duration of bridge AFTER initialize is called bridgeTime = 6 days; // This just grabs total supply from each token, to ensure the ratio for the swap is correct. token1TotalSupply = token1.totalSupply(); token2TotalSupply = token2.totalSupply(); } receive() external payable { } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } function tradeInTokens() external nonReentrant { uint256 tradingRatio = 0; uint256 amountToSend; require(isInitialized, "Trading bridge is not active"); require(!finalized, "Bridging tokens is not allowed after bridge is complete"); uint256 token1Balance = token1.balanceOf(msg.sender); require(token1.allowance(msg.sender, address(this)) >= token1Balance, "Approval must be done before transfer"); token1.transferFrom(msg.sender, address(liquidityWalletForV2), token1Balance); // tokens are sent directly to owner wallet. // determine the trading ratio if swapping between tokens of differing supplies. (1% = 1% as an example) if(token2TotalSupply > token1TotalSupply){ tradingRatio = token2TotalSupply / token1TotalSupply; amountToSend = token1Balance * tradingRatio; // multiply if V2 supply is higher than V1 } else if (token1TotalSupply > token2TotalSupply){ tradingRatio = token1TotalSupply / token2TotalSupply; amountToSend = token1Balance / tradingRatio; // divide if V2 supply is lower than V1 } else if (token1TotalSupply == token2TotalSupply) { amountToSend = token1Balance; // leave alone if supply is identical } require(token2.balanceOf(address(this)) >= amountToSend, "Not enough V2 tokens to send"); token2.transfer(msg.sender, amountToSend); } function initialize() external onlyOwner { require(!isInitialized, "May not initialize contract again to prevent moving out exchangeEndTime"); isInitialized = true; exchangeEndTime = block.timestamp + bridgeTime; // finalize can only be called after this many days } function finalize() external onlyOwner { require(block.timestamp >= exchangeEndTime, "Bridge not over yet."); if(token1.balanceOf(address(this)) > 0){ token1.transfer(address(msg.sender),token1.balanceOf(address(this))); } if(token2.balanceOf(address(this)) > 0){ token2.transfer(address(msg.sender),token2.balanceOf(address(this))); } } // Feel free to remove the next two functions if you are positive there will be no contract issues but this does give a way to prevent tokens from getting locked forever in the event the contract itself is screwed up. function emergencyToken2Withdraw() external onlyOwner { token2.transfer(address(msg.sender),token2.balanceOf(address(this))); } // use in case the sell won't work. function emergencyToken1Withdraw() external onlyOwner { token1.transfer(address(msg.sender),token1.balanceOf(address(this))); } function emergencyUpdateToken1(address token) external onlyOwner { token1 = IERC20(token); } function emergencyToken2Withdraw(address token) external onlyOwner { token2 = IERC20(token); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"bridgeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyToken1Withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyToken2Withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyToken2Withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyUpdateToken1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exchangeEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWalletForV2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1TotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token2","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token2TotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeInTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526000600260146101000a81548160ff0219169083151502179055506000600260156101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060006200005a6200033860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060016005819055507304b77a1be2981c1ca353aaf251b0f11398413bfa600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733094ee087fcc4de45b630fcfe551fc39764466d3600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507386dd22cd9be83073d3b830e4de970329dfaba72473ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506207e900600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000380565b60808181525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000380565b60a08181525050620003b2565b600033905090565b600080fd5b6000819050919050565b6200035a8162000345565b81146200036657600080fd5b50565b6000815190506200037a816200034f565b92915050565b60006020828403121562000399576200039862000340565b5b6000620003a98482850162000369565b91505092915050565b60805160a05160c0516122586200042f60003960008181610f1b01526113f9015260008181610ef70152818161149e015281816114e6015281816115260152818161156e01526115cf015260008181610c3b0152818161147d015281816114c5015281816115470152818161158f01526115f001526122586000f3fe6080604052600436106101185760003560e01c8063808a6028116100a0578063b3f05b9711610064578063b3f05b971461032a578063d21220a714610355578063d58062de14610380578063e6bf822214610397578063f2fde38b146103ae5761011f565b8063808a6028146102675780638129fc1c146102925780638da5cb5b146102a95780639a2c9330146102d4578063a5d8a6c6146102ff5761011f565b80634bb278f3116100e75780634bb278f3146101cc57806363cbe0c0146101e35780636b48afb3146101fa5780636efeddba14610225578063715018a6146102505761011f565b80630280bdbb146101245780630d972d261461014d57806325be124e14610176578063392e53cd146101a15761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906119d2565b6103d7565b005b34801561015957600080fd5b50610174600480360381019061016f91906119d2565b6104b0565b005b34801561018257600080fd5b5061018b610589565b6040516101989190611a5e565b60405180910390f35b3480156101ad57600080fd5b506101b66105af565b6040516101c39190611a94565b60405180910390f35b3480156101d857600080fd5b506101e16105c2565b005b3480156101ef57600080fd5b506101f8610a60565b005b34801561020657600080fd5b5061020f610c33565b60405161021c9190611ac8565b60405180910390f35b34801561023157600080fd5b5061023a610c39565b6040516102479190611ac8565b60405180910390f35b34801561025c57600080fd5b50610265610c5d565b005b34801561027357600080fd5b5061027c610db0565b6040516102899190611ac8565b60405180910390f35b34801561029e57600080fd5b506102a7610db6565b005b3480156102b557600080fd5b506102be610ecc565b6040516102cb9190611af2565b60405180910390f35b3480156102e057600080fd5b506102e9610ef5565b6040516102f69190611ac8565b60405180910390f35b34801561030b57600080fd5b50610314610f19565b6040516103219190611af2565b60405180910390f35b34801561033657600080fd5b5061033f610f3d565b60405161034c9190611a94565b60405180910390f35b34801561036157600080fd5b5061036a610f50565b6040516103779190611a5e565b60405180910390f35b34801561038c57600080fd5b50610395610f76565b005b3480156103a357600080fd5b506103ac611149565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906119d2565b6117a6565b005b6103df611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461046c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046390611b6a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104b8611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c90611b6a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1681565b6105ca611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e90611b6a565b60405180910390fd5b60045442101561069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390611bd6565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f99190611af2565b602060405180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a9190611c22565b111561087d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107da9190611af2565b602060405180830381865afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081b9190611c22565b6040518363ffffffff1660e01b8152600401610838929190611c4f565b6020604051808303816000875af1158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b9190611ca4565b505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108da9190611af2565b602060405180830381865afa1580156108f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091b9190611c22565b1115610a5e57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109bb9190611af2565b602060405180830381865afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc9190611c22565b6040518363ffffffff1660e01b8152600401610a19929190611c4f565b6020604051808303816000875af1158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611ca4565b505b565b610a68611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90611b6a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8f9190611af2565b602060405180830381865afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd09190611c22565b6040518363ffffffff1660e01b8152600401610bed929190611c4f565b6020604051808303816000875af1158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611ca4565b50565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c65611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990611b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b610dbe611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290611b6a565b60405180910390fd5b600260149054906101000a900460ff1615610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290611d69565b60405180910390fd5b6001600260146101000a81548160ff02191690831515021790555060035442610ec49190611db8565b600481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260159054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7e611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611b6a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110a59190611af2565b602060405180830381865afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190611c22565b6040518363ffffffff1660e01b8152600401611103929190611c4f565b6020604051808303816000875af1158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190611ca4565b50565b60026005540361118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590611e5a565b60405180910390fd5b6002600581905550600080600260149054906101000a900460ff166111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90611ec6565b60405180910390fd5b600260159054906101000a900460ff1615611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90611f58565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016112959190611af2565b602060405180830381865afa1580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d69190611c22565b905080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611336929190611f78565b602060405180830381865afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190611c22565b10156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90612013565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd337f0000000000000000000000000000000000000000000000000000000000000000846040518463ffffffff1660e01b815260040161143793929190612033565b6020604051808303816000875af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147a9190611ca4565b507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001115611524577f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061150f9190612099565b9250828161151d91906120ca565b915061161a565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000011156115cd577f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006115b89190612099565b925082816115c69190612099565b9150611619565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000003611618578091505b5b5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116769190611af2565b602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b79190611c22565b10156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90612170565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611755929190611c4f565b6020604051808303816000875af1158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190611ca4565b505050506001600581905550565b6117ae611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290611b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190612202565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061199f82611974565b9050919050565b6119af81611994565b81146119ba57600080fd5b50565b6000813590506119cc816119a6565b92915050565b6000602082840312156119e8576119e761196f565b5b60006119f6848285016119bd565b91505092915050565b6000819050919050565b6000611a24611a1f611a1a84611974565b6119ff565b611974565b9050919050565b6000611a3682611a09565b9050919050565b6000611a4882611a2b565b9050919050565b611a5881611a3d565b82525050565b6000602082019050611a736000830184611a4f565b92915050565b60008115159050919050565b611a8e81611a79565b82525050565b6000602082019050611aa96000830184611a85565b92915050565b6000819050919050565b611ac281611aaf565b82525050565b6000602082019050611add6000830184611ab9565b92915050565b611aec81611994565b82525050565b6000602082019050611b076000830184611ae3565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611b54602083611b0d565b9150611b5f82611b1e565b602082019050919050565b60006020820190508181036000830152611b8381611b47565b9050919050565b7f427269646765206e6f74206f766572207965742e000000000000000000000000600082015250565b6000611bc0601483611b0d565b9150611bcb82611b8a565b602082019050919050565b60006020820190508181036000830152611bef81611bb3565b9050919050565b611bff81611aaf565b8114611c0a57600080fd5b50565b600081519050611c1c81611bf6565b92915050565b600060208284031215611c3857611c3761196f565b5b6000611c4684828501611c0d565b91505092915050565b6000604082019050611c646000830185611ae3565b611c716020830184611ab9565b9392505050565b611c8181611a79565b8114611c8c57600080fd5b50565b600081519050611c9e81611c78565b92915050565b600060208284031215611cba57611cb961196f565b5b6000611cc884828501611c8f565b91505092915050565b7f4d6179206e6f7420696e697469616c697a6520636f6e7472616374206167616960008201527f6e20746f2070726576656e74206d6f76696e67206f75742065786368616e676560208201527f456e6454696d6500000000000000000000000000000000000000000000000000604082015250565b6000611d53604783611b0d565b9150611d5e82611cd1565b606082019050919050565b60006020820190508181036000830152611d8281611d46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611dc382611aaf565b9150611dce83611aaf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0357611e02611d89565b5b828201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611e44601f83611b0d565b9150611e4f82611e0e565b602082019050919050565b60006020820190508181036000830152611e7381611e37565b9050919050565b7f54726164696e6720627269646765206973206e6f742061637469766500000000600082015250565b6000611eb0601c83611b0d565b9150611ebb82611e7a565b602082019050919050565b60006020820190508181036000830152611edf81611ea3565b9050919050565b7f4272696467696e6720746f6b656e73206973206e6f7420616c6c6f776564206160008201527f667465722062726964676520697320636f6d706c657465000000000000000000602082015250565b6000611f42603783611b0d565b9150611f4d82611ee6565b604082019050919050565b60006020820190508181036000830152611f7181611f35565b9050919050565b6000604082019050611f8d6000830185611ae3565b611f9a6020830184611ae3565b9392505050565b7f417070726f76616c206d75737420626520646f6e65206265666f72652074726160008201527f6e73666572000000000000000000000000000000000000000000000000000000602082015250565b6000611ffd602583611b0d565b915061200882611fa1565b604082019050919050565b6000602082019050818103600083015261202c81611ff0565b9050919050565b60006060820190506120486000830186611ae3565b6120556020830185611ae3565b6120626040830184611ab9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120a482611aaf565b91506120af83611aaf565b9250826120bf576120be61206a565b5b828204905092915050565b60006120d582611aaf565b91506120e083611aaf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561211957612118611d89565b5b828202905092915050565b7f4e6f7420656e6f75676820563220746f6b656e7320746f2073656e6400000000600082015250565b600061215a601c83611b0d565b915061216582612124565b602082019050919050565b600060208201905081810360008301526121898161214d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006121ec602683611b0d565b91506121f782612190565b604082019050919050565b6000602082019050818103600083015261221b816121df565b905091905056fea2646970667358221220fa0bce757d5ccf7db2704394174b7c0caae0868dc9eb82a0535f7c06afcd451664736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106101185760003560e01c8063808a6028116100a0578063b3f05b9711610064578063b3f05b971461032a578063d21220a714610355578063d58062de14610380578063e6bf822214610397578063f2fde38b146103ae5761011f565b8063808a6028146102675780638129fc1c146102925780638da5cb5b146102a95780639a2c9330146102d4578063a5d8a6c6146102ff5761011f565b80634bb278f3116100e75780634bb278f3146101cc57806363cbe0c0146101e35780636b48afb3146101fa5780636efeddba14610225578063715018a6146102505761011f565b80630280bdbb146101245780630d972d261461014d57806325be124e14610176578063392e53cd146101a15761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906119d2565b6103d7565b005b34801561015957600080fd5b50610174600480360381019061016f91906119d2565b6104b0565b005b34801561018257600080fd5b5061018b610589565b6040516101989190611a5e565b60405180910390f35b3480156101ad57600080fd5b506101b66105af565b6040516101c39190611a94565b60405180910390f35b3480156101d857600080fd5b506101e16105c2565b005b3480156101ef57600080fd5b506101f8610a60565b005b34801561020657600080fd5b5061020f610c33565b60405161021c9190611ac8565b60405180910390f35b34801561023157600080fd5b5061023a610c39565b6040516102479190611ac8565b60405180910390f35b34801561025c57600080fd5b50610265610c5d565b005b34801561027357600080fd5b5061027c610db0565b6040516102899190611ac8565b60405180910390f35b34801561029e57600080fd5b506102a7610db6565b005b3480156102b557600080fd5b506102be610ecc565b6040516102cb9190611af2565b60405180910390f35b3480156102e057600080fd5b506102e9610ef5565b6040516102f69190611ac8565b60405180910390f35b34801561030b57600080fd5b50610314610f19565b6040516103219190611af2565b60405180910390f35b34801561033657600080fd5b5061033f610f3d565b60405161034c9190611a94565b60405180910390f35b34801561036157600080fd5b5061036a610f50565b6040516103779190611a5e565b60405180910390f35b34801561038c57600080fd5b50610395610f76565b005b3480156103a357600080fd5b506103ac611149565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906119d2565b6117a6565b005b6103df611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461046c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046390611b6a565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104b8611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053c90611b6a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1681565b6105ca611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e90611b6a565b60405180910390fd5b60045442101561069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390611bd6565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f99190611af2565b602060405180830381865afa158015610716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073a9190611c22565b111561087d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107da9190611af2565b602060405180830381865afa1580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081b9190611c22565b6040518363ffffffff1660e01b8152600401610838929190611c4f565b6020604051808303816000875af1158015610857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087b9190611ca4565b505b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108da9190611af2565b602060405180830381865afa1580156108f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091b9190611c22565b1115610a5e57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109bb9190611af2565b602060405180830381865afa1580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc9190611c22565b6040518363ffffffff1660e01b8152600401610a19929190611c4f565b6020604051808303816000875af1158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190611ca4565b505b565b610a68611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aec90611b6a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8f9190611af2565b602060405180830381865afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd09190611c22565b6040518363ffffffff1660e01b8152600401610bed929190611c4f565b6020604051808303816000875af1158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611ca4565b50565b60035481565b7f00000000000000000000000000000000000000002c2840107597a54ca200000081565b610c65611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce990611b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b610dbe611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4290611b6a565b60405180910390fd5b600260149054906101000a900460ff1615610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290611d69565b60405180910390fd5b6001600260146101000a81548160ff02191690831515021790555060035442610ec49190611db8565b600481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f00000000000000000000000000000000000000002c2840107597a54ca200000081565b7f00000000000000000000000086dd22cd9be83073d3b830e4de970329dfaba72481565b600260159054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f7e611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611b6a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110a59190611af2565b602060405180830381865afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190611c22565b6040518363ffffffff1660e01b8152600401611103929190611c4f565b6020604051808303816000875af1158015611122573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111469190611ca4565b50565b60026005540361118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590611e5a565b60405180910390fd5b6002600581905550600080600260149054906101000a900460ff166111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df90611ec6565b60405180910390fd5b600260159054906101000a900460ff1615611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90611f58565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016112959190611af2565b602060405180830381865afa1580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d69190611c22565b905080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611336929190611f78565b602060405180830381865afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190611c22565b10156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90612013565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd337f00000000000000000000000086dd22cd9be83073d3b830e4de970329dfaba724846040518463ffffffff1660e01b815260040161143793929190612033565b6020604051808303816000875af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147a9190611ca4565b507f00000000000000000000000000000000000000002c2840107597a54ca20000007f00000000000000000000000000000000000000002c2840107597a54ca20000001115611524577f00000000000000000000000000000000000000002c2840107597a54ca20000007f00000000000000000000000000000000000000002c2840107597a54ca200000061150f9190612099565b9250828161151d91906120ca565b915061161a565b7f00000000000000000000000000000000000000002c2840107597a54ca20000007f00000000000000000000000000000000000000002c2840107597a54ca200000011156115cd577f00000000000000000000000000000000000000002c2840107597a54ca20000007f00000000000000000000000000000000000000002c2840107597a54ca20000006115b89190612099565b925082816115c69190612099565b9150611619565b7f00000000000000000000000000000000000000002c2840107597a54ca20000007f00000000000000000000000000000000000000002c2840107597a54ca200000003611618578091505b5b5b81600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116769190611af2565b602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b79190611c22565b10156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90612170565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611755929190611c4f565b6020604051808303816000875af1158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190611ca4565b505050506001600581905550565b6117ae611967565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290611b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190612202565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061199f82611974565b9050919050565b6119af81611994565b81146119ba57600080fd5b50565b6000813590506119cc816119a6565b92915050565b6000602082840312156119e8576119e761196f565b5b60006119f6848285016119bd565b91505092915050565b6000819050919050565b6000611a24611a1f611a1a84611974565b6119ff565b611974565b9050919050565b6000611a3682611a09565b9050919050565b6000611a4882611a2b565b9050919050565b611a5881611a3d565b82525050565b6000602082019050611a736000830184611a4f565b92915050565b60008115159050919050565b611a8e81611a79565b82525050565b6000602082019050611aa96000830184611a85565b92915050565b6000819050919050565b611ac281611aaf565b82525050565b6000602082019050611add6000830184611ab9565b92915050565b611aec81611994565b82525050565b6000602082019050611b076000830184611ae3565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611b54602083611b0d565b9150611b5f82611b1e565b602082019050919050565b60006020820190508181036000830152611b8381611b47565b9050919050565b7f427269646765206e6f74206f766572207965742e000000000000000000000000600082015250565b6000611bc0601483611b0d565b9150611bcb82611b8a565b602082019050919050565b60006020820190508181036000830152611bef81611bb3565b9050919050565b611bff81611aaf565b8114611c0a57600080fd5b50565b600081519050611c1c81611bf6565b92915050565b600060208284031215611c3857611c3761196f565b5b6000611c4684828501611c0d565b91505092915050565b6000604082019050611c646000830185611ae3565b611c716020830184611ab9565b9392505050565b611c8181611a79565b8114611c8c57600080fd5b50565b600081519050611c9e81611c78565b92915050565b600060208284031215611cba57611cb961196f565b5b6000611cc884828501611c8f565b91505092915050565b7f4d6179206e6f7420696e697469616c697a6520636f6e7472616374206167616960008201527f6e20746f2070726576656e74206d6f76696e67206f75742065786368616e676560208201527f456e6454696d6500000000000000000000000000000000000000000000000000604082015250565b6000611d53604783611b0d565b9150611d5e82611cd1565b606082019050919050565b60006020820190508181036000830152611d8281611d46565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611dc382611aaf565b9150611dce83611aaf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611e0357611e02611d89565b5b828201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611e44601f83611b0d565b9150611e4f82611e0e565b602082019050919050565b60006020820190508181036000830152611e7381611e37565b9050919050565b7f54726164696e6720627269646765206973206e6f742061637469766500000000600082015250565b6000611eb0601c83611b0d565b9150611ebb82611e7a565b602082019050919050565b60006020820190508181036000830152611edf81611ea3565b9050919050565b7f4272696467696e6720746f6b656e73206973206e6f7420616c6c6f776564206160008201527f667465722062726964676520697320636f6d706c657465000000000000000000602082015250565b6000611f42603783611b0d565b9150611f4d82611ee6565b604082019050919050565b60006020820190508181036000830152611f7181611f35565b9050919050565b6000604082019050611f8d6000830185611ae3565b611f9a6020830184611ae3565b9392505050565b7f417070726f76616c206d75737420626520646f6e65206265666f72652074726160008201527f6e73666572000000000000000000000000000000000000000000000000000000602082015250565b6000611ffd602583611b0d565b915061200882611fa1565b604082019050919050565b6000602082019050818103600083015261202c81611ff0565b9050919050565b60006060820190506120486000830186611ae3565b6120556020830185611ae3565b6120626040830184611ab9565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006120a482611aaf565b91506120af83611aaf565b9250826120bf576120be61206a565b5b828204905092915050565b60006120d582611aaf565b91506120e083611aaf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561211957612118611d89565b5b828202905092915050565b7f4e6f7420656e6f75676820563220746f6b656e7320746f2073656e6400000000600082015250565b600061215a601c83611b0d565b915061216582612124565b602082019050919050565b600060208201905081810360008301526121898161214d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006121ec602683611b0d565b91506121f782612190565b604082019050919050565b6000602082019050818103600083015261221b816121df565b905091905056fea2646970667358221220fa0bce757d5ccf7db2704394174b7c0caae0868dc9eb82a0535f7c06afcd451664736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.