S Price: $0.432954 (-0.98%)

Contract

0x6873cb84Cedc7DfDE0f933b3a7B52D1e0660F639

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Compound11568902024-12-22 8:42:40106 days ago1734856960IN
0x6873cb84...e0660F639
0 S0.000048351.1
Claim Rewards11567512024-12-22 8:41:18106 days ago1734856878IN
0x6873cb84...e0660F639
0 S0.000101071.1
Claim Rewards11566162024-12-22 8:40:06106 days ago1734856806IN
0x6873cb84...e0660F639
0 S0.000109991.1
Claim Rewards11565402024-12-22 8:39:20106 days ago1734856760IN
0x6873cb84...e0660F639
0 S0.000362841.1
Deposit11565092024-12-22 8:38:57106 days ago1734856737IN
0x6873cb84...e0660F639
0 S0.000105041.1
Compound11563482024-12-22 8:37:14106 days ago1734856634IN
0x6873cb84...e0660F639
0 S0.000048351.1
Deposit11562462024-12-22 8:36:07106 days ago1734856567IN
0x6873cb84...e0660F639
0 S0.000265351.1

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakingWithOptionalReferral

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2024-12-22
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// Address library from OpenZeppelin
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// SafeERC20 from OpenZeppelin
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// Context from OpenZeppelin
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// ReentrancyGuard from OpenZeppelin
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/// @title StakingWithOptionalReferral - A staking contract for SANIC tokens with optional referrals and robust security.
contract StakingWithOptionalReferral is ReentrancyGuard {
    using SafeERC20 for IERC20;

    IERC20 public sanicToken; // Token to be staked
    address public feeRecipient; // Address to receive fees
    address public owner; // Contract owner

    uint256 public dailyRewardRate = 8; // 8% daily rewards
    uint256 public depositFee = 5; // 5% deposit fee
    uint256 public referralFee = 12; // 12% referral bonus
    uint256 public claimCooldown = 1 minutes; // Cooldown period for claiming rewards
    uint256 public penaltyCooldown = 24 hours; // Time window for penalty enforcement
    uint256 public penaltyRate = 50; // 50% penalty on rewards for early claims

    struct User {
        uint256 depositedAmount;
        uint256 lastClaimTime;
        uint256 lastWithdrawalTime;
    }

    mapping(address => User) public users;
    mapping(address => address) public referrers;
    mapping(address => bool) public hasBeenReferred;

    uint256 public totalDeposits;

    event Deposit(address indexed user, uint256 amount, uint256 netAmount, address indexed referrer);
    event ClaimRewards(address indexed user, uint256 reward, uint256 penalty);
    event Compound(address indexed user, uint256 compoundedAmount);
    event ReferralBonusPaid(address indexed referrer, uint256 bonus);
    event TokenUpdated(address indexed oldToken, address indexed newToken);
    event FeeRecipientUpdated(address indexed oldRecipient, address indexed newRecipient);

    modifier onlyOwner() {
        require(msg.sender == owner, "Not authorized");
        _;
    }

    constructor(address _sanicToken, address _feeRecipient) {
        require(_sanicToken != address(0), "Invalid token address");
        require(_feeRecipient != address(0), "Invalid fee recipient address");

        sanicToken = IERC20(_sanicToken);
        feeRecipient = _feeRecipient;
        owner = msg.sender;
    }

    function deposit(uint256 _amount, address _referrer) external nonReentrant {
        require(_amount > 0, "Deposit amount must be greater than zero");

        uint256 allowance = sanicToken.allowance(msg.sender, address(this));
        require(allowance >= _amount, "Token allowance too low");

        sanicToken.safeTransferFrom(msg.sender, address(this), _amount);

        uint256 fee = (_amount * depositFee) / 100;
        uint256 netAmount = _amount - fee;

        sanicToken.safeTransfer(feeRecipient, fee);

        if (_referrer != address(0) && _referrer != msg.sender) {
            require(!hasBeenReferred[msg.sender], "User has already been referred");
            uint256 referralBonus = (_amount * referralFee) / 100;
            sanicToken.safeTransfer(_referrer, referralBonus);
            referrers[msg.sender] = _referrer;
            hasBeenReferred[msg.sender] = true;

            emit ReferralBonusPaid(_referrer, referralBonus);
        }

        User storage user = users[msg.sender];
        user.depositedAmount += netAmount;
        user.lastClaimTime = block.timestamp;
        user.lastWithdrawalTime = 0; // Reset withdrawal time on deposit
        totalDeposits += netAmount;

        emit Deposit(msg.sender, _amount, netAmount, _referrer);
    }

    function claimRewards() external nonReentrant {
    User storage user = users[msg.sender];
    require(user.depositedAmount > 0, "No deposits found");
    require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

    uint256 rewards = calculateRewards(msg.sender);
    require(rewards > 0, "No rewards available");

    uint256 penalty = 0;
    if (block.timestamp < user.lastWithdrawalTime + penaltyCooldown) {
        penalty = (rewards * penaltyRate) / 100;
    }

    uint256 withdrawalFee = (rewards * 5) / 100; // 5% withdrawal fee
    uint256 netRewards = rewards - penalty - withdrawalFee;

    user.lastClaimTime = block.timestamp;
    user.lastWithdrawalTime = block.timestamp;

    sanicToken.safeTransfer(feeRecipient, withdrawalFee); // Send withdrawal fee to feeRecipient
    if (penalty > 0) {
        sanicToken.safeTransfer(feeRecipient, penalty); // Send penalty to feeRecipient
    }
    sanicToken.safeTransfer(msg.sender, netRewards); // Send remaining rewards to user

    emit ClaimRewards(msg.sender, netRewards, penalty);
    }


    function calculateRewards(address _user) public view returns (uint256) {
        User memory user = users[_user];
        uint256 elapsedTime = block.timestamp - user.lastClaimTime;
        uint256 dailyRewards = (user.depositedAmount * dailyRewardRate) / 100;
        return (dailyRewards * elapsedTime) / 1 days;
    }

    function compound() external nonReentrant {
        User storage user = users[msg.sender];
        require(user.depositedAmount > 0, "No deposits found");
        require(block.timestamp >= user.lastClaimTime + claimCooldown, "Claim cooldown active");

        uint256 rewards = calculateRewards(msg.sender);
        require(rewards > 0, "No rewards available");

        user.depositedAmount += rewards; // Add rewards to deposit
        user.lastClaimTime = block.timestamp;

        emit Compound(msg.sender, rewards);
    }

    function getTotalDeposited() external view returns (uint256) {
        return totalDeposits;
    }

    function updateToken(address _newToken) external onlyOwner {
        require(_newToken != address(0), "Invalid token address");
        address oldToken = address(sanicToken);
        sanicToken = IERC20(_newToken);
        emit TokenUpdated(oldToken, _newToken);
    }

    function getTVL() external view returns (uint256) {
    return sanicToken.balanceOf(address(this));
    }


    function updateFeeRecipient(address _newRecipient) external onlyOwner {
        require(_newRecipient != address(0), "Invalid fee recipient address");
        address oldRecipient = feeRecipient;
        feeRecipient = _newRecipient;
        emit FeeRecipientUpdated(oldRecipient, _newRecipient);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_sanicToken","type":"address"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"penalty","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"compoundedAmount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRecipient","type":"address"},{"indexed":true,"internalType":"address","name":"newRecipient","type":"address"}],"name":"FeeRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"bonus","type":"uint256"}],"name":"ReferralBonusPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"TokenUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTVL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasBeenReferred","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penaltyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sanicToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newRecipient","type":"address"}],"name":"updateFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newToken","type":"address"}],"name":"updateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"depositedAmount","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"lastWithdrawalTime","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600860045560058055600c600655603c60075562015180600855603260095534801561002e575f80fd5b5060405161267538038061267583398181016040528101906100509190610258565b60015f819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100bc906102f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012a90610358565b60405180910390fd5b8160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610376565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610227826101fe565b9050919050565b6102378161021d565b8114610241575f80fd5b50565b5f815190506102528161022e565b92915050565b5f806040838503121561026e5761026d6101fa565b5b5f61027b85828601610244565b925050602061028c85828601610244565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6102da601583610296565b91506102e5826102a6565b602082019050919050565b5f6020820190508181035f830152610307816102ce565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f610342601d83610296565b915061034d8261030e565b602082019050919050565b5f6020820190508181035f83015261036f81610336565b9050919050565b6122f2806103835f395ff3fe608060405234801561000f575f80fd5b5060043610610135575f3560e01c806397b3fcaa116100b6578063d62c11641161007a578063d62c11641461031b578063d6b7494f1461034b578063f160d36914610369578063f69e204614610385578063f71280241461038f578063fdea3657146103ad57610135565b806397b3fcaa14610271578063a48b3a521461028f578063a87430ba146102ad578063b68ef559146102df578063c1e3d2dd146102fd57610135565b80636e553f65116100fd5780636e553f65146101df5780637ad3def2146101fb5780637d8820971461021757806384ae2bc6146102355780638da5cb5b1461025357610135565b8063372500ab1461013957806346904840146101435780634a3b68cc1461016157806364ab86751461019157806367a52793146101c1575b5f80fd5b6101416103cb565b005b61014b610749565b6040516101589190611850565b60405180910390f35b61017b60048036038101906101769190611897565b61076e565b6040516101889190611850565b60405180910390f35b6101ab60048036038101906101a69190611897565b61079e565b6040516101b891906118da565b60405180910390f35b6101c961085e565b6040516101d691906118da565b60405180910390f35b6101f960048036038101906101f4919061191d565b610864565b005b61021560048036038101906102109190611897565b610e32565b005b61021f610ff2565b60405161022c91906118da565b60405180910390f35b61023d610ff8565b60405161024a91906118da565b60405180910390f35b61025b610ffe565b6040516102689190611850565b60405180910390f35b610279611023565b60405161028691906118da565b60405180910390f35b6102976110c2565b6040516102a491906118da565b60405180910390f35b6102c760048036038101906102c29190611897565b6110c8565b6040516102d69392919061195b565b60405180910390f35b6102e76110ee565b6040516102f491906118da565b60405180910390f35b6103056110f7565b60405161031291906118da565b60405180910390f35b61033560048036038101906103309190611897565b6110fd565b60405161034291906119aa565b60405180910390f35b61035361111a565b60405161036091906118da565b60405180910390f35b610383600480360381019061037e9190611897565b611120565b005b61038d6112e0565b005b6103976114cd565b6040516103a49190611a1e565b60405180910390f35b6103b56114f2565b6040516103c291906118da565b60405180910390f35b60025f540361040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690611a91565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049290611af9565b60405180910390fd5b60075481600101546104ad9190611b44565b4210156104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611bc1565b60405180910390fd5b5f6104f93361079e565b90505f811161053d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053490611c29565b60405180910390fd5b5f60085483600201546105509190611b44565b421015610574576064600954836105679190611c47565b6105719190611cb5565b90505b5f60646005846105849190611c47565b61058e9190611cb5565b90505f81838561059e9190611ce5565b6105a89190611ce5565b905042856001018190555042856002018190555061062960025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5f83111561069f5761069e60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5b6106eb338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f8285604051610733929190611d18565b60405180910390a2505050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f8160200151426108189190611ce5565b90505f6064600454845f015161082e9190611c47565b6108389190611cb5565b905062015180828261084a9190611c47565b6108549190611cb5565b9350505050919050565b60055481565b60025f54036108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f90611a91565b60405180910390fd5b60025f819055505f82116108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890611daf565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161094e929190611dcd565b602060405180830381865afa158015610969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098d9190611e08565b9050828110156109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611e7d565b60405180910390fd5b610a2033308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661157e909392919063ffffffff16565b5f606460055485610a319190611c47565b610a3b9190611cb5565b90505f8185610a4a9190611ce5565b9050610ab960025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610b2157503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d3957600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790611ee5565b60405180910390fd5b5f606460065487610bc19190611c47565b610bcb9190611cb5565b9050610c19858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610d2f91906118da565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610d8b9190611b44565b925050819055504281600101819055505f816002018190555081600d5f828254610db59190611b44565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610e1b929190611d18565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890611f4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690611fb5565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161107e9190611850565b602060405180830381865afa158015611099573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bd9190611e08565b905090565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690611f4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112149061201d565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f5403611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90611a91565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f0154116113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790611af9565b60405180910390fd5b60075481600101546113c29190611b44565b421015611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90611bc1565b60405180910390fd5b5f61140e3361079e565b90505f8111611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990611c29565b60405180910390fd5b80825f015f8282546114649190611b44565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556826040516114ba91906118da565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6115798363a9059cbb60e01b848460405160240161151792919061203b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611607565b505050565b611601846323b872dd60e01b85858560405160240161159f93929190612062565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611607565b50505050565b5f611668826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116cc9092919063ffffffff16565b90505f815111156116c7578080602001905181019061168791906120c1565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd9061215c565b60405180910390fd5b5b505050565b60606116da84845f856116e3565b90509392505050565b60606116ee85611800565b61172d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611724906121c4565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516117559190612234565b5f6040518083038185875af1925050503d805f811461178f576040519150601f19603f3d011682016040523d82523d5f602084013e611794565b606091505b509150915081156117a95780925050506117f8565b5f815111156117bb5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef919061229c565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61183a82611811565b9050919050565b61184a81611830565b82525050565b5f6020820190506118635f830184611841565b92915050565b5f80fd5b61187681611830565b8114611880575f80fd5b50565b5f813590506118918161186d565b92915050565b5f602082840312156118ac576118ab611869565b5b5f6118b984828501611883565b91505092915050565b5f819050919050565b6118d4816118c2565b82525050565b5f6020820190506118ed5f8301846118cb565b92915050565b6118fc816118c2565b8114611906575f80fd5b50565b5f81359050611917816118f3565b92915050565b5f806040838503121561193357611932611869565b5b5f61194085828601611909565b925050602061195185828601611883565b9150509250929050565b5f60608201905061196e5f8301866118cb565b61197b60208301856118cb565b61198860408301846118cb565b949350505050565b5f8115159050919050565b6119a481611990565b82525050565b5f6020820190506119bd5f83018461199b565b92915050565b5f819050919050565b5f6119e66119e16119dc84611811565b6119c3565b611811565b9050919050565b5f6119f7826119cc565b9050919050565b5f611a08826119ed565b9050919050565b611a18816119fe565b82525050565b5f602082019050611a315f830184611a0f565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611a7b601f83611a37565b9150611a8682611a47565b602082019050919050565b5f6020820190508181035f830152611aa881611a6f565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f611ae3601183611a37565b9150611aee82611aaf565b602082019050919050565b5f6020820190508181035f830152611b1081611ad7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b4e826118c2565b9150611b59836118c2565b9250828201905080821115611b7157611b70611b17565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611bab601583611a37565b9150611bb682611b77565b602082019050919050565b5f6020820190508181035f830152611bd881611b9f565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611c13601483611a37565b9150611c1e82611bdf565b602082019050919050565b5f6020820190508181035f830152611c4081611c07565b9050919050565b5f611c51826118c2565b9150611c5c836118c2565b9250828202611c6a816118c2565b91508282048414831517611c8157611c80611b17565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611cbf826118c2565b9150611cca836118c2565b925082611cda57611cd9611c88565b5b828204905092915050565b5f611cef826118c2565b9150611cfa836118c2565b9250828203905081811115611d1257611d11611b17565b5b92915050565b5f604082019050611d2b5f8301856118cb565b611d3860208301846118cb565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611d99602883611a37565b9150611da482611d3f565b604082019050919050565b5f6020820190508181035f830152611dc681611d8d565b9050919050565b5f604082019050611de05f830185611841565b611ded6020830184611841565b9392505050565b5f81519050611e02816118f3565b92915050565b5f60208284031215611e1d57611e1c611869565b5b5f611e2a84828501611df4565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611e67601783611a37565b9150611e7282611e33565b602082019050919050565b5f6020820190508181035f830152611e9481611e5b565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611ecf601e83611a37565b9150611eda82611e9b565b602082019050919050565b5f6020820190508181035f830152611efc81611ec3565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611f37600e83611a37565b9150611f4282611f03565b602082019050919050565b5f6020820190508181035f830152611f6481611f2b565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611f9f601583611a37565b9150611faa82611f6b565b602082019050919050565b5f6020820190508181035f830152611fcc81611f93565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f612007601d83611a37565b915061201282611fd3565b602082019050919050565b5f6020820190508181035f83015261203481611ffb565b9050919050565b5f60408201905061204e5f830185611841565b61205b60208301846118cb565b9392505050565b5f6060820190506120755f830186611841565b6120826020830185611841565b61208f60408301846118cb565b949350505050565b6120a081611990565b81146120aa575f80fd5b50565b5f815190506120bb81612097565b92915050565b5f602082840312156120d6576120d5611869565b5b5f6120e3848285016120ad565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f612146602a83611a37565b9150612151826120ec565b604082019050919050565b5f6020820190508181035f8301526121738161213a565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6121ae601d83611a37565b91506121b98261217a565b602082019050919050565b5f6020820190508181035f8301526121db816121a2565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61220e826121e2565b61221881856121ec565b93506122288185602086016121f6565b80840191505092915050565b5f61223f8284612204565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f61226e8261224a565b6122788185611a37565b93506122888185602086016121f6565b61229181612254565b840191505092915050565b5f6020820190508181035f8301526122b48184612264565b90509291505056fea264697066735822122015dba43a7280badd7f722279625e04c1d3903c46a7fa805a56b8a928ebb565fb64736f6c634300081a0033000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a0000000000000000000000002f0d46a9b78439427bc2d2bf7e15f27b4c50807d

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610135575f3560e01c806397b3fcaa116100b6578063d62c11641161007a578063d62c11641461031b578063d6b7494f1461034b578063f160d36914610369578063f69e204614610385578063f71280241461038f578063fdea3657146103ad57610135565b806397b3fcaa14610271578063a48b3a521461028f578063a87430ba146102ad578063b68ef559146102df578063c1e3d2dd146102fd57610135565b80636e553f65116100fd5780636e553f65146101df5780637ad3def2146101fb5780637d8820971461021757806384ae2bc6146102355780638da5cb5b1461025357610135565b8063372500ab1461013957806346904840146101435780634a3b68cc1461016157806364ab86751461019157806367a52793146101c1575b5f80fd5b6101416103cb565b005b61014b610749565b6040516101589190611850565b60405180910390f35b61017b60048036038101906101769190611897565b61076e565b6040516101889190611850565b60405180910390f35b6101ab60048036038101906101a69190611897565b61079e565b6040516101b891906118da565b60405180910390f35b6101c961085e565b6040516101d691906118da565b60405180910390f35b6101f960048036038101906101f4919061191d565b610864565b005b61021560048036038101906102109190611897565b610e32565b005b61021f610ff2565b60405161022c91906118da565b60405180910390f35b61023d610ff8565b60405161024a91906118da565b60405180910390f35b61025b610ffe565b6040516102689190611850565b60405180910390f35b610279611023565b60405161028691906118da565b60405180910390f35b6102976110c2565b6040516102a491906118da565b60405180910390f35b6102c760048036038101906102c29190611897565b6110c8565b6040516102d69392919061195b565b60405180910390f35b6102e76110ee565b6040516102f491906118da565b60405180910390f35b6103056110f7565b60405161031291906118da565b60405180910390f35b61033560048036038101906103309190611897565b6110fd565b60405161034291906119aa565b60405180910390f35b61035361111a565b60405161036091906118da565b60405180910390f35b610383600480360381019061037e9190611897565b611120565b005b61038d6112e0565b005b6103976114cd565b6040516103a49190611a1e565b60405180910390f35b6103b56114f2565b6040516103c291906118da565b60405180910390f35b60025f540361040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690611a91565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f01541161049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049290611af9565b60405180910390fd5b60075481600101546104ad9190611b44565b4210156104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611bc1565b60405180910390fd5b5f6104f93361079e565b90505f811161053d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053490611c29565b60405180910390fd5b5f60085483600201546105509190611b44565b421015610574576064600954836105679190611c47565b6105719190611cb5565b90505b5f60646005846105849190611c47565b61058e9190611cb5565b90505f81838561059e9190611ce5565b6105a89190611ce5565b905042856001018190555042856002018190555061062960025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5f83111561069f5761069e60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5b6106eb338260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f674a8930d4166ce2352c3dc1e9ff633595db479f71f3741270a0a73a52cb7b0f8285604051610733929190611d18565b60405180910390a2505050505060015f81905550565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015481526020016001820154815260200160028201548152505090505f8160200151426108189190611ce5565b90505f6064600454845f015161082e9190611c47565b6108389190611cb5565b905062015180828261084a9190611c47565b6108549190611cb5565b9350505050919050565b60055481565b60025f54036108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f90611a91565b60405180910390fd5b60025f819055505f82116108f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e890611daf565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161094e929190611dcd565b602060405180830381865afa158015610969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098d9190611e08565b9050828110156109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990611e7d565b60405180910390fd5b610a2033308560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661157e909392919063ffffffff16565b5f606460055485610a319190611c47565b610a3b9190611cb5565b90505f8185610a4a9190611ce5565b9050610ab960025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610b2157503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d3957600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790611ee5565b60405180910390fd5b5f606460065487610bc19190611c47565b610bcb9190611cb5565b9050610c19858260015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f89092919063ffffffff16565b84600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f050bae3eeefac62a4ee36c766f4f426f09edf96ae8fb3034ebbf961e4acc78e282604051610d2f91906118da565b60405180910390a2505b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254610d8b9190611b44565b925050819055504281600101819055505f816002018190555081600d5f828254610db59190611b44565b925050819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b478885604051610e1b929190611d18565b60405180910390a35050505060015f819055505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890611f4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690611fb5565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0b1186973f810894b87ab0bfbee422fddcaad21b46dc705a561451bbb6bac11760405160405180910390a35050565b600d5481565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161107e9190611850565b602060405180830381865afa158015611099573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bd9190611e08565b905090565b60085481565b600a602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f600d54905090565b60045481565b600c602052805f5260405f205f915054906101000a900460ff1681565b60095481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690611f4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112149061201d565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d360405160405180910390a35050565b60025f5403611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90611a91565b60405180910390fd5b60025f819055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f815f0154116113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790611af9565b60405180910390fd5b60075481600101546113c29190611b44565b421015611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90611bc1565b60405180910390fd5b5f61140e3361079e565b90505f8111611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990611c29565b60405180910390fd5b80825f015f8282546114649190611b44565b925050819055504282600101819055503373ffffffffffffffffffffffffffffffffffffffff167f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556826040516114ba91906118da565b60405180910390a2505060015f81905550565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6115798363a9059cbb60e01b848460405160240161151792919061203b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611607565b505050565b611601846323b872dd60e01b85858560405160240161159f93929190612062565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611607565b50505050565b5f611668826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116cc9092919063ffffffff16565b90505f815111156116c7578080602001905181019061168791906120c1565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd9061215c565b60405180910390fd5b5b505050565b60606116da84845f856116e3565b90509392505050565b60606116ee85611800565b61172d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611724906121c4565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516117559190612234565b5f6040518083038185875af1925050503d805f811461178f576040519150601f19603f3d011682016040523d82523d5f602084013e611794565b606091505b509150915081156117a95780925050506117f8565b5f815111156117bb5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ef919061229c565b60405180910390fd5b949350505050565b5f80823b90505f8111915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61183a82611811565b9050919050565b61184a81611830565b82525050565b5f6020820190506118635f830184611841565b92915050565b5f80fd5b61187681611830565b8114611880575f80fd5b50565b5f813590506118918161186d565b92915050565b5f602082840312156118ac576118ab611869565b5b5f6118b984828501611883565b91505092915050565b5f819050919050565b6118d4816118c2565b82525050565b5f6020820190506118ed5f8301846118cb565b92915050565b6118fc816118c2565b8114611906575f80fd5b50565b5f81359050611917816118f3565b92915050565b5f806040838503121561193357611932611869565b5b5f61194085828601611909565b925050602061195185828601611883565b9150509250929050565b5f60608201905061196e5f8301866118cb565b61197b60208301856118cb565b61198860408301846118cb565b949350505050565b5f8115159050919050565b6119a481611990565b82525050565b5f6020820190506119bd5f83018461199b565b92915050565b5f819050919050565b5f6119e66119e16119dc84611811565b6119c3565b611811565b9050919050565b5f6119f7826119cc565b9050919050565b5f611a08826119ed565b9050919050565b611a18816119fe565b82525050565b5f602082019050611a315f830184611a0f565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611a7b601f83611a37565b9150611a8682611a47565b602082019050919050565b5f6020820190508181035f830152611aa881611a6f565b9050919050565b7f4e6f206465706f7369747320666f756e640000000000000000000000000000005f82015250565b5f611ae3601183611a37565b9150611aee82611aaf565b602082019050919050565b5f6020820190508181035f830152611b1081611ad7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b4e826118c2565b9150611b59836118c2565b9250828201905080821115611b7157611b70611b17565b5b92915050565b7f436c61696d20636f6f6c646f776e2061637469766500000000000000000000005f82015250565b5f611bab601583611a37565b9150611bb682611b77565b602082019050919050565b5f6020820190508181035f830152611bd881611b9f565b9050919050565b7f4e6f207265776172647320617661696c61626c650000000000000000000000005f82015250565b5f611c13601483611a37565b9150611c1e82611bdf565b602082019050919050565b5f6020820190508181035f830152611c4081611c07565b9050919050565b5f611c51826118c2565b9150611c5c836118c2565b9250828202611c6a816118c2565b91508282048414831517611c8157611c80611b17565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611cbf826118c2565b9150611cca836118c2565b925082611cda57611cd9611c88565b5b828204905092915050565b5f611cef826118c2565b9150611cfa836118c2565b9250828203905081811115611d1257611d11611b17565b5b92915050565b5f604082019050611d2b5f8301856118cb565b611d3860208301846118cb565b9392505050565b7f4465706f73697420616d6f756e74206d757374206265206772656174657220745f8201527f68616e207a65726f000000000000000000000000000000000000000000000000602082015250565b5f611d99602883611a37565b9150611da482611d3f565b604082019050919050565b5f6020820190508181035f830152611dc681611d8d565b9050919050565b5f604082019050611de05f830185611841565b611ded6020830184611841565b9392505050565b5f81519050611e02816118f3565b92915050565b5f60208284031215611e1d57611e1c611869565b5b5f611e2a84828501611df4565b91505092915050565b7f546f6b656e20616c6c6f77616e636520746f6f206c6f770000000000000000005f82015250565b5f611e67601783611a37565b9150611e7282611e33565b602082019050919050565b5f6020820190508181035f830152611e9481611e5b565b9050919050565b7f557365722068617320616c7265616479206265656e20726566657272656400005f82015250565b5f611ecf601e83611a37565b9150611eda82611e9b565b602082019050919050565b5f6020820190508181035f830152611efc81611ec3565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f611f37600e83611a37565b9150611f4282611f03565b602082019050919050565b5f6020820190508181035f830152611f6481611f2b565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f611f9f601583611a37565b9150611faa82611f6b565b602082019050919050565b5f6020820190508181035f830152611fcc81611f93565b9050919050565b7f496e76616c69642066656520726563697069656e7420616464726573730000005f82015250565b5f612007601d83611a37565b915061201282611fd3565b602082019050919050565b5f6020820190508181035f83015261203481611ffb565b9050919050565b5f60408201905061204e5f830185611841565b61205b60208301846118cb565b9392505050565b5f6060820190506120755f830186611841565b6120826020830185611841565b61208f60408301846118cb565b949350505050565b6120a081611990565b81146120aa575f80fd5b50565b5f815190506120bb81612097565b92915050565b5f602082840312156120d6576120d5611869565b5b5f6120e3848285016120ad565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f612146602a83611a37565b9150612151826120ec565b604082019050919050565b5f6020820190508181035f8301526121738161213a565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6121ae601d83611a37565b91506121b98261217a565b602082019050919050565b5f6020820190508181035f8301526121db816121a2565b9050919050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61220e826121e2565b61221881856121ec565b93506122288185602086016121f6565b80840191505092915050565b5f61223f8284612204565b915081905092915050565b5f81519050919050565b5f601f19601f8301169050919050565b5f61226e8261224a565b6122788185611a37565b93506122888185602086016121f6565b61229181612254565b840191505092915050565b5f6020820190508181035f8301526122b48184612264565b90509291505056fea264697066735822122015dba43a7280badd7f722279625e04c1d3903c46a7fa805a56b8a928ebb565fb64736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a0000000000000000000000002f0d46a9b78439427bc2d2bf7e15f27b4c50807d

