Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
OracleV2Share
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @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) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract Operator is Context, Ownable { address private _operator; event OperatorTransferred(address indexed previousOperator, address indexed newOperator); constructor() { _operator = _msgSender(); emit OperatorTransferred(address(0), _operator); } function operator() public view returns (address) { return _operator; } modifier onlyOperator() { require(_operator == msg.sender, "operator: caller is not the operator"); _; } function isOperator() public view returns (bool) { return _msgSender() == _operator; } function transferOperator(address newOperator_) public onlyOwner { _transferOperator(newOperator_); } function _transferOperator(address newOperator_) internal { require(newOperator_ != address(0), "operator: zero address given for new operator"); emit OperatorTransferred(address(0), newOperator_); _operator = newOperator_; } function _renounceOperator() public onlyOwner { emit OperatorTransferred(_operator, address(0)); _operator = address(0); } } interface IPool { error NOT_AUTHORIZED(); error UNSTABLE_RATIO(); /// @dev safe transfer failed error STF(); error OVERFLOW(); /// @dev skim disabled error SD(); /// @dev insufficient liquidity minted error ILM(); /// @dev insufficient liquidity burned error ILB(); /// @dev insufficient output amount error IOA(); /// @dev insufficient input amount error IIA(); error IL(); error IT(); error K(); event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); /// @notice Same as prices with with an additional window argument. /// Window = 2 means 2 * 30min (or 1 hr) between observations /// @param tokenIn . /// @param amountIn . /// @param points . /// @param window . /// @return Array of TWAP prices function sample( address tokenIn, uint256 amountIn, uint256 points, uint256 window ) external view returns (uint256[] memory); function observations(uint256 index) external view returns (uint256 timestamp, uint256 reserve0Cumulative, uint256 reserve1Cumulative); function current(address tokenIn, uint256 amountIn) external view returns (uint256 amountOut); /// @notice Provides twap price with user configured granularity, up to the full window size /// @param tokenIn . /// @param amountIn . /// @param granularity . /// @return amountOut . function quote(address tokenIn, uint256 amountIn, uint256 granularity) external view returns (uint256 amountOut); /// @notice Get the number of observations recorded function observationLength() external view returns (uint256); /// @notice Address of token in the pool with the lower address value function token0() external view returns (address); /// @notice Address of token in the poool with the higher address value function token1() external view returns (address); /// @notice initialize the pool, called only once programatically function initialize( address _token0, address _token1, bool _stable ) external; /// @notice calculate the current reserves of the pool and their last 'seen' timestamp /// @return _reserve0 amount of token0 in reserves /// @return _reserve1 amount of token1 in reserves /// @return _blockTimestampLast the timestamp when the pool was last updated function getReserves() external view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ); /// @notice mint the pair tokens (LPs) /// @param to where to mint the LP tokens to /// @return liquidity amount of LP tokens to mint function mint(address to) external returns (uint256 liquidity); /// @notice burn the pair tokens (LPs) /// @param to where to send the underlying /// @return amount0 amount of amount0 /// @return amount1 amount of amount1 function burn( address to ) external returns (uint256 amount0, uint256 amount1); /// @notice direct swap through the pool function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; /// @notice force balances to match reserves, can be used to harvest rebases from rebasing tokens or other external factors /// @param to where to send the excess tokens to function skim(address to) external; /// @notice force reserves to match balances, prevents skim excess if skim is enabled function sync() external; /// @notice set the pair fees contract address function setFeeRecipient(address _pairFees) external; /// @notice set the feesplit variable function setFeeSplit(uint256 _feeSplit) external; /// @notice sets the swap fee of the pair /// @dev max of 10_000 (10%) /// @param _fee the fee function setFee(uint256 _fee) external; /// @notice 'mint' the fees as LP tokens /// @dev this is used for protocol/voter fees function mintFee() external; /// @notice calculates the amount of tokens to receive post swap /// @param amountIn the token amount /// @param tokenIn the address of the token function getAmountOut( uint256 amountIn, address tokenIn ) external view returns (uint256 amountOut); /// @notice returns various metadata about the pair function metadata() external view returns ( uint256 _decimals0, uint256 _decimals1, uint256 _reserve0, uint256 _reserve1, bool _stable, address _token0, address _token1 ); /// @notice returns the feeSplit of the pair function feeSplit() external view returns (uint256); /// @notice returns the fee of the pair function fee() external view returns (uint256); /// @notice returns the feeRecipient of the pair function feeRecipient() external view returns (address); } contract OracleV2Share is Operator { using SafeMath for uint256; address public token0; address public token1; uint256 public granularityToUse = 1; // 1 observation every 30 minutes bool public useTwap = false; bool public useInstantPrice = true; IPool public pair; constructor(IPool _pair) public { pair = _pair; token0 = pair.token0(); token1 = pair.token1(); // uint256 reserve0; // uint256 reserve1; // (reserve0, reserve1, ) = pair.getReserves(); // require(reserve0 != 0 && reserve1 != 0, "Oracle: No reserves"); } function update() external { pair.sync(); } function consult( address _token, uint256 _amountIn ) external view returns (uint256 amountOut) { if (_token == token0) { amountOut = _quote(_token, _amountIn, 12); } else { require(_token == token1, "Oracle: Invalid token"); amountOut = _quote(_token, _amountIn, 12); } } function twap( address _token, uint256 _amountIn ) external view returns (uint256 amountOut) { if (_token == token0) { if (useTwap) { amountOut = _quote(_token, _amountIn, granularityToUse); } else { if (useInstantPrice) { amountOut = _getAmountOut(_token, _amountIn); } else { amountOut = _current(_token, _amountIn); } } } else { require(_token == token1, "Oracle: Invalid token"); if (useTwap) { amountOut = _quote(_token, _amountIn, granularityToUse); } else { if (useInstantPrice) { amountOut = _getAmountOut(_token, _amountIn); } else { amountOut = _current(_token, _amountIn); } } } } // Note the window parameter is removed as its always 1 (30min), granularity at 12 for example is (12 * 30min) = 6 hours function _quote( address tokenIn, uint256 amountIn, uint256 granularity // number of observations to query ) internal view returns (uint256 amountOut) { uint256 observationLength = IPool(pair).observationLength(); require( granularity <= observationLength, "Oracle: Not enough observations" ); uint256 price = IPool(pair).quote(tokenIn, amountIn, granularity); amountOut = price; } // Note the window parameter is removed as its always 1 (30min), granularity at 12 for example is (12 * 30min) = 6 hours function _getAmountOut( address tokenIn, uint256 amountIn ) internal view returns (uint256 amountOut) { uint256 reserve0; uint256 reserve1; (reserve0, reserve1, ) = IPool(pair).getReserves(); require(reserve0 != 0 && reserve1 != 0, "Oracle: No reserves"); uint256 price = IPool(pair).getAmountOut(amountIn, tokenIn); amountOut = price; } // Note the window parameter is removed as its always 1 (30min), granularity at 12 for example is (12 * 30min) = 6 hours function _current( address tokenIn, uint256 amountIn ) internal view returns (uint256 amountOut) { uint256 observationLength = IPool(pair).observationLength(); require( observationLength > 0, "Oracle: Not enough observations" ); uint256 price = IPool(pair).current(tokenIn, amountIn); amountOut = price; } function setGranularity(uint256 _granularity) external onlyOperator { granularityToUse = _granularity; } function setUseTwap(bool _useTwap) external onlyOperator { useTwap = _useTwap; } function setUseInstantPrice(bool _useInstantPrice) external onlyOperator { useInstantPrice = _useInstantPrice; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IPool","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"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":"_renounceOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"name":"consult","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularityToUse","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","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":"pair","outputs":[{"internalType":"contract IPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_granularity","type":"uint256"}],"name":"setGranularity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useInstantPrice","type":"bool"}],"name":"setUseInstantPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useTwap","type":"bool"}],"name":"setUseTwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"}],"name":"twap","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"useInstantPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useTwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260016004555f60055f6101000a81548160ff0219169083151502179055506001600560016101000a81548160ff021916908315150217905550348015610048575f80fd5b50604051611ea5380380611ea5833981810160405281019061006a9190610468565b61008661007b61033160201b60201c565b61033860201b60201c565b61009461033160201b60201c565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600560026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021e91906104bd565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ec91906104bd565b60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506104e8565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610426826103fd565b9050919050565b5f6104378261041c565b9050919050565b6104478161042d565b8114610451575f80fd5b50565b5f815190506104628161043e565b92915050565b5f6020828403121561047d5761047c6103f9565b5b5f61048a84828501610454565b91505092915050565b61049c8161041c565b81146104a6575f80fd5b50565b5f815190506104b781610493565b92915050565b5f602082840312156104d2576104d16103f9565b5b5f6104df848285016104a9565b91505092915050565b6119b0806104f55f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c80636808a128116100ab578063a8aa1b311161006f578063a8aa1b31146102a9578063c6af81d9146102c7578063d21220a7146102e3578063d5000cdf14610301578063f2fde38b1461031f5761011f565b80636808a1281461023d578063715018a61461026d5780638a27f103146102775780638da5cb5b14610281578063a2e620451461029f5761011f565b80633ddac953116100f25780633ddac953146101955780634456eda2146101c5578063570ca735146101e3578063588ff2d214610201578063625b36721461021f5761011f565b806306b5d2d0146101235780630dfe16811461013f57806329605e771461015d5780633b5fce9214610179575b5f80fd5b61013d6004803603810190610138919061125a565b61033b565b005b6101476103e7565b60405161015491906112c4565b60405180910390f35b61017760048036038101906101729190611307565b61040c565b005b610193600480360381019061018e9190611365565b610420565b005b6101af60048036038101906101aa9190611390565b6104b9565b6040516101bc91906113dd565b60405180910390f35b6101cd6105c5565b6040516101da9190611405565b60405180910390f35b6101eb610622565b6040516101f891906112c4565b60405180910390f35b61020961064a565b60405161021691906113dd565b60405180910390f35b610227610650565b6040516102349190611405565b60405180910390f35b61025760048036038101906102529190611390565b610662565b60405161026491906113dd565b60405180910390f35b61027561080a565b005b61027f61081d565b005b6102896108e2565b60405161029691906112c4565b60405180910390f35b6102a7610909565b005b6102b1610988565b6040516102be9190611479565b60405180910390f35b6102e160048036038101906102dc919061125a565b6109ae565b005b6102eb610a59565b6040516102f891906112c4565b60405180910390f35b610309610a7e565b6040516103169190611405565b60405180910390f35b61033960048036038101906103349190611307565b610a91565b005b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c190611512565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610414610b13565b61041d81610b91565b50565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a690611512565b60405180910390fd5b8060048190555050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105215761051a8383600c610c9c565b90506105bf565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a79061157a565b60405180910390fd5b6105bc8383600c610c9c565b90505b92915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610606610e1f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60055f9054906101000a900460ff1681565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107185760055f9054906101000a900460ff16156106df576106d88383600454610c9c565b9050610713565b600560019054906101000a900460ff1615610705576106fe8383610e26565b9050610712565b61070f8383610fe1565b90505b5b610804565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e9061157a565b60405180910390fd5b60055f9054906101000a900460ff16156107cf576107c88383600454610c9c565b9050610803565b600560019054906101000a900460ff16156107f5576107ee8383610e26565b9050610802565b6107ff8383610fe1565b90505b5b5b92915050565b610812610b13565b61081b5f611160565b565b610825610b13565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a35f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610970575f80fd5b505af1158015610982573d5f803e3d5ffd5b50505050565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490611512565b60405180910390fd5b8060055f6101000a81548160ff02191690831515021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560019054906101000a900460ff1681565b610a99610b13565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90611608565b60405180910390fd5b610b1081611160565b50565b610b1b610e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b396108e2565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690611670565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf6906116fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb31db6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2d9190611730565b905080831115610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d69906117a5565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e8cc04b8787876040518463ffffffff1660e01b8152600401610dd2939291906117c3565b602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190611730565b905080925050509392505050565b5f33905090565b5f805f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb89190611874565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691505080925081935050505f8214158015610ef757505f8114155b610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061190e565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f140a35a86886040518363ffffffff1660e01b8152600401610f9492919061192c565b602060405180830381865afa158015610faf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd39190611730565b905080935050505092915050565b5f80600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb31db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110729190611730565b90505f81116110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad906117a5565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663517b3f8286866040518363ffffffff1660e01b8152600401611114929190611953565b602060405180830381865afa15801561112f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111539190611730565b9050809250505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f8115159050919050565b61123981611225565b8114611243575f80fd5b50565b5f8135905061125481611230565b92915050565b5f6020828403121561126f5761126e611221565b5b5f61127c84828501611246565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112ae82611285565b9050919050565b6112be816112a4565b82525050565b5f6020820190506112d75f8301846112b5565b92915050565b6112e6816112a4565b81146112f0575f80fd5b50565b5f81359050611301816112dd565b92915050565b5f6020828403121561131c5761131b611221565b5b5f611329848285016112f3565b91505092915050565b5f819050919050565b61134481611332565b811461134e575f80fd5b50565b5f8135905061135f8161133b565b92915050565b5f6020828403121561137a57611379611221565b5b5f61138784828501611351565b91505092915050565b5f80604083850312156113a6576113a5611221565b5b5f6113b3858286016112f3565b92505060206113c485828601611351565b9150509250929050565b6113d781611332565b82525050565b5f6020820190506113f05f8301846113ce565b92915050565b6113ff81611225565b82525050565b5f6020820190506114185f8301846113f6565b92915050565b5f819050919050565b5f61144161143c61143784611285565b61141e565b611285565b9050919050565b5f61145282611427565b9050919050565b5f61146382611448565b9050919050565b61147381611459565b82525050565b5f60208201905061148c5f83018461146a565b92915050565b5f82825260208201905092915050565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f7065725f8201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b5f6114fc602483611492565b9150611507826114a2565b604082019050919050565b5f6020820190508181035f830152611529816114f0565b9050919050565b7f4f7261636c653a20496e76616c696420746f6b656e00000000000000000000005f82015250565b5f611564601583611492565b915061156f82611530565b602082019050919050565b5f6020820190508181035f83015261159181611558565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6115f2602683611492565b91506115fd82611598565b604082019050919050565b5f6020820190508181035f83015261161f816115e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61165a602083611492565b915061166582611626565b602082019050919050565b5f6020820190508181035f8301526116878161164e565b9050919050565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f725f8201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b5f6116e8602d83611492565b91506116f38261168e565b604082019050919050565b5f6020820190508181035f830152611715816116dc565b9050919050565b5f8151905061172a8161133b565b92915050565b5f6020828403121561174557611744611221565b5b5f6117528482850161171c565b91505092915050565b7f4f7261636c653a204e6f7420656e6f756768206f62736572766174696f6e73005f82015250565b5f61178f601f83611492565b915061179a8261175b565b602082019050919050565b5f6020820190508181035f8301526117bc81611783565b9050919050565b5f6060820190506117d65f8301866112b5565b6117e360208301856113ce565b6117f060408301846113ce565b949350505050565b5f6dffffffffffffffffffffffffffff82169050919050565b61181a816117f8565b8114611824575f80fd5b50565b5f8151905061183581611811565b92915050565b5f63ffffffff82169050919050565b6118538161183b565b811461185d575f80fd5b50565b5f8151905061186e8161184a565b92915050565b5f805f6060848603121561188b5761188a611221565b5b5f61189886828701611827565b93505060206118a986828701611827565b92505060406118ba86828701611860565b9150509250925092565b7f4f7261636c653a204e6f207265736572766573000000000000000000000000005f82015250565b5f6118f8601383611492565b9150611903826118c4565b602082019050919050565b5f6020820190508181035f830152611925816118ec565b9050919050565b5f60408201905061193f5f8301856113ce565b61194c60208301846112b5565b9392505050565b5f6040820190506119665f8301856112b5565b61197360208301846113ce565b939250505056fea2646970667358221220a114c9fa90a311563d271a30260322bdb0d0bafe284d7774864a6e64f341119664736f6c634300081a00330000000000000000000000003914d28997764c21545f5e456928a824a73d7ea3
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061011f575f3560e01c80636808a128116100ab578063a8aa1b311161006f578063a8aa1b31146102a9578063c6af81d9146102c7578063d21220a7146102e3578063d5000cdf14610301578063f2fde38b1461031f5761011f565b80636808a1281461023d578063715018a61461026d5780638a27f103146102775780638da5cb5b14610281578063a2e620451461029f5761011f565b80633ddac953116100f25780633ddac953146101955780634456eda2146101c5578063570ca735146101e3578063588ff2d214610201578063625b36721461021f5761011f565b806306b5d2d0146101235780630dfe16811461013f57806329605e771461015d5780633b5fce9214610179575b5f80fd5b61013d6004803603810190610138919061125a565b61033b565b005b6101476103e7565b60405161015491906112c4565b60405180910390f35b61017760048036038101906101729190611307565b61040c565b005b610193600480360381019061018e9190611365565b610420565b005b6101af60048036038101906101aa9190611390565b6104b9565b6040516101bc91906113dd565b60405180910390f35b6101cd6105c5565b6040516101da9190611405565b60405180910390f35b6101eb610622565b6040516101f891906112c4565b60405180910390f35b61020961064a565b60405161021691906113dd565b60405180910390f35b610227610650565b6040516102349190611405565b60405180910390f35b61025760048036038101906102529190611390565b610662565b60405161026491906113dd565b60405180910390f35b61027561080a565b005b61027f61081d565b005b6102896108e2565b60405161029691906112c4565b60405180910390f35b6102a7610909565b005b6102b1610988565b6040516102be9190611479565b60405180910390f35b6102e160048036038101906102dc919061125a565b6109ae565b005b6102eb610a59565b6040516102f891906112c4565b60405180910390f35b610309610a7e565b6040516103169190611405565b60405180910390f35b61033960048036038101906103349190611307565b610a91565b005b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c190611512565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610414610b13565b61041d81610b91565b50565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a690611512565b60405180910390fd5b8060048190555050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105215761051a8383600c610c9c565b90506105bf565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a79061157a565b60405180910390fd5b6105bc8383600c610c9c565b90505b92915050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610606610e1f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b60055f9054906101000a900460ff1681565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107185760055f9054906101000a900460ff16156106df576106d88383600454610c9c565b9050610713565b600560019054906101000a900460ff1615610705576106fe8383610e26565b9050610712565b61070f8383610fe1565b90505b5b610804565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e9061157a565b60405180910390fd5b60055f9054906101000a900460ff16156107cf576107c88383600454610c9c565b9050610803565b600560019054906101000a900460ff16156107f5576107ee8383610e26565b9050610802565b6107ff8383610fe1565b90505b5b5b92915050565b610812610b13565b61081b5f611160565b565b610825610b13565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a35f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610970575f80fd5b505af1158015610982573d5f803e3d5ffd5b50505050565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490611512565b60405180910390fd5b8060055f6101000a81548160ff02191690831515021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560019054906101000a900460ff1681565b610a99610b13565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90611608565b60405180910390fd5b610b1081611160565b50565b610b1b610e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b396108e2565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690611670565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf6906116fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb31db6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2d9190611730565b905080831115610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d69906117a5565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e8cc04b8787876040518463ffffffff1660e01b8152600401610dd2939291906117c3565b602060405180830381865afa158015610ded573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e119190611730565b905080925050509392505050565b5f33905090565b5f805f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610e94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb89190611874565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691505080925081935050505f8214158015610ef757505f8114155b610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061190e565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f140a35a86886040518363ffffffff1660e01b8152600401610f9492919061192c565b602060405180830381865afa158015610faf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd39190611730565b905080935050505092915050565b5f80600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ebeb31db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110729190611730565b90505f81116110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad906117a5565b60405180910390fd5b5f600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663517b3f8286866040518363ffffffff1660e01b8152600401611114929190611953565b602060405180830381865afa15801561112f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111539190611730565b9050809250505092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f8115159050919050565b61123981611225565b8114611243575f80fd5b50565b5f8135905061125481611230565b92915050565b5f6020828403121561126f5761126e611221565b5b5f61127c84828501611246565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112ae82611285565b9050919050565b6112be816112a4565b82525050565b5f6020820190506112d75f8301846112b5565b92915050565b6112e6816112a4565b81146112f0575f80fd5b50565b5f81359050611301816112dd565b92915050565b5f6020828403121561131c5761131b611221565b5b5f611329848285016112f3565b91505092915050565b5f819050919050565b61134481611332565b811461134e575f80fd5b50565b5f8135905061135f8161133b565b92915050565b5f6020828403121561137a57611379611221565b5b5f61138784828501611351565b91505092915050565b5f80604083850312156113a6576113a5611221565b5b5f6113b3858286016112f3565b92505060206113c485828601611351565b9150509250929050565b6113d781611332565b82525050565b5f6020820190506113f05f8301846113ce565b92915050565b6113ff81611225565b82525050565b5f6020820190506114185f8301846113f6565b92915050565b5f819050919050565b5f61144161143c61143784611285565b61141e565b611285565b9050919050565b5f61145282611427565b9050919050565b5f61146382611448565b9050919050565b61147381611459565b82525050565b5f60208201905061148c5f83018461146a565b92915050565b5f82825260208201905092915050565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f7065725f8201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b5f6114fc602483611492565b9150611507826114a2565b604082019050919050565b5f6020820190508181035f830152611529816114f0565b9050919050565b7f4f7261636c653a20496e76616c696420746f6b656e00000000000000000000005f82015250565b5f611564601583611492565b915061156f82611530565b602082019050919050565b5f6020820190508181035f83015261159181611558565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6115f2602683611492565b91506115fd82611598565b604082019050919050565b5f6020820190508181035f83015261161f816115e6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61165a602083611492565b915061166582611626565b602082019050919050565b5f6020820190508181035f8301526116878161164e565b9050919050565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f725f8201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b5f6116e8602d83611492565b91506116f38261168e565b604082019050919050565b5f6020820190508181035f830152611715816116dc565b9050919050565b5f8151905061172a8161133b565b92915050565b5f6020828403121561174557611744611221565b5b5f6117528482850161171c565b91505092915050565b7f4f7261636c653a204e6f7420656e6f756768206f62736572766174696f6e73005f82015250565b5f61178f601f83611492565b915061179a8261175b565b602082019050919050565b5f6020820190508181035f8301526117bc81611783565b9050919050565b5f6060820190506117d65f8301866112b5565b6117e360208301856113ce565b6117f060408301846113ce565b949350505050565b5f6dffffffffffffffffffffffffffff82169050919050565b61181a816117f8565b8114611824575f80fd5b50565b5f8151905061183581611811565b92915050565b5f63ffffffff82169050919050565b6118538161183b565b811461185d575f80fd5b50565b5f8151905061186e8161184a565b92915050565b5f805f6060848603121561188b5761188a611221565b5b5f61189886828701611827565b93505060206118a986828701611827565b92505060406118ba86828701611860565b9150509250925092565b7f4f7261636c653a204e6f207265736572766573000000000000000000000000005f82015250565b5f6118f8601383611492565b9150611903826118c4565b602082019050919050565b5f6020820190508181035f830152611925816118ec565b9050919050565b5f60408201905061193f5f8301856113ce565b61194c60208301846112b5565b9392505050565b5f6040820190506119665f8301856112b5565b61197360208301846113ce565b939250505056fea2646970667358221220a114c9fa90a311563d271a30260322bdb0d0bafe284d7774864a6e64f341119664736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003914d28997764c21545f5e456928a824a73d7ea3
-----Decoded View---------------
Arg [0] : _pair (address): 0x3914D28997764C21545f5E456928A824a73D7Ea3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003914d28997764c21545f5e456928a824a73d7ea3
Deployed Bytecode Sourcemap
17011:4121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21003:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17088:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10868:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20775:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17716:366;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10760:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10532:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17144:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17220:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18090:957;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9416:103;;;:::i;:::-;;11256:145;;;:::i;:::-;;8775:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17651:57;;;:::i;:::-;;17295:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20901:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17116:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17254:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9674:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21003:126;10681:10;10668:23;;:9;;;;;;;;;;;:23;;;10660:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21105:16:::1;21087:15;;:34;;;;;;;;;;;;;;;;;;21003:126:::0;:::o;17088:21::-;;;;;;;;;;;;;:::o;10868:115::-;8661:13;:11;:13::i;:::-;10944:31:::1;10962:12;10944:17;:31::i;:::-;10868:115:::0;:::o;20775:118::-;10681:10;10668:23;;:9;;;;;;;;;;;:23;;;10660:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20873:12:::1;20854:16;:31;;;;20775:118:::0;:::o;17716:366::-;17816:17;17860:6;;;;;;;;;;;17850:16;;:6;:16;;;17846:229;;17895:29;17902:6;17910:9;17921:2;17895:6;:29::i;:::-;17883:41;;17846:229;;;17975:6;;;;;;;;;;;17965:16;;:6;:16;;;17957:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18034:29;18041:6;18049:9;18060:2;18034:6;:29::i;:::-;18022:41;;17846:229;17716:366;;;;:::o;10760:100::-;10803:4;10843:9;;;;;;;;;;;10827:25;;:12;:10;:12::i;:::-;:25;;;10820:32;;10760:100;:::o;10532:85::-;10573:7;10600:9;;;;;;;;;;;10593:16;;10532:85;:::o;17144:35::-;;;;:::o;17220:27::-;;;;;;;;;;;;;:::o;18090:957::-;18187:17;18231:6;;;;;;;;;;;18221:16;;:6;:16;;;18217:823;;18258:7;;;;;;;;;;;18254:339;;;18298:43;18305:6;18313:9;18324:16;;18298:6;:43::i;:::-;18286:55;;18254:339;;;18386:15;;;;;;;;;;;18382:196;;;18438:32;18452:6;18460:9;18438:13;:32::i;:::-;18426:44;;18382:196;;;18531:27;18540:6;18548:9;18531:8;:27::i;:::-;18519:39;;18382:196;18254:339;18217:823;;;18643:6;;;;;;;;;;;18633:16;;:6;:16;;;18625:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;18694:7;;;;;;;;;;;18690:339;;;18734:43;18741:6;18749:9;18760:16;;18734:6;:43::i;:::-;18722:55;;18690:339;;;18822:15;;;;;;;;;;;18818:196;;;18874:32;18888:6;18896:9;18874:13;:32::i;:::-;18862:44;;18818:196;;;18967:27;18976:6;18984:9;18967:8;:27::i;:::-;18955:39;;18818:196;18690:339;18217:823;18090:957;;;;:::o;9416:103::-;8661:13;:11;:13::i;:::-;9481:30:::1;9508:1;9481:18;:30::i;:::-;9416:103::o:0;11256:145::-;8661:13;:11;:13::i;:::-;11357:1:::1;11318:42;;11338:9;;;;;;;;;;;11318:42;;;;;;;;;;;;11391:1;11371:9;;:22;;;;;;;;;;;;;;;;;;11256:145::o:0;8775:87::-;8821:7;8848:6;;;;;;;;;;;8841:13;;8775:87;:::o;17651:57::-;17689:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17651:57::o;17295:17::-;;;;;;;;;;;;;:::o;20901:94::-;10681:10;10668:23;;:9;;;;;;;;;;;:23;;;10660:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20979:8:::1;20969:7;;:18;;;;;;;;;;;;;;;;;;20901:94:::0;:::o;17116:21::-;;;;;;;;;;;;;:::o;17254:34::-;;;;;;;;;;;;;:::o;9674:201::-;8661:13;:11;:13::i;:::-;9783:1:::1;9763:22;;:8;:22;;::::0;9755:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9839:28;9858:8;9839:18;:28::i;:::-;9674:201:::0;:::o;8940:132::-;9015:12;:10;:12::i;:::-;9004:23;;:7;:5;:7::i;:::-;:23;;;8996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8940:132::o;10991:257::-;11092:1;11068:26;;:12;:26;;;11060:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;11192:12;11160:45;;11188:1;11160:45;;;;;;;;;;;;11228:12;11216:9;;:24;;;;;;;;;;;;;;;;;;10991:257;:::o;19181:491::-;19345:17;19375:25;19409:4;;;;;;;;;;;19403:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19375:59;;19482:17;19467:11;:32;;19445:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;19571:13;19593:4;;;;;;;;;;;19587:17;;;19605:7;19614:8;19624:11;19587:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19571:65;;19659:5;19647:17;;19364:308;;19181:491;;;;;:::o;7375:98::-;7428:7;7455:10;7448:17;;7375:98;:::o;19806:421::-;19912:17;19942:16;19969;20027:4;;;;;;;;;;;20021:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19996:50;;;;;;;;;;;;;;;;;;;20077:1;20065:8;:13;;:30;;;;;20094:1;20082:8;:13;;20065:30;20057:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20132:13;20154:4;;;;;;;;;;;20148:24;;;20173:8;20183:7;20148:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20132:59;;20214:5;20202:17;;19931:296;;;19806:421;;;;:::o;20361:406::-;20462:17;20492:25;20526:4;;;;;;;;;;;20520:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20492:59;;20604:1;20584:17;:21;20562:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;20677:13;20699:4;;;;;;;;;;;20693:19;;;20713:7;20722:8;20693:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20677:54;;20754:5;20742:17;;20481:286;;20361:406;;;;:::o;10035:191::-;10109:16;10128:6;;;;;;;;;;;10109:25;;10154:8;10145:6;;:17;;;;;;;;;;;;;;;;;;10209:8;10178:40;;10199:8;10178:40;;;;;;;;;;;;10098:128;10035:191;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:126::-;1057:7;1097:42;1090:5;1086:54;1075:65;;1020:126;;;:::o;1152:96::-;1189:7;1218:24;1236:5;1218:24;:::i;:::-;1207:35;;1152:96;;;:::o;1254:118::-;1341:24;1359:5;1341:24;:::i;:::-;1336:3;1329:37;1254:118;;:::o;1378:222::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1522:71;1590:1;1579:9;1575:17;1566:6;1522:71;:::i;:::-;1378:222;;;;:::o;1606:122::-;1679:24;1697:5;1679:24;:::i;:::-;1672:5;1669:35;1659:63;;1718:1;1715;1708:12;1659:63;1606:122;:::o;1734:139::-;1780:5;1818:6;1805:20;1796:29;;1834:33;1861:5;1834:33;:::i;:::-;1734:139;;;;:::o;1879:329::-;1938:6;1987:2;1975:9;1966:7;1962:23;1958:32;1955:119;;;1993:79;;:::i;:::-;1955:119;2113:1;2138:53;2183:7;2174:6;2163:9;2159:22;2138:53;:::i;:::-;2128:63;;2084:117;1879:329;;;;:::o;2214:77::-;2251:7;2280:5;2269:16;;2214:77;;;:::o;2297:122::-;2370:24;2388:5;2370:24;:::i;:::-;2363:5;2360:35;2350:63;;2409:1;2406;2399:12;2350:63;2297:122;:::o;2425:139::-;2471:5;2509:6;2496:20;2487:29;;2525:33;2552:5;2525:33;:::i;:::-;2425:139;;;;:::o;2570:329::-;2629:6;2678:2;2666:9;2657:7;2653:23;2649:32;2646:119;;;2684:79;;:::i;:::-;2646:119;2804:1;2829:53;2874:7;2865:6;2854:9;2850:22;2829:53;:::i;:::-;2819:63;;2775:117;2570:329;;;;:::o;2905:474::-;2973:6;2981;3030:2;3018:9;3009:7;3005:23;3001:32;2998:119;;;3036:79;;:::i;:::-;2998:119;3156:1;3181:53;3226:7;3217:6;3206:9;3202:22;3181:53;:::i;:::-;3171:63;;3127:117;3283:2;3309:53;3354:7;3345:6;3334:9;3330:22;3309:53;:::i;:::-;3299:63;;3254:118;2905:474;;;;;:::o;3385:118::-;3472:24;3490:5;3472:24;:::i;:::-;3467:3;3460:37;3385:118;;:::o;3509:222::-;3602:4;3640:2;3629:9;3625:18;3617:26;;3653:71;3721:1;3710:9;3706:17;3697:6;3653:71;:::i;:::-;3509:222;;;;:::o;3737:109::-;3818:21;3833:5;3818:21;:::i;:::-;3813:3;3806:34;3737:109;;:::o;3852:210::-;3939:4;3977:2;3966:9;3962:18;3954:26;;3990:65;4052:1;4041:9;4037:17;4028:6;3990:65;:::i;:::-;3852:210;;;;:::o;4068:60::-;4096:3;4117:5;4110:12;;4068:60;;;:::o;4134:142::-;4184:9;4217:53;4235:34;4244:24;4262:5;4244:24;:::i;:::-;4235:34;:::i;:::-;4217:53;:::i;:::-;4204:66;;4134:142;;;:::o;4282:126::-;4332:9;4365:37;4396:5;4365:37;:::i;:::-;4352:50;;4282:126;;;:::o;4414:139::-;4477:9;4510:37;4541:5;4510:37;:::i;:::-;4497:50;;4414:139;;;:::o;4559:157::-;4659:50;4703:5;4659:50;:::i;:::-;4654:3;4647:63;4559:157;;:::o;4722:248::-;4828:4;4866:2;4855:9;4851:18;4843:26;;4879:84;4960:1;4949:9;4945:17;4936:6;4879:84;:::i;:::-;4722:248;;;;:::o;4976:169::-;5060:11;5094:6;5089:3;5082:19;5134:4;5129:3;5125:14;5110:29;;4976:169;;;;:::o;5151:223::-;5291:34;5287:1;5279:6;5275:14;5268:58;5360:6;5355:2;5347:6;5343:15;5336:31;5151:223;:::o;5380:366::-;5522:3;5543:67;5607:2;5602:3;5543:67;:::i;:::-;5536:74;;5619:93;5708:3;5619:93;:::i;:::-;5737:2;5732:3;5728:12;5721:19;;5380:366;;;:::o;5752:419::-;5918:4;5956:2;5945:9;5941:18;5933:26;;6005:9;5999:4;5995:20;5991:1;5980:9;5976:17;5969:47;6033:131;6159:4;6033:131;:::i;:::-;6025:139;;5752:419;;;:::o;6177:171::-;6317:23;6313:1;6305:6;6301:14;6294:47;6177:171;:::o;6354:366::-;6496:3;6517:67;6581:2;6576:3;6517:67;:::i;:::-;6510:74;;6593:93;6682:3;6593:93;:::i;:::-;6711:2;6706:3;6702:12;6695:19;;6354:366;;;:::o;6726:419::-;6892:4;6930:2;6919:9;6915:18;6907:26;;6979:9;6973:4;6969:20;6965:1;6954:9;6950:17;6943:47;7007:131;7133:4;7007:131;:::i;:::-;6999:139;;6726:419;;;:::o;7151:225::-;7291:34;7287:1;7279:6;7275:14;7268:58;7360:8;7355:2;7347:6;7343:15;7336:33;7151:225;:::o;7382:366::-;7524:3;7545:67;7609:2;7604:3;7545:67;:::i;:::-;7538:74;;7621:93;7710:3;7621:93;:::i;:::-;7739:2;7734:3;7730:12;7723:19;;7382:366;;;:::o;7754:419::-;7920:4;7958:2;7947:9;7943:18;7935:26;;8007:9;8001:4;7997:20;7993:1;7982:9;7978:17;7971:47;8035:131;8161:4;8035:131;:::i;:::-;8027:139;;7754:419;;;:::o;8179:182::-;8319:34;8315:1;8307:6;8303:14;8296:58;8179:182;:::o;8367:366::-;8509:3;8530:67;8594:2;8589:3;8530:67;:::i;:::-;8523:74;;8606:93;8695:3;8606:93;:::i;:::-;8724:2;8719:3;8715:12;8708:19;;8367:366;;;:::o;8739:419::-;8905:4;8943:2;8932:9;8928:18;8920:26;;8992:9;8986:4;8982:20;8978:1;8967:9;8963:17;8956:47;9020:131;9146:4;9020:131;:::i;:::-;9012:139;;8739:419;;;:::o;9164:232::-;9304:34;9300:1;9292:6;9288:14;9281:58;9373:15;9368:2;9360:6;9356:15;9349:40;9164:232;:::o;9402:366::-;9544:3;9565:67;9629:2;9624:3;9565:67;:::i;:::-;9558:74;;9641:93;9730:3;9641:93;:::i;:::-;9759:2;9754:3;9750:12;9743:19;;9402:366;;;:::o;9774:419::-;9940:4;9978:2;9967:9;9963:18;9955:26;;10027:9;10021:4;10017:20;10013:1;10002:9;9998:17;9991:47;10055:131;10181:4;10055:131;:::i;:::-;10047:139;;9774:419;;;:::o;10199:143::-;10256:5;10287:6;10281:13;10272:22;;10303:33;10330:5;10303:33;:::i;:::-;10199:143;;;;:::o;10348:351::-;10418:6;10467:2;10455:9;10446:7;10442:23;10438:32;10435:119;;;10473:79;;:::i;:::-;10435:119;10593:1;10618:64;10674:7;10665:6;10654:9;10650:22;10618:64;:::i;:::-;10608:74;;10564:128;10348:351;;;;:::o;10705:181::-;10845:33;10841:1;10833:6;10829:14;10822:57;10705:181;:::o;10892:366::-;11034:3;11055:67;11119:2;11114:3;11055:67;:::i;:::-;11048:74;;11131:93;11220:3;11131:93;:::i;:::-;11249:2;11244:3;11240:12;11233:19;;10892:366;;;:::o;11264:419::-;11430:4;11468:2;11457:9;11453:18;11445:26;;11517:9;11511:4;11507:20;11503:1;11492:9;11488:17;11481:47;11545:131;11671:4;11545:131;:::i;:::-;11537:139;;11264:419;;;:::o;11689:442::-;11838:4;11876:2;11865:9;11861:18;11853:26;;11889:71;11957:1;11946:9;11942:17;11933:6;11889:71;:::i;:::-;11970:72;12038:2;12027:9;12023:18;12014:6;11970:72;:::i;:::-;12052;12120:2;12109:9;12105:18;12096:6;12052:72;:::i;:::-;11689:442;;;;;;:::o;12137:114::-;12174:7;12214:30;12207:5;12203:42;12192:53;;12137:114;;;:::o;12257:122::-;12330:24;12348:5;12330:24;:::i;:::-;12323:5;12320:35;12310:63;;12369:1;12366;12359:12;12310:63;12257:122;:::o;12385:143::-;12442:5;12473:6;12467:13;12458:22;;12489:33;12516:5;12489:33;:::i;:::-;12385:143;;;;:::o;12534:93::-;12570:7;12610:10;12603:5;12599:22;12588:33;;12534:93;;;:::o;12633:120::-;12705:23;12722:5;12705:23;:::i;:::-;12698:5;12695:34;12685:62;;12743:1;12740;12733:12;12685:62;12633:120;:::o;12759:141::-;12815:5;12846:6;12840:13;12831:22;;12862:32;12888:5;12862:32;:::i;:::-;12759:141;;;;:::o;12906:661::-;12993:6;13001;13009;13058:2;13046:9;13037:7;13033:23;13029:32;13026:119;;;13064:79;;:::i;:::-;13026:119;13184:1;13209:64;13265:7;13256:6;13245:9;13241:22;13209:64;:::i;:::-;13199:74;;13155:128;13322:2;13348:64;13404:7;13395:6;13384:9;13380:22;13348:64;:::i;:::-;13338:74;;13293:129;13461:2;13487:63;13542:7;13533:6;13522:9;13518:22;13487:63;:::i;:::-;13477:73;;13432:128;12906:661;;;;;:::o;13573:169::-;13713:21;13709:1;13701:6;13697:14;13690:45;13573:169;:::o;13748:366::-;13890:3;13911:67;13975:2;13970:3;13911:67;:::i;:::-;13904:74;;13987:93;14076:3;13987:93;:::i;:::-;14105:2;14100:3;14096:12;14089:19;;13748:366;;;:::o;14120:419::-;14286:4;14324:2;14313:9;14309:18;14301:26;;14373:9;14367:4;14363:20;14359:1;14348:9;14344:17;14337:47;14401:131;14527:4;14401:131;:::i;:::-;14393:139;;14120:419;;;:::o;14545:332::-;14666:4;14704:2;14693:9;14689:18;14681:26;;14717:71;14785:1;14774:9;14770:17;14761:6;14717:71;:::i;:::-;14798:72;14866:2;14855:9;14851:18;14842:6;14798:72;:::i;:::-;14545:332;;;;;:::o;14883:::-;15004:4;15042:2;15031:9;15027:18;15019:26;;15055:71;15123:1;15112:9;15108:17;15099:6;15055:71;:::i;:::-;15136:72;15204:2;15193:9;15189:18;15180:6;15136:72;:::i;:::-;14883:332;;;;;:::o
Swarm Source
ipfs://a114c9fa90a311563d271a30260322bdb0d0bafe284d7774864a6e64f3411196
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.