-----Decoded View---------------
Arg [0] : _sanicToken (address): 0xA989d83fb60d1a14846CA137c478e6b42D23620A
Arg [1] : _feeRecipient (address): 0x2f0D46a9b78439427bc2d2Bf7e15f27b4c50807d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a989d83fb60d1a14846ca137c478e6b42d23620a
Arg [1] : 0000000000000000000000002f0d46a9b78439427bc2d2bf7e15f27b4c50807d


Deployed Bytecode Sourcemap

5306:6085:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8574:1110;;;:::i;:::-;;5457:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6172:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9694:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5626:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:1315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10682:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6279:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5680:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5518:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10964:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5827:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;10574:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5565:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11081:307;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10027:539;;;:::i;:::-;;5404:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5740:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8574:1110;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;8627:17:::1;8647:5;:17;8653:10;8647:17;;;;;;;;;;;;;;;8627:37;;8702:1;8679:4;:20;;;:24;8671:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8780:13;;8759:4;:18;;;:34;;;;:::i;:::-;8740:15;:53;;8732:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8828:15;8846:28;8863:10;8846:16;:28::i;:::-;8828:46;;8899:1;8889:7;:11;8881:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8934:15;9008;;8982:4;:23;;;:41;;;;:::i;:::-;8964:15;:59;8960:123;;;9072:3;9057:11;;9047:7;:21;;;;:::i;:::-;9046:29;;;;:::i;:::-;9036:39;;8960:123;9091:21;9131:3;9126:1;9116:7;:11;;;;:::i;:::-;9115:19;;;;:::i;:::-;9091:43;;9162:18;9203:13;9193:7;9183;:17;;;;:::i;:::-;:33;;;;:::i;:::-;9162:54;;9246:15;9225:4;:18;;:36;;;;9294:15;9268:4;:23;;:41;;;;9318:52;9342:12;;;;;;;;;;;9356:13;9318:10;;;;;;;;;;;:23;;;;:52;;;;;:::i;:::-;9430:1;9420:7;:11;9416:114;;;9444:46;9468:12;;;;;;;;;;;9482:7;9444:10;;;;;;;;;;;:23;;;;:46;;;;;:::i;:::-;9416:114;9536:47;9560:10;9572;9536;;;;;;;;;;;:23;;;;:47;;;;;:::i;:::-;9644:10;9631:45;;;9656:10;9668:7;9631:45;;;;;;;:::i;:::-;;;;;;;;8620:1064;;;;;4152:1:::0;4457:7;:22;;;;8574:1110::o;5457:27::-;;;;;;;;;;;;;:::o;6172:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9694:325::-;9756:7;9776:16;9795:5;:12;9801:5;9795:12;;;;;;;;;;;;;;;9776:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9818:19;9858:4;:18;;;9840:15;:36;;;;:::i;:::-;9818:58;;9887:20;9953:3;9934:15;;9911:4;:20;;;:38;;;;:::i;:::-;9910:46;;;;:::i;:::-;9887:69;;10005:6;9990:11;9975:12;:26;;;;:::i;:::-;9974:37;;;;:::i;:::-;9967:44;;;;;9694:325;;;:::o;5626:29::-;;;;:::o;7251:1315::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;7355:1:::1;7345:7;:11;7337:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:17;7434:10;;;;;;;;;;;:20;;;7455:10;7475:4;7434:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7414:67;;7513:7;7500:9;:20;;7492:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7561:63;7589:10;7609:4;7616:7;7561:10;;;;;;;;;;;:27;;;;:63;;;;;;:::i;:::-;7637:11;7676:3;7662:10;;7652:7;:20;;;;:::i;:::-;7651:28;;;;:::i;:::-;7637:42;;7690:17;7720:3;7710:7;:13;;;;:::i;:::-;7690:33;;7736:42;7760:12;;;;;;;;;;;7774:3;7736:10;;;;;;;;;;;:23;;;;:42;;;;;:::i;:::-;7816:1;7795:23;;:9;:23;;;;:50;;;;;7835:10;7822:23;;:9;:23;;;;7795:50;7791:448;;;7871:15;:27;7887:10;7871:27;;;;;;;;;;;;;;;;;;;;;;;;;7870:28;7862:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7948:21;7998:3;7983:11;;7973:7;:21;;;;:::i;:::-;7972:29;;;;:::i;:::-;7948:53;;8016:49;8040:9;8051:13;8016:10;;;;;;;;;;;:23;;;;:49;;;;;:::i;:::-;8104:9;8080;:21;8090:10;8080:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8158:4;8128:15;:27;8144:10;8128:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8202:9;8184:43;;;8213:13;8184:43;;;;;;:::i;:::-;;;;;;;;7847:392;7791:448;8251:17;8271:5;:17;8277:10;8271:17;;;;;;;;;;;;;;;8251:37;;8323:9;8299:4;:20;;;:33;;;;;;;:::i;:::-;;;;;;;;8364:15;8343:4;:18;;:36;;;;8416:1;8390:4;:23;;:27;;;;8481:9;8464:13;;:26;;;;;;;:::i;:::-;;;;;;;;8548:9;8508:50;;8516:10;8508:50;;;8528:7;8537:9;8508:50;;;;;;;:::i;:::-;;;;;;;;7326:1240;;;;4152:1:::0;4457:7;:22;;;;7251:1315;;:::o;10682:274::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10781:1:::1;10760:23;;:9;:23;;::::0;10752:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10820:16;10847:10;;;;;;;;;;;10820:38;;10889:9;10869:10;;:30;;;;;;;;;;;;;;;;;;10938:9;10915:33;;10928:8;10915:33;;;;;;;;;;;;10741:215;10682:274:::0;:::o;6279:28::-;;;;:::o;5680:31::-;;;;:::o;5518:20::-;;;;;;;;;;;;;:::o;10964:107::-;11005:7;11028:10;;;;;;;;;;;:20;;;11057:4;11028:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11021:42;;10964:107;:::o;5827:41::-;;;;:::o;6128:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10574:100::-;10626:7;10653:13;;10646:20;;10574:100;:::o;5565:34::-;;;;:::o;6223:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5914:31::-;;;;:::o;11081:307::-;6864:5;;;;;;;;;;;6850:19;;:10;:19;;;6842:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11195:1:::1;11170:27;;:13;:27;;::::0;11162:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11242:20;11265:12;;;;;;;;;;;11242:35;;11303:13;11288:12;;:28;;;;;;;;;;;;;;;;;;11366:13;11332:48;;11352:12;11332:48;;;;;;;;;;;;11151:237;11081:307:::0;:::o;10027:539::-;4196:1;4344:7;;:19;4336:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:1;4412:7;:18;;;;10080:17:::1;10100:5;:17;10106:10;10100:17;;;;;;;;;;;;;;;10080:37;;10159:1;10136:4;:20;;;:24;10128:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10241:13;;10220:4;:18;;;:34;;;;:::i;:::-;10201:15;:53;;10193:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10293:15;10311:28;10328:10;10311:16;:28::i;:::-;10293:46;;10368:1;10358:7;:11;10350:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10431:7;10407:4;:20;;;:31;;;;;;;:::i;:::-;;;;;;;;10496:15;10475:4;:18;;:36;;;;10538:10;10529:29;;;10550:7;10529:29;;;;;;:::i;:::-;;;;;;;;10069:497;;4152:1:::0;4457:7;:22;;;;10027:539::o;5404:24::-;;;;;;;;;;;;;:::o;5740:40::-;;;;:::o;2537:211::-;2654:86;2674:5;2704:23;;;2729:2;2733:5;2681:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:19;:86::i;:::-;2537:211;;;:::o;2756:248::-;2900:96;2920:5;2950:27;;;2979:4;2985:2;2989:5;2927:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2900:19;:96::i;:::-;2756:248;;;;:::o;3416:333::-;3497:23;3523:69;3551:4;3523:69;;;;;;;;;;;;;;;;;3531:5;3523:27;;;;:69;;;;;:::i;:::-;3497:95;;3627:1;3607:10;:17;:21;3603:139;;;3664:10;3653:30;;;;;;;;;;;;:::i;:::-;3645:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3603:139;3486:263;3416:333;;:::o;833:230::-;970:12;1002:53;1025:6;1033:4;1039:1;1042:12;1002:22;:53::i;:::-;995:60;;833:230;;;;;:::o;1706:733::-;1879:12;1912:18;1923:6;1912:10;:18::i;:::-;1904:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1978:12;1992:23;2019:6;:11;;2038:8;2048:4;2019:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1977:76;;;;2068:7;2064:368;;;2099:10;2092:17;;;;;;2064:368;2166:1;2146:10;:17;:21;2142:279;;;2249:10;2243:17;2310:15;2297:10;2293:2;2289:19;2282:44;2142:279;2392:12;2385:20;;;;;;;;;;;:::i;:::-;;;;;;;;1706:733;;;;;;;:::o;121:196::-;181:4;198:12;265:7;253:20;245:28;;308:1;301:4;:8;294:15;;;121:196;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:139::-;1094:5;1132:6;1119:20;1110:29;;1148:33;1175:5;1148:33;:::i;:::-;1048:139;;;;:::o;1193:329::-;1252:6;1301:2;1289:9;1280:7;1276:23;1272:32;1269:119;;;1307:79;;:::i;:::-;1269:119;1427:1;1452:53;1497:7;1488:6;1477:9;1473:22;1452:53;:::i;:::-;1442:63;;1398:117;1193:329;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:122::-;2036:24;2054:5;2036:24;:::i;:::-;2029:5;2026:35;2016:63;;2075:1;2072;2065:12;2016:63;1963:122;:::o;2091:139::-;2137:5;2175:6;2162:20;2153:29;;2191:33;2218:5;2191:33;:::i;:::-;2091:139;;;;:::o;2236:474::-;2304:6;2312;2361:2;2349:9;2340:7;2336:23;2332:32;2329:119;;;2367:79;;:::i;:::-;2329:119;2487:1;2512:53;2557:7;2548:6;2537:9;2533:22;2512:53;:::i;:::-;2502:63;;2458:117;2614:2;2640:53;2685:7;2676:6;2665:9;2661:22;2640:53;:::i;:::-;2630:63;;2585:118;2236:474;;;;;:::o;2716:442::-;2865:4;2903:2;2892:9;2888:18;2880:26;;2916:71;2984:1;2973:9;2969:17;2960:6;2916:71;:::i;:::-;2997:72;3065:2;3054:9;3050:18;3041:6;2997:72;:::i;:::-;3079;3147:2;3136:9;3132:18;3123:6;3079:72;:::i;:::-;2716:442;;;;;;:::o;3164:90::-;3198:7;3241:5;3234:13;3227:21;3216:32;;3164:90;;;:::o;3260:109::-;3341:21;3356:5;3341:21;:::i;:::-;3336:3;3329:34;3260:109;;:::o;3375:210::-;3462:4;3500:2;3489:9;3485:18;3477:26;;3513:65;3575:1;3564:9;3560:17;3551:6;3513:65;:::i;:::-;3375:210;;;;:::o;3591:60::-;3619:3;3640:5;3633:12;;3591:60;;;:::o;3657:142::-;3707:9;3740:53;3758:34;3767:24;3785:5;3767:24;:::i;:::-;3758:34;:::i;:::-;3740:53;:::i;:::-;3727:66;;3657:142;;;:::o;3805:126::-;3855:9;3888:37;3919:5;3888:37;:::i;:::-;3875:50;;3805:126;;;:::o;3937:140::-;4001:9;4034:37;4065:5;4034:37;:::i;:::-;4021:50;;3937:140;;;:::o;4083:159::-;4184:51;4229:5;4184:51;:::i;:::-;4179:3;4172:64;4083:159;;:::o;4248:250::-;4355:4;4393:2;4382:9;4378:18;4370:26;;4406:85;4488:1;4477:9;4473:17;4464:6;4406:85;:::i;:::-;4248:250;;;;:::o;4504:169::-;4588:11;4622:6;4617:3;4610:19;4662:4;4657:3;4653:14;4638:29;;4504:169;;;;:::o;4679:181::-;4819:33;4815:1;4807:6;4803:14;4796:57;4679:181;:::o;4866:366::-;5008:3;5029:67;5093:2;5088:3;5029:67;:::i;:::-;5022:74;;5105:93;5194:3;5105:93;:::i;:::-;5223:2;5218:3;5214:12;5207:19;;4866:366;;;:::o;5238:419::-;5404:4;5442:2;5431:9;5427:18;5419:26;;5491:9;5485:4;5481:20;5477:1;5466:9;5462:17;5455:47;5519:131;5645:4;5519:131;:::i;:::-;5511:139;;5238:419;;;:::o;5663:167::-;5803:19;5799:1;5791:6;5787:14;5780:43;5663:167;:::o;5836:366::-;5978:3;5999:67;6063:2;6058:3;5999:67;:::i;:::-;5992:74;;6075:93;6164:3;6075:93;:::i;:::-;6193:2;6188:3;6184:12;6177:19;;5836:366;;;:::o;6208:419::-;6374:4;6412:2;6401:9;6397:18;6389:26;;6461:9;6455:4;6451:20;6447:1;6436:9;6432:17;6425:47;6489:131;6615:4;6489:131;:::i;:::-;6481:139;;6208:419;;;:::o;6633:180::-;6681:77;6678:1;6671:88;6778:4;6775:1;6768:15;6802:4;6799:1;6792:15;6819:191;6859:3;6878:20;6896:1;6878:20;:::i;:::-;6873:25;;6912:20;6930:1;6912:20;:::i;:::-;6907:25;;6955:1;6952;6948:9;6941:16;;6976:3;6973:1;6970:10;6967:36;;;6983:18;;:::i;:::-;6967:36;6819:191;;;;:::o;7016:171::-;7156:23;7152:1;7144:6;7140:14;7133:47;7016:171;:::o;7193:366::-;7335:3;7356:67;7420:2;7415:3;7356:67;:::i;:::-;7349:74;;7432:93;7521:3;7432:93;:::i;:::-;7550:2;7545:3;7541:12;7534:19;;7193:366;;;:::o;7565:419::-;7731:4;7769:2;7758:9;7754:18;7746:26;;7818:9;7812:4;7808:20;7804:1;7793:9;7789:17;7782:47;7846:131;7972:4;7846:131;:::i;:::-;7838:139;;7565:419;;;:::o;7990:170::-;8130:22;8126:1;8118:6;8114:14;8107:46;7990:170;:::o;8166:366::-;8308:3;8329:67;8393:2;8388:3;8329:67;:::i;:::-;8322:74;;8405:93;8494:3;8405:93;:::i;:::-;8523:2;8518:3;8514:12;8507:19;;8166:366;;;:::o;8538:419::-;8704:4;8742:2;8731:9;8727:18;8719:26;;8791:9;8785:4;8781:20;8777:1;8766:9;8762:17;8755:47;8819:131;8945:4;8819:131;:::i;:::-;8811:139;;8538:419;;;:::o;8963:410::-;9003:7;9026:20;9044:1;9026:20;:::i;:::-;9021:25;;9060:20;9078:1;9060:20;:::i;:::-;9055:25;;9115:1;9112;9108:9;9137:30;9155:11;9137:30;:::i;:::-;9126:41;;9316:1;9307:7;9303:15;9300:1;9297:22;9277:1;9270:9;9250:83;9227:139;;9346:18;;:::i;:::-;9227:139;9011:362;8963:410;;;;:::o;9379:180::-;9427:77;9424:1;9417:88;9524:4;9521:1;9514:15;9548:4;9545:1;9538:15;9565:185;9605:1;9622:20;9640:1;9622:20;:::i;:::-;9617:25;;9656:20;9674:1;9656:20;:::i;:::-;9651:25;;9695:1;9685:35;;9700:18;;:::i;:::-;9685:35;9742:1;9739;9735:9;9730:14;;9565:185;;;;:::o;9756:194::-;9796:4;9816:20;9834:1;9816:20;:::i;:::-;9811:25;;9850:20;9868:1;9850:20;:::i;:::-;9845:25;;9894:1;9891;9887:9;9879:17;;9918:1;9912:4;9909:11;9906:37;;;9923:18;;:::i;:::-;9906:37;9756:194;;;;:::o;9956:332::-;10077:4;10115:2;10104:9;10100:18;10092:26;;10128:71;10196:1;10185:9;10181:17;10172:6;10128:71;:::i;:::-;10209:72;10277:2;10266:9;10262:18;10253:6;10209:72;:::i;:::-;9956:332;;;;;:::o;10294:227::-;10434:34;10430:1;10422:6;10418:14;10411:58;10503:10;10498:2;10490:6;10486:15;10479:35;10294:227;:::o;10527:366::-;10669:3;10690:67;10754:2;10749:3;10690:67;:::i;:::-;10683:74;;10766:93;10855:3;10766:93;:::i;:::-;10884:2;10879:3;10875:12;10868:19;;10527:366;;;:::o;10899:419::-;11065:4;11103:2;11092:9;11088:18;11080:26;;11152:9;11146:4;11142:20;11138:1;11127:9;11123:17;11116:47;11180:131;11306:4;11180:131;:::i;:::-;11172:139;;10899:419;;;:::o;11324:332::-;11445:4;11483:2;11472:9;11468:18;11460:26;;11496:71;11564:1;11553:9;11549:17;11540:6;11496:71;:::i;:::-;11577:72;11645:2;11634:9;11630:18;11621:6;11577:72;:::i;:::-;11324:332;;;;;:::o;11662:143::-;11719:5;11750:6;11744:13;11735:22;;11766:33;11793:5;11766:33;:::i;:::-;11662:143;;;;:::o;11811:351::-;11881:6;11930:2;11918:9;11909:7;11905:23;11901:32;11898:119;;;11936:79;;:::i;:::-;11898:119;12056:1;12081:64;12137:7;12128:6;12117:9;12113:22;12081:64;:::i;:::-;12071:74;;12027:128;11811:351;;;;:::o;12168:173::-;12308:25;12304:1;12296:6;12292:14;12285:49;12168:173;:::o;12347:366::-;12489:3;12510:67;12574:2;12569:3;12510:67;:::i;:::-;12503:74;;12586:93;12675:3;12586:93;:::i;:::-;12704:2;12699:3;12695:12;12688:19;;12347:366;;;:::o;12719:419::-;12885:4;12923:2;12912:9;12908:18;12900:26;;12972:9;12966:4;12962:20;12958:1;12947:9;12943:17;12936:47;13000:131;13126:4;13000:131;:::i;:::-;12992:139;;12719:419;;;:::o;13144:180::-;13284:32;13280:1;13272:6;13268:14;13261:56;13144:180;:::o;13330:366::-;13472:3;13493:67;13557:2;13552:3;13493:67;:::i;:::-;13486:74;;13569:93;13658:3;13569:93;:::i;:::-;13687:2;13682:3;13678:12;13671:19;;13330:366;;;:::o;13702:419::-;13868:4;13906:2;13895:9;13891:18;13883:26;;13955:9;13949:4;13945:20;13941:1;13930:9;13926:17;13919:47;13983:131;14109:4;13983:131;:::i;:::-;13975:139;;13702:419;;;:::o;14127:164::-;14267:16;14263:1;14255:6;14251:14;14244:40;14127:164;:::o;14297:366::-;14439:3;14460:67;14524:2;14519:3;14460:67;:::i;:::-;14453:74;;14536:93;14625:3;14536:93;:::i;:::-;14654:2;14649:3;14645:12;14638:19;;14297:366;;;:::o;14669:419::-;14835:4;14873:2;14862:9;14858:18;14850:26;;14922:9;14916:4;14912:20;14908:1;14897:9;14893:17;14886:47;14950:131;15076:4;14950:131;:::i;:::-;14942:139;;14669:419;;;:::o;15094:171::-;15234:23;15230:1;15222:6;15218:14;15211:47;15094:171;:::o;15271:366::-;15413:3;15434:67;15498:2;15493:3;15434:67;:::i;:::-;15427:74;;15510:93;15599:3;15510:93;:::i;:::-;15628:2;15623:3;15619:12;15612:19;;15271:366;;;:::o;15643:419::-;15809:4;15847:2;15836:9;15832:18;15824:26;;15896:9;15890:4;15886:20;15882:1;15871:9;15867:17;15860:47;15924:131;16050:4;15924:131;:::i;:::-;15916:139;;15643:419;;;:::o;16068:179::-;16208:31;16204:1;16196:6;16192:14;16185:55;16068:179;:::o;16253:366::-;16395:3;16416:67;16480:2;16475:3;16416:67;:::i;:::-;16409:74;;16492:93;16581:3;16492:93;:::i;:::-;16610:2;16605:3;16601:12;16594:19;;16253:366;;;:::o;16625:419::-;16791:4;16829:2;16818:9;16814:18;16806:26;;16878:9;16872:4;16868:20;16864:1;16853:9;16849:17;16842:47;16906:131;17032:4;16906:131;:::i;:::-;16898:139;;16625:419;;;:::o;17050:332::-;17171:4;17209:2;17198:9;17194:18;17186:26;;17222:71;17290:1;17279:9;17275:17;17266:6;17222:71;:::i;:::-;17303:72;17371:2;17360:9;17356:18;17347:6;17303:72;:::i;:::-;17050:332;;;;;:::o;17388:442::-;17537:4;17575:2;17564:9;17560:18;17552:26;;17588:71;17656:1;17645:9;17641:17;17632:6;17588:71;:::i;:::-;17669:72;17737:2;17726:9;17722:18;17713:6;17669:72;:::i;:::-;17751;17819:2;17808:9;17804:18;17795:6;17751:72;:::i;:::-;17388:442;;;;;;:::o;17836:116::-;17906:21;17921:5;17906:21;:::i;:::-;17899:5;17896:32;17886:60;;17942:1;17939;17932:12;17886:60;17836:116;:::o;17958:137::-;18012:5;18043:6;18037:13;18028:22;;18059:30;18083:5;18059:30;:::i;:::-;17958:137;;;;:::o;18101:345::-;18168:6;18217:2;18205:9;18196:7;18192:23;18188:32;18185:119;;;18223:79;;:::i;:::-;18185:119;18343:1;18368:61;18421:7;18412:6;18401:9;18397:22;18368:61;:::i;:::-;18358:71;;18314:125;18101:345;;;;:::o;18452:229::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:12;18656:2;18648:6;18644:15;18637:37;18452:229;:::o;18687:366::-;18829:3;18850:67;18914:2;18909:3;18850:67;:::i;:::-;18843:74;;18926:93;19015:3;18926:93;:::i;:::-;19044:2;19039:3;19035:12;19028:19;;18687:366;;;:::o;19059:419::-;19225:4;19263:2;19252:9;19248:18;19240:26;;19312:9;19306:4;19302:20;19298:1;19287:9;19283:17;19276:47;19340:131;19466:4;19340:131;:::i;:::-;19332:139;;19059:419;;;:::o;19484:179::-;19624:31;19620:1;19612:6;19608:14;19601:55;19484:179;:::o;19669:366::-;19811:3;19832:67;19896:2;19891:3;19832:67;:::i;:::-;19825:74;;19908:93;19997:3;19908:93;:::i;:::-;20026:2;20021:3;20017:12;20010:19;;19669:366;;;:::o;20041:419::-;20207:4;20245:2;20234:9;20230:18;20222:26;;20294:9;20288:4;20284:20;20280:1;20269:9;20265:17;20258:47;20322:131;20448:4;20322:131;:::i;:::-;20314:139;;20041:419;;;:::o;20466:98::-;20517:6;20551:5;20545:12;20535:22;;20466:98;;;:::o;20570:147::-;20671:11;20708:3;20693:18;;20570:147;;;;:::o;20723:139::-;20812:6;20807:3;20802;20796:23;20853:1;20844:6;20839:3;20835:16;20828:27;20723:139;;;:::o;20868:386::-;20972:3;21000:38;21032:5;21000:38;:::i;:::-;21054:88;21135:6;21130:3;21054:88;:::i;:::-;21047:95;;21151:65;21209:6;21204:3;21197:4;21190:5;21186:16;21151:65;:::i;:::-;21241:6;21236:3;21232:16;21225:23;;20976:278;20868:386;;;;:::o;21260:271::-;21390:3;21412:93;21501:3;21492:6;21412:93;:::i;:::-;21405:100;;21522:3;21515:10;;21260:271;;;;:::o;21537:99::-;21589:6;21623:5;21617:12;21607:22;;21537:99;;;:::o;21642:102::-;21683:6;21734:2;21730:7;21725:2;21718:5;21714:14;21710:28;21700:38;;21642:102;;;:::o;21750:377::-;21838:3;21866:39;21899:5;21866:39;:::i;:::-;21921:71;21985:6;21980:3;21921:71;:::i;:::-;21914:78;;22001:65;22059:6;22054:3;22047:4;22040:5;22036:16;22001:65;:::i;:::-;22091:29;22113:6;22091:29;:::i;:::-;22086:3;22082:39;22075:46;;21842:285;21750:377;;;;:::o;22133:313::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:78;22434:4;22425:6;22361:78;:::i;:::-;22353:86;;22133:313;;;;:::o

Swarm Source

ipfs://15dba43a7280badd7f722279625e04c1d3903c46a7fa805a56b8a928ebb565fb

Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.