ETH Price: $3,116.38 (+1.67%)

Contract

0x34aeE49b506E43FDD4bEa24f65e4E05EF5a07a0c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Rescue Token164628532023-01-22 14:10:59663 days ago1674396659IN
0x34aeE49b...EF5a07a0c
0 ETH0.0017147718.97898245
Update Staking T...164628512023-01-22 14:10:35663 days ago1674396635IN
0x34aeE49b...EF5a07a0c
0 ETH0.0006370519.40055479
Unstake164284922023-01-17 19:04:11668 days ago1673982251IN
0x34aeE49b...EF5a07a0c
0 ETH0.0030762825.44086736
Claim164284892023-01-17 19:03:35668 days ago1673982215IN
0x34aeE49b...EF5a07a0c
0 ETH0.0032420926.69225946
Force Claim Unst...163969412023-01-13 9:20:47672 days ago1673601647IN
0x34aeE49b...EF5a07a0c
0 ETH0.0022651115.31743463
Force Claim Unst...163968952023-01-13 9:11:35672 days ago1673601095IN
0x34aeE49b...EF5a07a0c
0 ETH0.0019852515.18031109
Force Claim Unst...163966162023-01-13 8:15:35672 days ago1673597735IN
0x34aeE49b...EF5a07a0c
0 ETH0.0022207415.01742406
Unstake163863342023-01-11 21:46:23674 days ago1673473583IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036296128.87084885
Force Claim Unst...163849112023-01-11 16:57:35674 days ago1673456255IN
0x34aeE49b...EF5a07a0c
0 ETH0.0042038228.42765033
Force Claim Unst...163849102023-01-11 16:57:23674 days ago1673456243IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036713828.07343504
Force Claim Unst...163849102023-01-11 16:57:23674 days ago1673456243IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036713828.07343504
Force Claim Unst...163849042023-01-11 16:56:11674 days ago1673456171IN
0x34aeE49b...EF5a07a0c
0 ETH0.0041115128.18457926
Force Claim Unst...163849012023-01-11 16:55:35674 days ago1673456135IN
0x34aeE49b...EF5a07a0c
0 ETH0.0042236228.56156504
Force Claim Unst...163849002023-01-11 16:55:23674 days ago1673456123IN
0x34aeE49b...EF5a07a0c
0 ETH0.0039562326.75555605
Force Claim Unst...163848992023-01-11 16:55:11674 days ago1673456111IN
0x34aeE49b...EF5a07a0c
0 ETH0.0008570727.9268723
Force Claim Unst...163848982023-01-11 16:54:59674 days ago1673456099IN
0x34aeE49b...EF5a07a0c
0 ETH0.0035333627.01802999
Force Claim Unst...163848972023-01-11 16:54:47674 days ago1673456087IN
0x34aeE49b...EF5a07a0c
0 ETH0.0040123527.13286367
Force Claim Unst...163848972023-01-11 16:54:47674 days ago1673456087IN
0x34aeE49b...EF5a07a0c
0 ETH0.0035483827.13286367
Force Claim Unst...163848962023-01-11 16:54:35674 days ago1673456075IN
0x34aeE49b...EF5a07a0c
0 ETH0.0037534525.38207353
Force Claim Unst...163848902023-01-11 16:53:23674 days ago1673456003IN
0x34aeE49b...EF5a07a0c
0 ETH0.0035719924.15501573
Force Claim Unst...163848892023-01-11 16:53:11674 days ago1673455991IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036082724.400341
Force Claim Unst...163848882023-01-11 16:52:59674 days ago1673455979IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036516124.69540867
Force Claim Unst...163848822023-01-11 16:51:47674 days ago1673455907IN
0x34aeE49b...EF5a07a0c
0 ETH0.0038085925.75501099
Force Claim Unst...163848812023-01-11 16:51:35674 days ago1673455895IN
0x34aeE49b...EF5a07a0c
0 ETH0.0036787825.21826047
Force Claim Unst...163848772023-01-11 16:50:47674 days ago1673455847IN
0x34aeE49b...EF5a07a0c
0 ETH0.0037512125.36698205
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PyroStaking

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-01
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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);
}

abstract contract Auth {

    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

contract PyroStaking is Auth {

    struct PoolConfiguration {
        uint256 poolStakedTokens;
		uint16 apr;
		uint16 depositFee;
        uint16 earlyWithdrawFee;
        uint32 withdrawLockPeriod;
		bool available;
		bool burnDeposit;
    }

	struct StakeState {
		uint256 stakedAmount;
		uint256 rewardDebt; 
		uint32 lastChangeTime;
		uint32 lockEndTime;
	}

	event TokenStaked(address indexed user, uint256 amount);
	event TokenUnstaked(address indexed user, uint256 amount);
	event RewardClaimed(address indexed user, uint256 outAmount);
	event PoolAvailability(bool available);
	event PoolConfigurated(uint16 apr, uint16 depositFee, uint32 lockPeriod, uint16 earlyWithdrawFee);
	event DepositFeeBurnStatus(bool active);
	event DepositFeeBurn(uint256 burn);
	event StakingTokenUpdate(address indexed oldToken, address indexed newToken);

	// Informs about the address for the token being used for staking.
	address public stakingToken;

    // Taxes are set in /10000.
	// Using solidity underscore separator for easier reading.
	// Digits before underscore are the percentage.
	// Digits after underscore are decimals for said percentage.
    uint256 public immutable denominator = 100_00;

    // Staking pool configuration.
	PoolConfiguration private poolConfig;

	// Info of each user that stakes tokens.
	mapping (address => StakeState) public stakerDetails;

	// Burn address.
	address public immutable DEAD = address(0xdead);

	constructor(address t) Auth(msg.sender) {
		stakingToken = t;

		uint16 apr = 100_00; // 100%
		uint16 depositFee = 3_00; // 3%
		uint16 earlyWithdrawFee = 50_00; // 50%
		uint32 lockPeriod = 30 days;
		bool available = true;

		_setStakingConfig(apr, depositFee, earlyWithdrawFee, lockPeriod, available, false);
	}

	modifier noStakes {
		require(poolConfig.poolStakedTokens == 0, "Action can only be done when there are no staked tokens.");
		_;
	}

	modifier positiveAPR(uint16 apr) {
		require(apr > 0, "APR cannot be 0.");
		_;
	}

	modifier validFee(uint16 fee) {
		require(fee <= 5000, "Fees cannot be more than 50%.");
		_;
	}

	modifier validLockPeriod(uint32 time) {
		require(time < 365 days, "Lockout period should be less than a year.");
		_;
	}

	function setPoolConfiguration(
		uint16 apr, uint16 depositFee, uint16 earlyWithdrawFee, uint32 withdrawLockPeriod, bool active, bool burn
	)
		external authorized noStakes positiveAPR(apr)
		validFee(depositFee) validFee(earlyWithdrawFee)
		validLockPeriod(withdrawLockPeriod)
	{		
		_setStakingConfig(apr, depositFee, earlyWithdrawFee, withdrawLockPeriod, active, burn);
	}

	/**
	 * @dev Internal function for updating full stake configuration.
	 */
	function _setStakingConfig(
		uint16 apr, uint16 depositFee, uint16 earlyWithdrawFee, uint32 withdrawLockPeriod, bool active, bool burn
	) internal {
		poolConfig.apr = apr;
		poolConfig.depositFee = depositFee;
        poolConfig.earlyWithdrawFee = earlyWithdrawFee;
		poolConfig.withdrawLockPeriod = withdrawLockPeriod;
		poolConfig.available = active;
		poolConfig.burnDeposit = burn;

		emit PoolConfigurated(apr, depositFee, withdrawLockPeriod, earlyWithdrawFee);
		emit PoolAvailability(active);
		emit DepositFeeBurnStatus(burn);
	}

	/**
	 * @dev Sets APR out of / 10000.
	 * Each 100 means 1%.
	 */
	function setAPR(uint16 apr) external authorized positiveAPR(apr) {
		if (poolConfig.poolStakedTokens > 0) {
			require(apr >= poolConfig.apr, "APR cannot be lowered while there are tokens staked.");
		}
		poolConfig.apr = apr;

		emit PoolConfigurated(apr, poolConfig.depositFee, poolConfig.withdrawLockPeriod, poolConfig.earlyWithdrawFee);
	}

	/**
	 * @dev Sets deposit fee out of / 10000.
	 */
	function setDepositFee(uint16 fee) external authorized validFee(fee) {
		poolConfig.depositFee = fee;

		emit PoolConfigurated(poolConfig.apr, fee, poolConfig.withdrawLockPeriod, poolConfig.earlyWithdrawFee);
	}

	/**
	 * @dev Early withdraw fee out of / 10000.
	 */
	function setEarlyWithdrawFee(uint16 fee) external authorized validFee(fee) {
		poolConfig.earlyWithdrawFee = fee;

		emit PoolConfigurated(poolConfig.apr, poolConfig.depositFee, poolConfig.withdrawLockPeriod, fee);
	}

	/**
	 * @dev Pool can be set inactive to end staking after the last lock and restart with new values.
	 */
	function setPoolAvailable(bool active) external authorized {
		poolConfig.available = active;
		emit PoolAvailability(active);
	}

	/**
	 * @dev Early withdraw penalty in seconds.
	 */
	function setEarlyWithdrawLock(uint32 time) external authorized noStakes validLockPeriod(time) {
		poolConfig.withdrawLockPeriod = time;
		emit PoolConfigurated(poolConfig.apr, poolConfig.depositFee, time, poolConfig.earlyWithdrawFee);
	}

	function setFeeBurn(bool burn) external authorized {
		poolConfig.burnDeposit = burn;
		emit DepositFeeBurnStatus(burn);
	}

    function updateStakingToken(address t) external authorized noStakes {
		emit StakingTokenUpdate(stakingToken, t);
        stakingToken = t;
    }

	/**
	 * @dev Check the current unclaimed pending reward for a specific stake.
	 */
	function pendingReward(address account) public view returns (uint256) {
		StakeState storage user = stakerDetails[account];
		// Last change time of 0 means there's never been a stake to begin with.
		if (user.lastChangeTime == 0) {
			return 0;
		}

		// Ellapsed time since staking and now.
		if (block.timestamp <= user.lastChangeTime) {
			return 0;
		}
		uint256 deltaTime = block.timestamp - user.lastChangeTime;
		uint256 accrued = yieldFromElapsedTime(user.stakedAmount, deltaTime);

		return accrued + user.rewardDebt;
	}

	function yieldFromElapsedTime(uint256 amount, uint256 deltaTime) public view returns (uint256) {
		// No elapsed time or no amount means no reward accrued.
		if (amount == 0 || deltaTime == 0) {
			return 0;
		}

		/**
		 * It's quite simple to derive owed reward from time using the set duration (APR):
		 * Total cycle reward plus time elapsed divided by cycle duration.
		 * Time is counted by seconds, so we divide the total reward by seconds and calculate the amount due to seconds passed.
		 */
		uint256 annuality = annualYield(amount);
		if (annuality == 0) {
			return 0;
		}

		return (deltaTime * annuality) / 365 days;
	}

	/**
	 * @dev Given an amount to stake returns a total yield as per APR.
	 */
	function annualYield(uint256 amount) public view returns (uint256) {
		if (amount == 0 || poolConfig.apr == 0) {
			return 0;
		}

		return amount * poolConfig.apr / denominator;
	}

	function dailyYield(uint256 amount) external view returns (uint256) {
		// Due to how Solidity decimals work, any amount less than 365 will yield 0 per day.
		// On a 9 decimal token this means less than 0.000000365 -- basically nothing at all.
		// Once the time has surpassed 365 days the yield will be owed normally as soon as the decimal place jumps.
		if (amount < 365) {
			return 0;
		}
		if (amount == 365) {
			return 1;
		}

		return annualYield(amount) / 365;
	}

	function stake(uint256 amount) external {
		require(amount > 0, "Amount needs to be bigger than 0");
		require(poolConfig.available, "Pool is not accepting staking right now.");

		IERC20(stakingToken).transferFrom(msg.sender, address(this), amount);
		StakeState storage user = stakerDetails[msg.sender];
		// Calc unclaimed reward on stake update.
		if (user.lastChangeTime != 0 && user.stakedAmount > 0) {
			user.rewardDebt = pendingReward(msg.sender);
		}
        uint256 stakeAmount = amount;

        // Check deposit fee
        if (poolConfig.depositFee > 0) {
            uint256 dFee = depositFeeFromAmount(amount);
            stakeAmount -= dFee;
			// If the pool has enough for rewards, deposit fee can be sent to burn address instead.
			if (poolConfig.burnDeposit) {
				IERC20(stakingToken).transfer(DEAD, dFee);
				emit DepositFeeBurn(dFee);
			}
        }

		user.stakedAmount += stakeAmount;
		uint32 rnow = uint32(block.timestamp);
		user.lastChangeTime = rnow;
        if (user.lockEndTime == 0) {
            user.lockEndTime = rnow + poolConfig.withdrawLockPeriod;
        }
		poolConfig.poolStakedTokens += stakeAmount;

		emit TokenStaked(msg.sender, stakeAmount);
	}

	function depositFeeFromAmount(uint256 amount) public view returns (uint256) {
		if (poolConfig.depositFee == 0) {
			return 0;
		}
		return amount * poolConfig.depositFee / denominator;
	}

	function unstake() external {
		unstakeFor(msg.sender);
	}

	function unstakeFor(address staker) internal {
		StakeState storage user = stakerDetails[staker];
		uint256 amount = user.stakedAmount;
		require(amount > 0, "No stake on pool.");

		// Update user staking status.
		// When unstaking is done, claim is automatically done.
		_claim(staker);
		user.stakedAmount = 0;

		uint256 unstakeAmount = amount;
        // Check for early withdraw fee.
        if (block.timestamp < user.lockEndTime && poolConfig.earlyWithdrawFee > 0) {
            uint256 fee = amount * poolConfig.earlyWithdrawFee / denominator;
            unstakeAmount -= fee;
        }
        user.lockEndTime = 0;

		IERC20 stakedToken = IERC20(stakingToken);
		// Check for a clear revert error if rewards+unstake surpass balance.
		require(stakedToken.balanceOf(address(this)) >= unstakeAmount, "Staking contract does not have enough tokens.");

		// Return token to staker and update staking values.
		stakedToken.transfer(staker, unstakeAmount);
		poolConfig.poolStakedTokens -= amount;

		emit TokenUnstaked(staker, unstakeAmount);
	}

	function claim() external {
		_claim(msg.sender);
	}

	/**
	 * @dev Allows an authorised account to finalise a staking that has not claimed nor unstaked while the period is over.
	 */
	function forceClaimUnstake(address staker) external authorized {
		// Pool must not be available for staking, otherwise the user should be free to renew their stake.
		require(!poolConfig.available, "Pool is still available.");
		// The stake must have finished its lock time and accrued all the APR.
		require(block.timestamp > stakerDetails[staker].lockEndTime, "User's lock time has not finished yet.");
		// Run their claim and unstake.
		unstakeFor(staker);
	}

	function _claim(address staker) internal {
		StakeState storage user = stakerDetails[staker];
		uint256 outAmount = pendingReward(staker);
		if (outAmount > 0) {
			// Check for a clear revert error if rewards+unstake surpass balance.
			uint256 contractBalance = IERC20(stakingToken).balanceOf(address(this));
			require(contractBalance >= outAmount, "Staking contract does not own enough tokens.");

			IERC20(stakingToken).transfer(staker, outAmount);
			user.rewardDebt = 0;
			user.lastChangeTime = uint32(block.timestamp);

			emit RewardClaimed(staker, outAmount);
		}
	}

	/**
	 * @dev Checks whether there's a stake withdraw fee or not.
	 */
	function canWithdrawTokensNoFee(address user) external view returns (bool) {
		if (stakerDetails[user].lastChangeTime == 0) {
			return false;
		}

		return block.timestamp > stakerDetails[user].lockEndTime;
	}

	/**
	 * @dev Rescue non staking tokens sent to this contract by accident.
	 */
	function rescueToken(address t, address receiver) external authorized {
		require(t != stakingToken, "Staking token can't be withdrawn!");
		uint256 balance = IERC20(t).balanceOf(address(this));
		IERC20(t).transfer(receiver, balance);
	}

	function viewPoolDetails() external view returns (PoolConfiguration memory) {
		return poolConfig;
	}

	function viewStake(address staker) public view returns (StakeState memory) {
		return stakerDetails[staker];
	}

	function viewMyStake() external view returns (StakeState memory) {
		return viewStake(msg.sender);
	}

	function viewMyPendingReward() external view returns (uint256) {
		return pendingReward(msg.sender);
	}

	/**
	 * @dev Returns APR in percentage.
	 */
	function viewAPRPercent() external view returns (uint16) {
		return poolConfig.apr / 100;
	}

	/**
	 * @dev Returns APR in percentage and 2 decimal points in an extra varaible.
	 */
	function viewAPRPercentDecimals() external view returns (uint16 aprPercent, uint16 decimalValue) {
		return (poolConfig.apr / 100, poolConfig.apr % 100);
	}

	/**
	 * @dev Given a theroetical stake, returns the unstake returning amount, deposit fee paid, and yield on a full cycle.
	 */
	function simulateYearStake(uint256 amount) external view returns (uint256 unstakeAmount, uint256 depositFee, uint256 yield) {
		if (amount == 0) {
			return (0, 0, 0);
		}
		uint256 fee = depositFeeFromAmount(amount);
		uint256 actual = amount - fee;
		uint256 y = annualYield(actual);

		return (actual, fee, y);
	}

	/**
	 * @dev Given an amount to stake and a duration, returns unstake returning amount, deposit fee paid, and yield.
	 */
	function simulateStake(uint256 amount, uint32 duration) external view returns (uint256 unstakeAmount, uint256 depositFee, uint256 yield) {
		if (amount == 0 || duration == 0) {
			return (0, 0, 0);
		}
		uint256 fee = depositFeeFromAmount(amount);
		uint256 actual = amount - fee;
		uint256 y = yieldFromElapsedTime(actual, duration);
		if (duration < poolConfig.withdrawLockPeriod && poolConfig.earlyWithdrawFee > 0) {
            uint256 withdrawFee = amount * poolConfig.earlyWithdrawFee / denominator;
            actual -= withdrawFee;
        }

		return (actual, fee, y);
	}

	/**
	 * @dev Returns total amount of tokens staked by users.
	 */
	function totalStakedTokens() external view returns (uint256) {
		return poolConfig.poolStakedTokens;
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"t","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"DepositFeeBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"DepositFeeBurnStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"available","type":"bool"}],"name":"PoolAvailability","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"apr","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"depositFee","type":"uint16"},{"indexed":false,"internalType":"uint32","name":"lockPeriod","type":"uint32"},{"indexed":false,"internalType":"uint16","name":"earlyWithdrawFee","type":"uint16"}],"name":"PoolConfigurated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"outAmount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"StakingTokenUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenUnstaked","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"annualYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"canWithdrawTokensNoFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dailyYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFeeFromAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"forceClaimUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"t","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"apr","type":"uint16"}],"name":"setAPR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setDepositFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"name":"setEarlyWithdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"time","type":"uint32"}],"name":"setEarlyWithdrawLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"burn","type":"bool"}],"name":"setFeeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setPoolAvailable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"apr","type":"uint16"},{"internalType":"uint16","name":"depositFee","type":"uint16"},{"internalType":"uint16","name":"earlyWithdrawFee","type":"uint16"},{"internalType":"uint32","name":"withdrawLockPeriod","type":"uint32"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"burn","type":"bool"}],"name":"setPoolConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint32","name":"duration","type":"uint32"}],"name":"simulateStake","outputs":[{"internalType":"uint256","name":"unstakeAmount","type":"uint256"},{"internalType":"uint256","name":"depositFee","type":"uint256"},{"internalType":"uint256","name":"yield","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"simulateYearStake","outputs":[{"internalType":"uint256","name":"unstakeAmount","type":"uint256"},{"internalType":"uint256","name":"depositFee","type":"uint256"},{"internalType":"uint256","name":"yield","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerDetails","outputs":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint32","name":"lastChangeTime","type":"uint32"},{"internalType":"uint32","name":"lockEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"t","type":"address"}],"name":"updateStakingToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewAPRPercent","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewAPRPercentDecimals","outputs":[{"internalType":"uint16","name":"aprPercent","type":"uint16"},{"internalType":"uint16","name":"decimalValue","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewMyPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewMyStake","outputs":[{"components":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint32","name":"lastChangeTime","type":"uint32"},{"internalType":"uint32","name":"lockEndTime","type":"uint32"}],"internalType":"struct PyroStaking.StakeState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewPoolDetails","outputs":[{"components":[{"internalType":"uint256","name":"poolStakedTokens","type":"uint256"},{"internalType":"uint16","name":"apr","type":"uint16"},{"internalType":"uint16","name":"depositFee","type":"uint16"},{"internalType":"uint16","name":"earlyWithdrawFee","type":"uint16"},{"internalType":"uint32","name":"withdrawLockPeriod","type":"uint32"},{"internalType":"bool","name":"available","type":"bool"},{"internalType":"bool","name":"burnDeposit","type":"bool"}],"internalType":"struct PyroStaking.PoolConfiguration","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"viewStake","outputs":[{"components":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint32","name":"lastChangeTime","type":"uint32"},{"internalType":"uint32","name":"lockEndTime","type":"uint32"}],"internalType":"struct PyroStaking.StakeState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deltaTime","type":"uint256"}],"name":"yieldFromElapsedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c060405261271060805261dead60a0523480156200001d57600080fd5b5060405162002d4d38038062002d4d833981016040819052620000409162000201565b60008054336001600160a01b03199182168117835582526001602081905260408320805460ff191682179055600280549092166001600160a01b038516179091556127109161012c916113889162278d009190620000a89086908690869086908690620000b4565b50505050505062000233565b6004805461ffff88811663ffffffff199092168217620100008983169081029190911765ffffffffffff60201b191664010000000092891692830263ffffffff60301b191617660100000000000063ffffffff89169081029190911761ffff60501b19166a01000000000000000000008815150260ff60581b1916176b010000000000000000000000871515021790945560408051938452602084019190915282019290925260608101919091527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a19060800160405180910390a160405182151581527f964f20921e17ae8b70a4c65b26d2e49cad94dd793adacde17460045c001e730f9060200160405180910390a160405181151581527fd841fb25585d5b03ce059d8feae13bf47d138309b7135d6f50daec0e743aeb319060200160405180910390a1505050505050565b6000602082840312156200021457600080fd5b81516001600160a01b03811681146200022c57600080fd5b9392505050565b60805160a051612ad16200027c60003960008181610281015261151d01526000818161054701528181611ad301528181611b5801528181611e4301526121150152612ad16000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80639ff7dd9411610160578063c8920815116100d8578063f0b37c041161008c578063f40f0f5211610071578063f40f0f5214610828578063fbaed0651461083b578063fe9fbb801461084357600080fd5b8063f0b37c0414610802578063f2fde38b1461081557600080fd5b8063d2d18899116100bd578063d2d18899146107c9578063dcdf92fb146107dc578063f0984985146107ef57600080fd5b8063c8920815146107a3578063cdc634e5146107b657600080fd5b8063aa1a099e1161012f578063aec2f60511610114578063aec2f605146106f3578063b6a5d7de1461077d578063c1e833af1461079057600080fd5b8063aa1a099e146106c5578063ad4bed70146106e057600080fd5b80639ff7dd9414610569578063a0ac2655146105d6578063a694fc3a1461069f578063a9bf1917146106b257600080fd5b80634e71d92d116101f357806372f702f3116101c257806387d8c882116101a757806387d8c8821461051c57806392b30b951461052f57806396ce07951461054257600080fd5b806372f702f3146104f657806383ad068c1461050957600080fd5b80634e71d92d146104b55780635fda307a146104bd5780636341eae2146104d05780636d3a4ac8146104e357600080fd5b80632722c5091161024a5780632f54bf6e1161022f5780632f54bf6e1461045e5780633ae73259146104905780634707d000146104a257600080fd5b80632722c509146104335780632def66201461045657600080fd5b806303fd2a451461027c5780630a4ef5f5146102c05780630fe21264146103f05780631857171c14610405575b600080fd5b6102a37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6103846040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e081018252600354815260045461ffff80821660208401526201000082048116938301939093526401000000008104909216606082015263ffffffff6601000000000000830416608082015260ff6a010000000000000000000083048116151560a08301526b010000000000000000000000909204909116151560c082015290565b6040516102b79190600060e08201905082518252602083015161ffff8082166020850152806040860151166040850152806060860151166060850152505063ffffffff608084015116608083015260a0830151151560a083015260c0830151151560c083015292915050565b6104036103fe366004612755565b61086f565b005b610418610413366004612777565b6109c3565b604080519384526020840192909252908201526060016102b7565b61043b610a11565b6040805161ffff9384168152929091166020830152016102b7565b610403610a44565b61048061046c3660046127a5565b6000546001600160a01b0391821691161490565b60405190151581526020016102b7565b6003545b6040519081526020016102b7565b6104036104b03660046127c2565b610a4f565b610403610c3a565b6104806104cb3660046127a5565b610c43565b6104036104de366004612809565b610ca0565b6104036104f1366004612755565b610d68565b6002546102a3906001600160a01b031681565b6104036105173660046127a5565b610f28565b61040361052a3660046127a5565b61105f565b61040361053d366004612755565b6111b7565b6104947f000000000000000000000000000000000000000000000000000000000000000081565b6105aa6105773660046127a5565b60056020526000908152604090208054600182015460029092015490919063ffffffff8082169164010000000090041684565b60408051948552602085019390935263ffffffff918216928401929092521660608201526080016102b7565b6106626105e43660046127a5565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600560209081526040918290208251608081018452815481526001820154928101929092526002015463ffffffff808216938301939093526401000000009004909116606082015290565b6040805182518152602080840151908201528282015163ffffffff90811692820192909252606092830151909116918101919091526080016102b7565b6104036106ad366004612777565b6112fb565b6104036106c0366004612809565b6116ac565b6106cd611768565b60405161ffff90911681526020016102b7565b6104036106ee36600461283a565b611783565b6040805160808082018352600080835260208084018290528385018290526060938401829052845180840186528281528082018390528086018390528401829052338252600581529084902084519283018552805483526001810154918301919091526002015463ffffffff80821694830194909452640100000000900490921690820152610662565b61040361078b3660046127a5565b611962565b61049461079e366004612855565b6119e3565b6104186107b1366004612877565b611a3c565b6104946107c4366004612777565b611b33565b6104036107d73660046128a3565b611b90565b6104946107ea366004612777565b611df0565b6104946107fd366004612777565b611e22565b6104036108103660046127a5565b611e77565b6104036108233660046127a5565b611ef2565b6104946108363660046127a5565b611fca565b610494612059565b6104806108513660046127a5565b6001600160a01b031660009081526001602052604090205460ff1690565b3360009081526001602052604090205460ff166108c15760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b806113888161ffff1611156109185760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b6004805461ffff8481166201000081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff841681179485905560408051918416948416949094178152602081019190915263ffffffff66010000000000008504169281019290925264010000000090920490911660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080015b60405180910390a15050565b60008080836109da57506000915081905080610a0a565b60006109e585611e22565b905060006109f3828761294c565b90506000610a0082611b33565b9195509193509150505b9193909250565b6004546000908190610a299060649061ffff16612992565b600454610a3c9060649061ffff166129b3565b915091509091565b610a4d33612064565b565b3360009081526001602052604090205460ff16610a9c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b6002546001600160a01b0383811691161415610b205760405162461bcd60e51b815260206004820152602160248201527f5374616b696e6720746f6b656e2063616e27742062652077697468647261776e60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084016108b8565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906129d4565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906129ed565b50505050565b610a4d33612377565b6001600160a01b03811660009081526005602052604081206002015463ffffffff16610c7157506000919050565b506001600160a01b0316600090815260056020526040902060020154640100000000900463ffffffff16421190565b3360009081526001602052604090205460ff16610ced5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600480548215156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff9091161790556040517fd841fb25585d5b03ce059d8feae13bf47d138309b7135d6f50daec0e743aeb3190610d5d90831515815260200190565b60405180910390a150565b3360009081526001602052604090205460ff16610db55760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b8060008161ffff1611610e0a5760405162461bcd60e51b815260206004820152601060248201527f4150522063616e6e6f7420626520302e0000000000000000000000000000000060448201526064016108b8565b60035415610e925760045461ffff9081169083161015610e925760405162461bcd60e51b815260206004820152603460248201527f4150522063616e6e6f74206265206c6f7765726564207768696c65207468657260448201527f652061726520746f6b656e73207374616b65642e00000000000000000000000060648201526084016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8481169182179283905560408051928352620100008404821660208401526601000000000000840463ffffffff169083015264010000000090920490911660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b3360009081526001602052604090205460ff16610f755760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b60035415610feb5760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b6002546040516001600160a01b038084169216907fe9009ef01442bf4abfee682ac3f0470c1bde8d70770cdd78c69d7fa67996b45e90600090a3600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff166110ac5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b6004546a0100000000000000000000900460ff161561110d5760405162461bcd60e51b815260206004820152601860248201527f506f6f6c206973207374696c6c20617661696c61626c652e000000000000000060448201526064016108b8565b6001600160a01b038116600090815260056020526040902060020154640100000000900463ffffffff1642116111ab5760405162461bcd60e51b815260206004820152602660248201527f557365722773206c6f636b2074696d6520686173206e6f742066696e6973686560448201527f64207965742e000000000000000000000000000000000000000000000000000060648201526084016108b8565b6111b481612064565b50565b3360009081526001602052604090205460ff166112045760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b806113888161ffff16111561125b5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff811664010000000061ffff8681169182029283179485905560408051948216938216939093178452620100008504166020840152660100000000000090930463ffffffff169082015260608101919091527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b6000811161134b5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e203060448201526064016108b8565b6004546a0100000000000000000000900460ff166113d15760405162461bcd60e51b815260206004820152602860248201527f506f6f6c206973206e6f7420616363657074696e67207374616b696e6720726960448201527f676874206e6f772e00000000000000000000000000000000000000000000000060648201526084016108b8565b6002546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611441573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146591906129ed565b50336000908152600560205260409020600281015463ffffffff161580159061148e5750805415155b156114a25761149c33611fca565b60018201555b600454829062010000900461ffff16156115d15760006114c184611e22565b90506114cd818361294c565b6004549092506b010000000000000000000000900460ff16156115cf576002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a91906129ed565b506040518181527fd1ce74eb72488bcf540bc94aba2448f7d53ff620763fea0d32f621ca0c81fad49060200160405180910390a15b505b808260000160008282546115e59190612a0a565b909155505060028201805463ffffffff19164263ffffffff81811692909217928390559164010000000090041661165657600454611633906601000000000000900463ffffffff1682612a22565b8360020160046101000a81548163ffffffff021916908363ffffffff1602179055505b816003600001600082825461166b9190612a0a565b909155505060405182815233907f1fdab8a8457aaf782e4b6217d6ffa6f5006eda7e50922dd092b2e1524275d774906020015b60405180910390a250505050565b3360009081526001602052604090205460ff166116f95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600480548215156a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff9091161790556040517f964f20921e17ae8b70a4c65b26d2e49cad94dd793adacde17460045c001e730f90610d5d90831515815260200190565b60045460009061177e9060649061ffff16612992565b905090565b3360009081526001602052604090205460ff166117d05760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600354156118465760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b806301e133808163ffffffff16106118c65760405162461bcd60e51b815260206004820152602a60248201527f4c6f636b6f757420706572696f642073686f756c64206265206c65737320746860448201527f616e206120796561722e0000000000000000000000000000000000000000000060648201526084016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff8116660100000000000063ffffffff8616908102918217938490556040805161ffff948516938516939093178352620100008504841660208401528201526401000000009092041660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b6000546001600160a01b031633146119bc5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60008215806119f0575081155b156119fd57506000611a36565b6000611a0884611b33565b905080611a19576000915050611a36565b6301e13380611a288285612a4a565b611a329190612a87565b9150505b92915050565b60008080841580611a51575063ffffffff8416155b15611a6457506000915081905080611b2c565b6000611a6f86611e22565b90506000611a7d828861294c565b90506000611a91828863ffffffff166119e3565b60045490915063ffffffff66010000000000009091048116908816108015611ac65750600454640100000000900461ffff1615155b15611b23576004546000907f000000000000000000000000000000000000000000000000000000000000000090611b0990640100000000900461ffff168b612a4a565b611b139190612a87565b9050611b1f818461294c565b9250505b90945090925090505b9250925092565b6000811580611b46575060045461ffff16155b15611b5357506000919050565b6004547f000000000000000000000000000000000000000000000000000000000000000090611b869061ffff1684612a4a565b611a369190612a87565b3360009081526001602052604090205460ff16611bdd5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b60035415611c535760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b8560008161ffff1611611ca85760405162461bcd60e51b815260206004820152601060248201527f4150522063616e6e6f7420626520302e0000000000000000000000000000000060448201526064016108b8565b856113888161ffff161115611cff5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b856113888161ffff161115611d565760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b856301e133808163ffffffff1610611dd65760405162461bcd60e51b815260206004820152602a60248201527f4c6f636b6f757420706572696f642073686f756c64206265206c65737320746860448201527f616e206120796561722e0000000000000000000000000000000000000000000060648201526084016108b8565b611de48a8a8a8a8a8a61258e565b50505050505050505050565b600061016d821015611e0457506000919050565b8161016d1415611e1657506001919050565b61016d611b8683611b33565b60045460009062010000900461ffff16611e3e57506000919050565b6004547f000000000000000000000000000000000000000000000000000000000000000090611b869062010000900461ffff1684612a4a565b6000546001600160a01b03163314611ed15760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611f4c5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610d5d565b6001600160a01b0381166000908152600560205260408120600281015463ffffffff16611ffa5750600092915050565b600281015463ffffffff1642116120145750600092915050565b600281015460009061202c9063ffffffff164261294c565b9050600061203e8360000154836119e3565b90508260010154816120509190612a0a565b95945050505050565b600061177e33611fca565b6001600160a01b03811660009081526005602052604090208054806120cb5760405162461bcd60e51b815260206004820152601160248201527f4e6f207374616b65206f6e20706f6f6c2e00000000000000000000000000000060448201526064016108b8565b6120d483612377565b6000825560028201548190640100000000900463ffffffff16421080156121085750600454640100000000900461ffff1615155b15612165576004546000907f00000000000000000000000000000000000000000000000000000000000000009061214b90640100000000900461ffff1685612a4a565b6121559190612a87565b9050612161818361294c565b9150505b600283810180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff169055546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390911690829082906370a0823190602401602060405180830381865afa1580156121f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221791906129d4565b101561228b5760405162461bcd60e51b815260206004820152602d60248201527f5374616b696e6720636f6e747261637420646f6573206e6f742068617665206560448201527f6e6f75676820746f6b656e732e0000000000000000000000000000000000000060648201526084016108b8565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820184905282169063a9059cbb906044016020604051808303816000875af11580156122f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231791906129ed565b50826003600001600082825461232d919061294c565b90915550506040518281526001600160a01b038616907ff0dbb2abe50e936f0d3720a39c0debe7706007b2c50286a913f24298e9be36ba9060200160405180910390a25050505050565b6001600160a01b03811660009081526005602052604081209061239983611fca565b90508015612589576002546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242791906129d4565b90508181101561249f5760405162461bcd60e51b815260206004820152602c60248201527f5374616b696e6720636f6e747261637420646f6573206e6f74206f776e20656e60448201527f6f75676820746f6b656e732e000000000000000000000000000000000000000060648201526084016108b8565b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af115801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f91906129ed565b506000600184015560028301805463ffffffff19164263ffffffff161790556040518281526001600160a01b038516907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200161169e565b505050565b6004805461ffff88811663ffffffff19909216821762010000898316908102919091177fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff166401000000009289169283027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000063ffffffff8916908102919091177fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff166a0100000000000000000000881515027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff16176b010000000000000000000000871515021790945560408051938452602084019190915282019290925260608101919091527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a19060800160405180910390a160405182151581527f964f20921e17ae8b70a4c65b26d2e49cad94dd793adacde17460045c001e730f9060200160405180910390a160405181151581527fd841fb25585d5b03ce059d8feae13bf47d138309b7135d6f50daec0e743aeb319060200160405180910390a1505050505050565b803561ffff8116811461275057600080fd5b919050565b60006020828403121561276757600080fd5b6127708261273e565b9392505050565b60006020828403121561278957600080fd5b5035919050565b6001600160a01b03811681146111b457600080fd5b6000602082840312156127b757600080fd5b813561277081612790565b600080604083850312156127d557600080fd5b82356127e081612790565b915060208301356127f081612790565b809150509250929050565b80151581146111b457600080fd5b60006020828403121561281b57600080fd5b8135612770816127fb565b803563ffffffff8116811461275057600080fd5b60006020828403121561284c57600080fd5b61277082612826565b6000806040838503121561286857600080fd5b50508035926020909101359150565b6000806040838503121561288a57600080fd5b8235915061289a60208401612826565b90509250929050565b60008060008060008060c087890312156128bc57600080fd5b6128c58761273e565b95506128d36020880161273e565b94506128e16040880161273e565b93506128ef60608801612826565b925060808701356128ff816127fb565b915060a087013561290f816127fb565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561295e5761295e61291d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061ffff808416806129a7576129a7612963565b92169190910492915050565b600061ffff808416806129c8576129c8612963565b92169190910692915050565b6000602082840312156129e657600080fd5b5051919050565b6000602082840312156129ff57600080fd5b8151612770816127fb565b60008219821115612a1d57612a1d61291d565b500190565b600063ffffffff808316818516808303821115612a4157612a4161291d565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a8257612a8261291d565b500290565b600082612a9657612a96612963565b50049056fea26469706673582212205f6359aa68785e1c6dacec3963c2ab9ebf3a2b48909a68032cc8286cfb9e028a64736f6c634300080a00330000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102775760003560e01c80639ff7dd9411610160578063c8920815116100d8578063f0b37c041161008c578063f40f0f5211610071578063f40f0f5214610828578063fbaed0651461083b578063fe9fbb801461084357600080fd5b8063f0b37c0414610802578063f2fde38b1461081557600080fd5b8063d2d18899116100bd578063d2d18899146107c9578063dcdf92fb146107dc578063f0984985146107ef57600080fd5b8063c8920815146107a3578063cdc634e5146107b657600080fd5b8063aa1a099e1161012f578063aec2f60511610114578063aec2f605146106f3578063b6a5d7de1461077d578063c1e833af1461079057600080fd5b8063aa1a099e146106c5578063ad4bed70146106e057600080fd5b80639ff7dd9414610569578063a0ac2655146105d6578063a694fc3a1461069f578063a9bf1917146106b257600080fd5b80634e71d92d116101f357806372f702f3116101c257806387d8c882116101a757806387d8c8821461051c57806392b30b951461052f57806396ce07951461054257600080fd5b806372f702f3146104f657806383ad068c1461050957600080fd5b80634e71d92d146104b55780635fda307a146104bd5780636341eae2146104d05780636d3a4ac8146104e357600080fd5b80632722c5091161024a5780632f54bf6e1161022f5780632f54bf6e1461045e5780633ae73259146104905780634707d000146104a257600080fd5b80632722c509146104335780632def66201461045657600080fd5b806303fd2a451461027c5780630a4ef5f5146102c05780630fe21264146103f05780631857171c14610405575b600080fd5b6102a37f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b6103846040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506040805160e081018252600354815260045461ffff80821660208401526201000082048116938301939093526401000000008104909216606082015263ffffffff6601000000000000830416608082015260ff6a010000000000000000000083048116151560a08301526b010000000000000000000000909204909116151560c082015290565b6040516102b79190600060e08201905082518252602083015161ffff8082166020850152806040860151166040850152806060860151166060850152505063ffffffff608084015116608083015260a0830151151560a083015260c0830151151560c083015292915050565b6104036103fe366004612755565b61086f565b005b610418610413366004612777565b6109c3565b604080519384526020840192909252908201526060016102b7565b61043b610a11565b6040805161ffff9384168152929091166020830152016102b7565b610403610a44565b61048061046c3660046127a5565b6000546001600160a01b0391821691161490565b60405190151581526020016102b7565b6003545b6040519081526020016102b7565b6104036104b03660046127c2565b610a4f565b610403610c3a565b6104806104cb3660046127a5565b610c43565b6104036104de366004612809565b610ca0565b6104036104f1366004612755565b610d68565b6002546102a3906001600160a01b031681565b6104036105173660046127a5565b610f28565b61040361052a3660046127a5565b61105f565b61040361053d366004612755565b6111b7565b6104947f000000000000000000000000000000000000000000000000000000000000271081565b6105aa6105773660046127a5565b60056020526000908152604090208054600182015460029092015490919063ffffffff8082169164010000000090041684565b60408051948552602085019390935263ffffffff918216928401929092521660608201526080016102b7565b6106626105e43660046127a5565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600560209081526040918290208251608081018452815481526001820154928101929092526002015463ffffffff808216938301939093526401000000009004909116606082015290565b6040805182518152602080840151908201528282015163ffffffff90811692820192909252606092830151909116918101919091526080016102b7565b6104036106ad366004612777565b6112fb565b6104036106c0366004612809565b6116ac565b6106cd611768565b60405161ffff90911681526020016102b7565b6104036106ee36600461283a565b611783565b6040805160808082018352600080835260208084018290528385018290526060938401829052845180840186528281528082018390528086018390528401829052338252600581529084902084519283018552805483526001810154918301919091526002015463ffffffff80821694830194909452640100000000900490921690820152610662565b61040361078b3660046127a5565b611962565b61049461079e366004612855565b6119e3565b6104186107b1366004612877565b611a3c565b6104946107c4366004612777565b611b33565b6104036107d73660046128a3565b611b90565b6104946107ea366004612777565b611df0565b6104946107fd366004612777565b611e22565b6104036108103660046127a5565b611e77565b6104036108233660046127a5565b611ef2565b6104946108363660046127a5565b611fca565b610494612059565b6104806108513660046127a5565b6001600160a01b031660009081526001602052604090205460ff1690565b3360009081526001602052604090205460ff166108c15760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064015b60405180910390fd5b806113888161ffff1611156109185760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b6004805461ffff8481166201000081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff841681179485905560408051918416948416949094178152602081019190915263ffffffff66010000000000008504169281019290925264010000000090920490911660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080015b60405180910390a15050565b60008080836109da57506000915081905080610a0a565b60006109e585611e22565b905060006109f3828761294c565b90506000610a0082611b33565b9195509193509150505b9193909250565b6004546000908190610a299060649061ffff16612992565b600454610a3c9060649061ffff166129b3565b915091509091565b610a4d33612064565b565b3360009081526001602052604090205460ff16610a9c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b6002546001600160a01b0383811691161415610b205760405162461bcd60e51b815260206004820152602160248201527f5374616b696e6720746f6b656e2063616e27742062652077697468647261776e60448201527f210000000000000000000000000000000000000000000000000000000000000060648201526084016108b8565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906129d4565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906129ed565b50505050565b610a4d33612377565b6001600160a01b03811660009081526005602052604081206002015463ffffffff16610c7157506000919050565b506001600160a01b0316600090815260056020526040902060020154640100000000900463ffffffff16421190565b3360009081526001602052604090205460ff16610ced5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600480548215156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff9091161790556040517fd841fb25585d5b03ce059d8feae13bf47d138309b7135d6f50daec0e743aeb3190610d5d90831515815260200190565b60405180910390a150565b3360009081526001602052604090205460ff16610db55760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b8060008161ffff1611610e0a5760405162461bcd60e51b815260206004820152601060248201527f4150522063616e6e6f7420626520302e0000000000000000000000000000000060448201526064016108b8565b60035415610e925760045461ffff9081169083161015610e925760405162461bcd60e51b815260206004820152603460248201527f4150522063616e6e6f74206265206c6f7765726564207768696c65207468657260448201527f652061726520746f6b656e73207374616b65642e00000000000000000000000060648201526084016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8481169182179283905560408051928352620100008404821660208401526601000000000000840463ffffffff169083015264010000000090920490911660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b3360009081526001602052604090205460ff16610f755760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b60035415610feb5760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b6002546040516001600160a01b038084169216907fe9009ef01442bf4abfee682ac3f0470c1bde8d70770cdd78c69d7fa67996b45e90600090a3600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff166110ac5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b6004546a0100000000000000000000900460ff161561110d5760405162461bcd60e51b815260206004820152601860248201527f506f6f6c206973207374696c6c20617661696c61626c652e000000000000000060448201526064016108b8565b6001600160a01b038116600090815260056020526040902060020154640100000000900463ffffffff1642116111ab5760405162461bcd60e51b815260206004820152602660248201527f557365722773206c6f636b2074696d6520686173206e6f742066696e6973686560448201527f64207965742e000000000000000000000000000000000000000000000000000060648201526084016108b8565b6111b481612064565b50565b3360009081526001602052604090205460ff166112045760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b806113888161ffff16111561125b5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff811664010000000061ffff8681169182029283179485905560408051948216938216939093178452620100008504166020840152660100000000000090930463ffffffff169082015260608101919091527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b6000811161134b5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206e6565647320746f20626520626967676572207468616e203060448201526064016108b8565b6004546a0100000000000000000000900460ff166113d15760405162461bcd60e51b815260206004820152602860248201527f506f6f6c206973206e6f7420616363657074696e67207374616b696e6720726960448201527f676874206e6f772e00000000000000000000000000000000000000000000000060648201526084016108b8565b6002546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611441573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146591906129ed565b50336000908152600560205260409020600281015463ffffffff161580159061148e5750805415155b156114a25761149c33611fca565b60018201555b600454829062010000900461ffff16156115d15760006114c184611e22565b90506114cd818361294c565b6004549092506b010000000000000000000000900460ff16156115cf576002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a91906129ed565b506040518181527fd1ce74eb72488bcf540bc94aba2448f7d53ff620763fea0d32f621ca0c81fad49060200160405180910390a15b505b808260000160008282546115e59190612a0a565b909155505060028201805463ffffffff19164263ffffffff81811692909217928390559164010000000090041661165657600454611633906601000000000000900463ffffffff1682612a22565b8360020160046101000a81548163ffffffff021916908363ffffffff1602179055505b816003600001600082825461166b9190612a0a565b909155505060405182815233907f1fdab8a8457aaf782e4b6217d6ffa6f5006eda7e50922dd092b2e1524275d774906020015b60405180910390a250505050565b3360009081526001602052604090205460ff166116f95760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600480548215156a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff9091161790556040517f964f20921e17ae8b70a4c65b26d2e49cad94dd793adacde17460045c001e730f90610d5d90831515815260200190565b60045460009061177e9060649061ffff16612992565b905090565b3360009081526001602052604090205460ff166117d05760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b600354156118465760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b806301e133808163ffffffff16106118c65760405162461bcd60e51b815260206004820152602a60248201527f4c6f636b6f757420706572696f642073686f756c64206265206c65737320746860448201527f616e206120796561722e0000000000000000000000000000000000000000000060648201526084016108b8565b600480547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff8116660100000000000063ffffffff8616908102918217938490556040805161ffff948516938516939093178352620100008504841660208401528201526401000000009092041660608201527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a1906080016109b7565b6000546001600160a01b031633146119bc5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60008215806119f0575081155b156119fd57506000611a36565b6000611a0884611b33565b905080611a19576000915050611a36565b6301e13380611a288285612a4a565b611a329190612a87565b9150505b92915050565b60008080841580611a51575063ffffffff8416155b15611a6457506000915081905080611b2c565b6000611a6f86611e22565b90506000611a7d828861294c565b90506000611a91828863ffffffff166119e3565b60045490915063ffffffff66010000000000009091048116908816108015611ac65750600454640100000000900461ffff1615155b15611b23576004546000907f000000000000000000000000000000000000000000000000000000000000271090611b0990640100000000900461ffff168b612a4a565b611b139190612a87565b9050611b1f818461294c565b9250505b90945090925090505b9250925092565b6000811580611b46575060045461ffff16155b15611b5357506000919050565b6004547f000000000000000000000000000000000000000000000000000000000000271090611b869061ffff1684612a4a565b611a369190612a87565b3360009081526001602052604090205460ff16611bdd5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016108b8565b60035415611c535760405162461bcd60e51b815260206004820152603860248201527f416374696f6e2063616e206f6e6c7920626520646f6e65207768656e2074686560448201527f726520617265206e6f207374616b656420746f6b656e732e000000000000000060648201526084016108b8565b8560008161ffff1611611ca85760405162461bcd60e51b815260206004820152601060248201527f4150522063616e6e6f7420626520302e0000000000000000000000000000000060448201526064016108b8565b856113888161ffff161115611cff5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b856113888161ffff161115611d565760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e6e6f74206265206d6f7265207468616e203530252e00000060448201526064016108b8565b856301e133808163ffffffff1610611dd65760405162461bcd60e51b815260206004820152602a60248201527f4c6f636b6f757420706572696f642073686f756c64206265206c65737320746860448201527f616e206120796561722e0000000000000000000000000000000000000000000060648201526084016108b8565b611de48a8a8a8a8a8a61258e565b50505050505050505050565b600061016d821015611e0457506000919050565b8161016d1415611e1657506001919050565b61016d611b8683611b33565b60045460009062010000900461ffff16611e3e57506000919050565b6004547f000000000000000000000000000000000000000000000000000000000000271090611b869062010000900461ffff1684612a4a565b6000546001600160a01b03163314611ed15760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611f4c5760405162461bcd60e51b815260206004820152600660248201527f214f574e4552000000000000000000000000000000000000000000000000000060448201526064016108b8565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610d5d565b6001600160a01b0381166000908152600560205260408120600281015463ffffffff16611ffa5750600092915050565b600281015463ffffffff1642116120145750600092915050565b600281015460009061202c9063ffffffff164261294c565b9050600061203e8360000154836119e3565b90508260010154816120509190612a0a565b95945050505050565b600061177e33611fca565b6001600160a01b03811660009081526005602052604090208054806120cb5760405162461bcd60e51b815260206004820152601160248201527f4e6f207374616b65206f6e20706f6f6c2e00000000000000000000000000000060448201526064016108b8565b6120d483612377565b6000825560028201548190640100000000900463ffffffff16421080156121085750600454640100000000900461ffff1615155b15612165576004546000907f00000000000000000000000000000000000000000000000000000000000027109061214b90640100000000900461ffff1685612a4a565b6121559190612a87565b9050612161818361294c565b9150505b600283810180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff169055546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0390911690829082906370a0823190602401602060405180830381865afa1580156121f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221791906129d4565b101561228b5760405162461bcd60e51b815260206004820152602d60248201527f5374616b696e6720636f6e747261637420646f6573206e6f742068617665206560448201527f6e6f75676820746f6b656e732e0000000000000000000000000000000000000060648201526084016108b8565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820184905282169063a9059cbb906044016020604051808303816000875af11580156122f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231791906129ed565b50826003600001600082825461232d919061294c565b90915550506040518281526001600160a01b038616907ff0dbb2abe50e936f0d3720a39c0debe7706007b2c50286a913f24298e9be36ba9060200160405180910390a25050505050565b6001600160a01b03811660009081526005602052604081209061239983611fca565b90508015612589576002546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242791906129d4565b90508181101561249f5760405162461bcd60e51b815260206004820152602c60248201527f5374616b696e6720636f6e747261637420646f6573206e6f74206f776e20656e60448201527f6f75676820746f6b656e732e000000000000000000000000000000000000000060648201526084016108b8565b6002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af115801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f91906129ed565b506000600184015560028301805463ffffffff19164263ffffffff161790556040518281526001600160a01b038516907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200161169e565b505050565b6004805461ffff88811663ffffffff19909216821762010000898316908102919091177fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff166401000000009289169283027fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1617660100000000000063ffffffff8916908102919091177fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff166a0100000000000000000000881515027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff16176b010000000000000000000000871515021790945560408051938452602084019190915282019290925260608101919091527f24becb190e7861080e11daf5a661d19ab1812380262d7a15410aa889bd69d4a19060800160405180910390a160405182151581527f964f20921e17ae8b70a4c65b26d2e49cad94dd793adacde17460045c001e730f9060200160405180910390a160405181151581527fd841fb25585d5b03ce059d8feae13bf47d138309b7135d6f50daec0e743aeb319060200160405180910390a1505050505050565b803561ffff8116811461275057600080fd5b919050565b60006020828403121561276757600080fd5b6127708261273e565b9392505050565b60006020828403121561278957600080fd5b5035919050565b6001600160a01b03811681146111b457600080fd5b6000602082840312156127b757600080fd5b813561277081612790565b600080604083850312156127d557600080fd5b82356127e081612790565b915060208301356127f081612790565b809150509250929050565b80151581146111b457600080fd5b60006020828403121561281b57600080fd5b8135612770816127fb565b803563ffffffff8116811461275057600080fd5b60006020828403121561284c57600080fd5b61277082612826565b6000806040838503121561286857600080fd5b50508035926020909101359150565b6000806040838503121561288a57600080fd5b8235915061289a60208401612826565b90509250929050565b60008060008060008060c087890312156128bc57600080fd5b6128c58761273e565b95506128d36020880161273e565b94506128e16040880161273e565b93506128ef60608801612826565b925060808701356128ff816127fb565b915060a087013561290f816127fb565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561295e5761295e61291d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061ffff808416806129a7576129a7612963565b92169190910492915050565b600061ffff808416806129c8576129c8612963565b92169190910692915050565b6000602082840312156129e657600080fd5b5051919050565b6000602082840312156129ff57600080fd5b8151612770816127fb565b60008219821115612a1d57612a1d61291d565b500190565b600063ffffffff808316818516808303821115612a4157612a4161291d565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a8257612a8261291d565b500290565b600082612a9657612a96612963565b50049056fea26469706673582212205f6359aa68785e1c6dacec3963c2ab9ebf3a2b48909a68032cc8286cfb9e028a64736f6c634300080a0033

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

0000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72

-----Decoded View---------------
Arg [0] : t (address): 0x1e2D230C7A7F4C679Fb1378F1f51dEDeAe85Cd72

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e2d230c7a7f4c679fb1378f1f51dedeae85cd72


Deployed Bytecode Sourcemap

1843:13863:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3278:47;;;;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;3278:47:0;;;;;;;;13495:103;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13576:17:0;;;;;;;;13583:10;13576:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13495:103;;;;;;;405:4:1;447:3;436:9;432:19;424:27;;484:6;478:13;467:9;460:32;539:4;531:6;527:17;521:24;564:6;626:2;612:12;608:21;601:4;590:9;586:20;579:51;698:2;690:4;682:6;678:17;672:24;668:33;661:4;650:9;646:20;639:63;770:2;762:4;754:6;750:17;744:24;740:33;733:4;722:9;718:20;711:63;;;842:10;834:4;826:6;822:17;816:24;812:41;805:4;794:9;790:20;783:71;924:4;916:6;912:17;906:24;899:32;892:40;885:4;874:9;870:20;863:70;1003:4;995:6;991:17;985:24;978:32;971:40;964:4;953:9;949:20;942:70;245:773;;;;;5629:215:0;;;;;;:::i;:::-;;:::i;:::-;;14473:325;;;;;;:::i;:::-;;:::i;:::-;;;;1763:25:1;;;1819:2;1804:18;;1797:34;;;;1847:18;;;1840:34;1751:2;1736:18;14473:325:0;1561:319:1;14178:158:0;;;:::i;:::-;;;;2065:6:1;2098:15;;;2080:34;;2150:15;;;;2145:2;2130:18;;2123:43;2028:18;14178:158:0;1885:287:1;10454:60:0;;;:::i;1387:103::-;;;;;;:::i;:::-;1442:4;1477:5;-1:-1:-1;;;;;1466:16:0;;;1477:5;;1466:16;;1387:103;;;;2753:14:1;;2746:22;2728:41;;2716:2;2701:18;1387:103:0;2588:187:1;15598:105:0;15671:10;:27;15598:105;;;2926:25:1;;;2914:2;2899:18;15598:105:0;2780:177:1;13248:242:0;;;;;;:::i;:::-;;:::i;11604:54::-;;;:::i;12944:216::-;;;;;;:::i;:::-;;:::i;6682:126::-;;;;;;:::i;:::-;;:::i;5219:350::-;;;;;;:::i;:::-;;:::i;2786:27::-;;;;;-1:-1:-1;;;;;2786:27:0;;;6816:148;;;;;;:::i;:::-;;:::i;11796:472::-;;;;;;:::i;:::-;;:::i;5906:221::-;;;;;;:::i;:::-;;:::i;3029:45::-;;;;;3201:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3951:25:1;;;4007:2;3992:18;;3985:34;;;;4038:10;4084:15;;;4064:18;;;4057:43;;;;4136:15;4131:2;4116:18;;4109:43;3938:3;3923:19;3201:52:0;3724:434:1;13603:113:0;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13690:21:0;;;;;:13;:21;;;;;;;;;13683:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:113;;;;;4382:13:1;;4364:32;;4452:4;4440:17;;;4434:24;4412:20;;;4405:54;4494:17;;;4488:24;4531:10;4579:21;;;4557:20;;;4550:51;;;;4661:4;4649:17;;;4643:24;4639:33;;;4617:20;;;4610:63;;;;4351:3;4336:19;13603:113:0;4163:516:1;9024:1227:0;;;;;;:::i;:::-;;:::i;6243:132::-;;;;;;:::i;:::-;;:::i;13988:94::-;;;:::i;:::-;;;4858:6:1;4846:19;;;4828:38;;4816:2;4801:18;13988:94:0;4684:188:1;6437:240:0;;;;;;:::i;:::-;;:::i;13721:103::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13808:10:0;13690:21;;:13;:21;;;;;;13683:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13721:103;13988:94;1180;;;;;;:::i;:::-;;:::i;7606:650::-;;;;;;:::i;:::-;;:::i;14929:594::-;;;;;;:::i;:::-;;:::i;8342:187::-;;;;;;:::i;:::-;;:::i;4124:383::-;;;;;;:::i;:::-;;:::i;8534:485::-;;;;;;:::i;:::-;;:::i;10256:193::-;;;;;;:::i;:::-;;:::i;1282:97::-;;;;;;:::i;:::-;;:::i;1613:173::-;;;;;;:::i;:::-;;:::i;7056:545::-;;;;;;:::i;:::-;;:::i;13829:105::-;;;:::i;1498:107::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1578:19:0;1554:4;1578:19;;;:14;:19;;;;;;;;;1498:107;5629:215;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;;;;;;;;;5693:3:::1;3941:4;3934:3;:11;;;;3926:53;;;::::0;-1:-1:-1;;;3926:53:0;;7218:2:1;3926:53:0::1;::::0;::::1;7200:21:1::0;7257:2;7237:18;;;7230:30;7296:31;7276:18;;;7269:59;7345:18;;3926:53:0::1;7016:353:1::0;3926:53:0::1;5703:21:::0;:27;;::::2;::::0;;::::2;::::0;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;5742:97:::2;::::0;;5759:14;;;;;;;;;;7622:34:1;;7687:2;7672:18;;7665:43;;;;5780:29:0::2;::::0;;::::2;;7724:18:1::0;;;7717:51;;;;5811:27:0;;;::::2;::::0;;::::2;7799:2:1::0;7784:18;;7777:43;5742:97:0::2;::::0;7584:3:1;7569:19;5742:97:0::2;;;;;;;;1163:1:::1;5629:215:::0;:::o;14473:325::-;14539:21;;;14606:11;14602:45;;-1:-1:-1;14633:1:0;;-1:-1:-1;14633:1:0;;-1:-1:-1;14633:1:0;14625:16;;14602:45;14651:11;14665:28;14686:6;14665:20;:28::i;:::-;14651:42;-1:-1:-1;14698:14:0;14715:12;14651:42;14715:6;:12;:::i;:::-;14698:29;;14732:9;14744:19;14756:6;14744:11;:19::i;:::-;14778:6;;-1:-1:-1;14786:3:0;;-1:-1:-1;14732:31:0;-1:-1:-1;;14473:325:0;;;;;;:::o;14178:158::-;14288:14;;14235:17;;;;14288:20;;14305:3;;14288:14;;:20;:::i;:::-;14310:14;;:20;;14327:3;;14310:14;;:20;:::i;:::-;14280:51;;;;14178:158;;:::o;10454:60::-;10487:22;10498:10;10487;:22::i;:::-;10454:60::o;13248:242::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;13336:12:::1;::::0;-1:-1:-1;;;;;13331:17:0;;::::1;13336:12:::0;::::1;13331:17;;13323:63;;;::::0;-1:-1:-1;;;13323:63:0;;8917:2:1;13323:63:0::1;::::0;::::1;8899:21:1::0;8956:2;8936:18;;;8929:30;8995:34;8975:18;;;8968:62;9066:3;9046:18;;;9039:31;9087:19;;13323:63:0::1;8715:397:1::0;13323:63:0::1;13409:34;::::0;;;;13437:4:::1;13409:34;::::0;::::1;160:74:1::0;13391:15:0::1;::::0;-1:-1:-1;;;;;13409:19:0;::::1;::::0;::::1;::::0;133:18:1;;13409:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13448:37;::::0;;;;-1:-1:-1;;;;;9498:55:1;;;13448:37:0::1;::::0;::::1;9480:74:1::0;9570:18;;;9563:34;;;13391:52:0;;-1:-1:-1;13448:18:0;;::::1;::::0;::::1;::::0;9453::1;;13448:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13318:172;13248:242:::0;;:::o;11604:54::-;11635:18;11642:10;11635:6;:18::i;12944:216::-;-1:-1:-1;;;;;13028:19:0;;13013:4;13028:19;;;:13;:19;;;;;:34;;;;;13024:69;;-1:-1:-1;13082:5:0;;12944:216;-1:-1:-1;12944:216:0:o;13024:69::-;-1:-1:-1;;;;;;13124:19:0;;;;;:13;:19;;;;;:31;;;;;;;;13106:15;:49;;12944:216::o;6682:126::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;6738:22;:29;;;::::1;;::::0;::::1;::::0;;;::::1;;::::0;;6777:26:::1;::::0;::::1;::::0;::::1;::::0;6763:4;2753:14:1;2746:22;2728:41;;2716:2;2701:18;;2588:187;6777:26:0::1;;;;;;;;6682:126:::0;:::o;5219:350::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;5279:3:::1;3853:1;3847:3;:7;;;3839:36;;;::::0;-1:-1:-1;;;3839:36:0;;10060:2:1;3839:36:0::1;::::0;::::1;10042:21:1::0;10099:2;10079:18;;;10072:30;10138:18;10118;;;10111:46;10174:18;;3839:36:0::1;9858:340:1::0;3839:36:0::1;5293:10:::2;:27:::0;:31;5289:135:::2;;5347:14:::0;;::::2;::::0;;::::2;5340:21:::0;;::::2;;;5332:86;;;::::0;-1:-1:-1;;;5332:86:0;;10405:2:1;5332:86:0::2;::::0;::::2;10387:21:1::0;10444:2;10424:18;;;10417:30;10483:34;10463:18;;;10456:62;10554:22;10534:18;;;10527:50;10594:19;;5332:86:0::2;10203:416:1::0;5332:86:0::2;5428:14:::0;:20;;;::::2;;::::0;;::::2;::::0;;::::2;::::0;;;;5460:104:::2;::::0;;7622:34:1;;;5482:21:0;;::::2;::::0;::::2;7687:2:1::0;7672:18;;7665:43;5505:29:0;;::::2;;;7724:18:1::0;;;7717:51;5536:27:0;;;::::2;::::0;;::::2;7799:2:1::0;7784:18;;7777:43;5460:104:0::2;::::0;7584:3:1;7569:19;5460:104:0::2;7374:452:1::0;6816:148:0;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;3692:10:::1;:27:::0;:32;3684:101:::1;;;::::0;-1:-1:-1;;;3684:101:0;;10826:2:1;3684:101:0::1;::::0;::::1;10808:21:1::0;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;10975:26;10955:18;;;10948:54;11019:19;;3684:101:0::1;10624:420:1::0;3684:101:0::1;6913:12:::2;::::0;6894:35:::2;::::0;-1:-1:-1;;;;;6894:35:0;;::::2;::::0;6913:12:::2;::::0;6894:35:::2;::::0;6913:12:::2;::::0;6894:35:::2;6940:12;:16:::0;;;::::2;-1:-1:-1::0;;;;;6940:16:0;;;::::2;::::0;;;::::2;::::0;;6816:148::o;11796:472::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;11975:20;;;;::::1;;;11974:21;11966:58;;;::::0;-1:-1:-1;;;11966:58:0;;11251:2:1;11966:58:0::1;::::0;::::1;11233:21:1::0;11290:2;11270:18;;;11263:30;11329:26;11309:18;;;11302:54;11373:18;;11966:58:0::1;11049:348:1::0;11966:58:0::1;-1:-1:-1::0;;;;;12129:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;:33:::1;;::::0;;;::::1;;;12111:15;:51;12103:102;;;::::0;-1:-1:-1;;;12103:102:0;;11604:2:1;12103:102:0::1;::::0;::::1;11586:21:1::0;11643:2;11623:18;;;11616:30;11682:34;11662:18;;;11655:62;11753:8;11733:18;;;11726:36;11779:19;;12103:102:0::1;11402:402:1::0;12103:102:0::1;12245:18;12256:6;12245:10;:18::i;:::-;11796:472:::0;:::o;5906:221::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;5976:3:::1;3941:4;3934:3;:11;;;;3926:53;;;::::0;-1:-1:-1;;;3926:53:0;;7218:2:1;3926:53:0::1;::::0;::::1;7200:21:1::0;7257:2;7237:18;;;7230:30;7296:31;7276:18;;;7269:59;7345:18;;3926:53:0::1;7016:353:1::0;3926:53:0::1;5986:27:::0;:33;;;;::::2;::::0;::::2;::::0;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;6031:91:::2;::::0;;6048:14;;;;;;;;;;7622:34:1;;6064:21:0;;::::2;;7687:2:1::0;7672:18;;7665:43;6087:29:0;;;::::2;;;7724:18:1::0;;;7717:51;7799:2;7784:18;;7777:43;;;;6031:91:0::2;::::0;7584:3:1;7569:19;6031:91:0::2;7374:452:1::0;9024:1227:0;9086:1;9077:6;:10;9069:55;;;;-1:-1:-1;;;9069:55:0;;12011:2:1;9069:55:0;;;11993:21:1;;;12030:18;;;12023:30;12089:34;12069:18;;;12062:62;12141:18;;9069:55:0;11809:356:1;9069:55:0;9137:20;;;;;;;9129:73;;;;-1:-1:-1;;;9129:73:0;;12372:2:1;9129:73:0;;;12354:21:1;12411:2;12391:18;;;12384:30;12450:34;12430:18;;;12423:62;12521:10;12501:18;;;12494:38;12549:19;;9129:73:0;12170:404:1;9129:73:0;9216:12;;9209:68;;;;;9243:10;9209:68;;;12842:34:1;9263:4:0;12892:18:1;;;12885:43;12944:18;;;12937:34;;;-1:-1:-1;;;;;9216:12:0;;;;9209:33;;12754:18:1;;9209:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9322:10:0;9282:23;9308:25;;;:13;:25;;;;;9387:19;;;;;;:24;;;;:49;;-1:-1:-1;9415:17:0;;:21;;9387:49;9383:110;;;9462:25;9476:10;9462:13;:25::i;:::-;9444:15;;;:43;9383:110;9578:21;;9525:6;;9578:21;;;;;:25;9574:347;;9620:12;9635:28;9656:6;9635:20;:28::i;:::-;9620:43;-1:-1:-1;9678:19:0;9620:43;9678:19;;:::i;:::-;9799:22;;9678:19;;-1:-1:-1;9799:22:0;;;;;9795:115;;;9837:12;;9830:41;;;;;-1:-1:-1;;;;;9860:4:0;9498:55:1;;9830:41:0;;;9480:74:1;9570:18;;;9563:34;;;9837:12:0;;;;9830:29;;9453:18:1;;9830:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9883:20:0;;2926:25:1;;;9883:20:0;;2914:2:1;2899:18;9883:20:0;;;;;;;9795:115;9605:316;9574:347;9948:11;9927:4;:17;;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;10006:19:0;;;:26;;-1:-1:-1;;10006:26:0;9985:15;10006:26;;;;;;;;;;;;9985:15;10047:16;;;;10043:109;;10111:29;;10104:36;;10111:29;;;;;10104:4;:36;:::i;:::-;10085:4;:16;;;:55;;;;;;;;;;;;;;;;;;10043:109;10187:11;10156:10;:27;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;10210:36:0;;2926:25:1;;;10222:10:0;;10210:36;;2914:2:1;2899:18;10210:36:0;;;;;;;;9064:1187;;;9024:1227;:::o;6243:132::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;6307:20;:29;;;::::1;;::::0;::::1;::::0;;;::::1;;::::0;;6346:24:::1;::::0;::::1;::::0;::::1;::::0;6330:6;2753:14:1;2746:22;2728:41;;2716:2;2701:18;;2588:187;13988:94:0;14057:14;;14037:6;;14057:20;;14074:3;;14057:14;;:20;:::i;:::-;14050:27;;13988:94;:::o;6437:240::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;3692:10:::1;:27:::0;:32;3684:101:::1;;;::::0;-1:-1:-1;;;3684:101:0;;10826:2:1;3684:101:0::1;::::0;::::1;10808:21:1::0;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;10975:26;10955:18;;;10948:54;11019:19;;3684:101:0::1;10624:420:1::0;3684:101:0::1;6525:4:::2;4053:8;4046:4;:15;;;4038:70;;;::::0;-1:-1:-1;;;4038:70:0;;13550:2:1;4038:70:0::2;::::0;::::2;13532:21:1::0;13589:2;13569:18;;;13562:30;13628:34;13608:18;;;13601:62;13699:12;13679:18;;;13672:40;13729:19;;4038:70:0::2;13348:406:1::0;4038:70:0::2;6536:29:::0;:36;;;;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;;::::3;::::0;;;;6582:90:::3;::::0;;6599:14:::3;::::0;;;;;;;;;;7622:34:1;;6615:21:0;;::::3;::::0;::::3;7687:2:1::0;7672:18;;7665:43;7724:18;;7717:51;6644:27:0;;;::::3;;7799:2:1::0;7784:18;;7777:43;6582:90:0::3;::::0;7584:3:1;7569:19;6582:90:0::3;7374:452:1::0;1180:94:0;1442:4;1477:5;-1:-1:-1;;;;;1477:5:0;1039:10;1466:16;1023:38;;;;-1:-1:-1;;;1023:38:0;;13961:2:1;1023:38:0;;;13943:21:1;14000:1;13980:18;;;13973:29;14038:8;14018:18;;;14011:36;14064:18;;1023:38:0;13759:329:1;1023:38:0;-1:-1:-1;;;;;1240:19:0::1;;::::0;;;1262:4:::1;1240:19;::::0;;;;;;;:26;;-1:-1:-1;;1240:26:0::1;::::0;;::::1;::::0;;1180:94::o;7606:650::-;7692:7;7770:11;;;:29;;-1:-1:-1;7785:14:0;;7770:29;7766:55;;;-1:-1:-1;7814:1:0;7807:8;;7766:55;8120:17;8140:19;8152:6;8140:11;:19::i;:::-;8120:39;-1:-1:-1;8168:14:0;8164:40;;8197:1;8190:8;;;;;8164:40;8243:8;8218:21;8230:9;8218;:21;:::i;:::-;8217:34;;;;:::i;:::-;8210:41;;;7606:650;;;;;:::o;14929:594::-;15008:21;;;15075:11;;;:28;;-1:-1:-1;15090:13:0;;;;15075:28;15071:62;;;-1:-1:-1;15119:1:0;;-1:-1:-1;15119:1:0;;-1:-1:-1;15119:1:0;15111:16;;15071:62;15137:11;15151:28;15172:6;15151:20;:28::i;:::-;15137:42;-1:-1:-1;15184:14:0;15201:12;15137:42;15201:6;:12;:::i;:::-;15184:29;;15218:9;15230:38;15251:6;15259:8;15230:38;;:20;:38::i;:::-;15288:29;;15218:50;;-1:-1:-1;15288:29:0;;;;;;;15277:40;;;;:75;;;;-1:-1:-1;15321:27:0;;;;;;;:31;;15277:75;15273:216;;;15400:27;;15369:19;;15430:11;;15391:36;;15400:27;;;;;15391:6;:36;:::i;:::-;:50;;;;:::i;:::-;15369:72;-1:-1:-1;15456:21:0;15369:72;15456:21;;:::i;:::-;;;15354:135;15273:216;15503:6;;-1:-1:-1;15511:3:0;;-1:-1:-1;15516:1:0;-1:-1:-1;14929:594:0;;;;;;:::o;8342:187::-;8400:7;8418:11;;;:34;;-1:-1:-1;8433:14:0;;;;:19;8418:34;8414:60;;;-1:-1:-1;8467:1:0;;8342:187;-1:-1:-1;8342:187:0:o;8414:60::-;8496:14;;8513:11;;8487:23;;8496:14;;8487:6;:23;:::i;:::-;:37;;;;:::i;4124:383::-;1134:10;1554:4;1578:19;;;:14;:19;;;;;;;;1113:48;;;;-1:-1:-1;;;1113:48:0;;6878:2:1;1113:48:0;;;6860:21:1;6917:2;6897:18;;;6890:30;-1:-1:-1;;;6936:18:1;;;6929:41;6987:18;;1113:48:0;6676:335:1;1113:48:0;3692:10:::1;:27:::0;:32;3684:101:::1;;;::::0;-1:-1:-1;;;3684:101:0;;10826:2:1;3684:101:0::1;::::0;::::1;10808:21:1::0;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;10975:26;10955:18;;;10948:54;11019:19;;3684:101:0::1;10624:420:1::0;3684:101:0::1;4312:3:::2;3853:1;3847:3;:7;;;3839:36;;;::::0;-1:-1:-1;;;3839:36:0;;10060:2:1;3839:36:0::2;::::0;::::2;10042:21:1::0;10099:2;10079:18;;;10072:30;10138:18;10118;;;10111:46;10174:18;;3839:36:0::2;9858:340:1::0;3839:36:0::2;4329:10:::3;3941:4;3934:3;:11;;;;3926:53;;;::::0;-1:-1:-1;;;3926:53:0;;7218:2:1;3926:53:0::3;::::0;::::3;7200:21:1::0;7257:2;7237:18;;;7230:30;7296:31;7276:18;;;7269:59;7345:18;;3926:53:0::3;7016:353:1::0;3926:53:0::3;4350:16:::4;3941:4;3934:3;:11;;;;3926:53;;;::::0;-1:-1:-1;;;3926:53:0;;7218:2:1;3926:53:0::4;::::0;::::4;7200:21:1::0;7257:2;7237:18;;;7230:30;7296:31;7276:18;;;7269:59;7345:18;;3926:53:0::4;7016:353:1::0;3926:53:0::4;4387:18:::5;4053:8;4046:4;:15;;;4038:70;;;::::0;-1:-1:-1;;;4038:70:0;;13550:2:1;4038:70:0::5;::::0;::::5;13532:21:1::0;13589:2;13569:18;;;13562:30;13628:34;13608:18;;;13601:62;13699:12;13679:18;;;13672:40;13729:19;;4038:70:0::5;13348:406:1::0;4038:70:0::5;4416:86:::6;4434:3;4439:10;4451:16;4469:18;4489:6;4497:4;4416:17;:86::i;:::-;3984:1:::5;::::4;3880::::3;3790::::2;4124:383:::0;;;;;;:::o;8534:485::-;8593:7;8908:3;8899:6;:12;8895:38;;;-1:-1:-1;8926:1:0;;8534:485;-1:-1:-1;8534:485:0:o;8895:38::-;8941:6;8951:3;8941:13;8937:39;;;-1:-1:-1;8969:1:0;;8534:485;-1:-1:-1;8534:485:0:o;8937:39::-;9011:3;8989:19;9001:6;8989:11;:19::i;10256:193::-;10341:21;;10323:7;;10341:21;;;;;10337:52;;-1:-1:-1;10382:1:0;;10256:193;-1:-1:-1;10256:193:0:o;10337:52::-;10409:21;;10433:11;;10400:30;;10409:21;;;;;10400:6;:30;:::i;1282:97::-;1442:4;1477:5;-1:-1:-1;;;;;1477:5:0;1039:10;1466:16;1023:38;;;;-1:-1:-1;;;1023:38:0;;13961:2:1;1023:38:0;;;13943:21:1;14000:1;13980:18;;;13973:29;14038:8;14018:18;;;14011:36;14064:18;;1023:38:0;13759:329:1;1023:38:0;-1:-1:-1;;;;;1344:19:0::1;1366:5;1344:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;1344:27:0::1;::::0;;1282:97::o;1613:173::-;1442:4;1477:5;-1:-1:-1;;;;;1477:5:0;1039:10;1466:16;1023:38;;;;-1:-1:-1;;;1023:38:0;;13961:2:1;1023:38:0;;;13943:21:1;14000:1;13980:18;;;13973:29;14038:8;14018:18;;;14011:36;14064:18;;1023:38:0;13759:329:1;1023:38:0;1689:5:::1;:11:::0;;;::::1;-1:-1:-1::0;;;;;1689:11:0;::::1;::::0;;::::1;::::0;;1711:19;;;-1:-1:-1;1711:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;1711:26:0::1;::::0;;::::1;::::0;;;1753:25;;160:74:1;;;1753:25:0::1;::::0;133:18:1;1753:25:0::1;14:226:1::0;7056:545:0;-1:-1:-1;;;;;7157:22:0;;7117:7;7157:22;;;:13;:22;;;;;7264:19;;;;;;7260:50;;-1:-1:-1;7303:1:0;;7056:545;-1:-1:-1;;7056:545:0:o;7260:50::-;7382:19;;;;;;7363:15;:38;7359:64;;-1:-1:-1;7416:1:0;;7056:545;-1:-1:-1;;7056:545:0:o;7359:64::-;7465:19;;;;7427:17;;7447:37;;7465:19;;7447:15;:37;:::i;:::-;7427:57;;7489:15;7507:50;7528:4;:17;;;7547:9;7507:20;:50::i;:::-;7489:68;;7581:4;:15;;;7571:7;:25;;;;:::i;:::-;7564:32;7056:545;-1:-1:-1;;;;;7056:545:0:o;13829:105::-;13883:7;13904:25;13918:10;13904:13;:25::i;10519:1080::-;-1:-1:-1;;;;;10595:21:0;;10569:23;10595:21;;;:13;:21;;;;;10638:17;;10668:10;10660:40;;;;-1:-1:-1;;;10660:40:0;;14892:2:1;10660:40:0;;;14874:21:1;14931:2;14911:18;;;14904:30;14970:19;14950:18;;;14943:47;15007:18;;10660:40:0;14690:341:1;10660:40:0;10800:14;10807:6;10800;:14::i;:::-;10839:1;10819:21;;10952:16;;;;10871:6;;10952:16;;;;;10934:15;:34;:69;;;;-1:-1:-1;10972:27:0;;;;;;;:31;;10934:69;10930:201;;;11043:27;;11020:11;;11073;;11034:36;;11043:27;;;;;11034:6;:36;:::i;:::-;:50;;;;:::i;:::-;11020:64;-1:-1:-1;11099:20:0;11020:64;11099:20;;:::i;:::-;;;11005:126;10930:201;11141:16;;;;:20;;;;;;11196:12;11295:36;;;;;11325:4;11141:16;11295:36;;160:74:1;-1:-1:-1;;;;;11196:12:0;;;;11335:13;;11196:12;;11295:21;;133:18:1;;11295:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;11287:111;;;;-1:-1:-1;;;11287:111:0;;15238:2:1;11287:111:0;;;15220:21:1;15277:2;15257:18;;;15250:30;15316:34;15296:18;;;15289:62;15387:15;15367:18;;;15360:43;15420:19;;11287:111:0;15036:409:1;11287:111:0;11461:43;;;;;-1:-1:-1;;;;;9498:55:1;;;11461:43:0;;;9480:74:1;9570:18;;;9563:34;;;11461:20:0;;;;;9453:18:1;;11461:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11540:6;11509:10;:27;;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;;11558:36:0;;2926:25:1;;;-1:-1:-1;;;;;11558:36:0;;;;;2914:2:1;2899:18;11558:36:0;;;;;;;10564:1035;;;;10519:1080;:::o;12273:592::-;-1:-1:-1;;;;;12345:21:0;;12319:23;12345:21;;;:13;:21;;;;;;12391;12359:6;12391:13;:21::i;:::-;12371:41;-1:-1:-1;12421:13:0;;12417:444;;12549:12;;12542:45;;;;;12581:4;12542:45;;;160:74:1;12516:23:0;;-1:-1:-1;;;;;12549:12:0;;12542:30;;133:18:1;;12542:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12516:71;;12620:9;12601:15;:28;;12593:85;;;;-1:-1:-1;;;12593:85:0;;15652:2:1;12593:85:0;;;15634:21:1;15691:2;15671:18;;;15664:30;15730:34;15710:18;;;15703:62;15801:14;15781:18;;;15774:42;15833:19;;12593:85:0;15450:408:1;12593:85:0;12693:12;;12686:48;;;;;-1:-1:-1;;;;;9498:55:1;;;12686:48:0;;;9480:74:1;9570:18;;;9563:34;;;12693:12:0;;;;12686:29;;9453:18:1;;12686:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12758:1:0;12740:15;;;:19;12765;;;:45;;-1:-1:-1;;12765:45:0;12794:15;12765:45;;;;;12823:32;;2926:25:1;;;-1:-1:-1;;;;;12823:32:0;;;;;2914:2:1;2899:18;12823:32:0;2780:177:1;12417:444:0;12314:551;;12273:592;:::o;4591:552::-;4746:14;:20;;;;;;-1:-1:-1;;4771:34:0;;;;;;;;;;;;;;;;4867:50;;4816:46;;;;;;;4867:50;;;;;;;;;;;;;;4956:29;;4922;;;;;4956;;;;;;;;;;;;4997:71;;;7622:34:1;;;7687:2;7672:18;;7665:43;;;;7724:18;;7717:51;;;;7799:2;7784:18;;7777:43;;;;4997:71:0;;7584:3:1;7569:19;4997:71:0;;;;;;;5078:24;;2753:14:1;;2746:22;2728:41;;5078:24:0;;2716:2:1;2701:18;5078:24:0;;;;;;;5112:26;;2753:14:1;;2746:22;2728:41;;5112:26:0;;2716:2:1;2701:18;5112:26:0;;;;;;;4591:552;;;;;;:::o;1023:159:1:-;1090:20;;1150:6;1139:18;;1129:29;;1119:57;;1172:1;1169;1162:12;1119:57;1023:159;;;:::o;1187:184::-;1245:6;1298:2;1286:9;1277:7;1273:23;1269:32;1266:52;;;1314:1;1311;1304:12;1266:52;1337:28;1355:9;1337:28;:::i;:::-;1327:38;1187:184;-1:-1:-1;;;1187:184:1:o;1376:180::-;1435:6;1488:2;1476:9;1467:7;1463:23;1459:32;1456:52;;;1504:1;1501;1494:12;1456:52;-1:-1:-1;1527:23:1;;1376:180;-1:-1:-1;1376:180:1:o;2177:154::-;-1:-1:-1;;;;;2256:5:1;2252:54;2245:5;2242:65;2232:93;;2321:1;2318;2311:12;2336:247;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;2503:9;2490:23;2522:31;2547:5;2522:31;:::i;2962:388::-;3030:6;3038;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;3146:9;3133:23;3165:31;3190:5;3165:31;:::i;:::-;3215:5;-1:-1:-1;3272:2:1;3257:18;;3244:32;3285:33;3244:32;3285:33;:::i;:::-;3337:7;3327:17;;;2962:388;;;;;:::o;3355:118::-;3441:5;3434:13;3427:21;3420:5;3417:32;3407:60;;3463:1;3460;3453:12;3478:241;3534:6;3587:2;3575:9;3566:7;3562:23;3558:32;3555:52;;;3603:1;3600;3593:12;3555:52;3642:9;3629:23;3661:28;3683:5;3661:28;:::i;4877:163::-;4944:20;;5004:10;4993:22;;4983:33;;4973:61;;5030:1;5027;5020:12;5045:184;5103:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:52;;;5172:1;5169;5162:12;5124:52;5195:28;5213:9;5195:28;:::i;5234:248::-;5302:6;5310;5363:2;5351:9;5342:7;5338:23;5334:32;5331:52;;;5379:1;5376;5369:12;5331:52;-1:-1:-1;;5402:23:1;;;5472:2;5457:18;;;5444:32;;-1:-1:-1;5234:248:1:o;5487:252::-;5554:6;5562;5615:2;5603:9;5594:7;5590:23;5586:32;5583:52;;;5631:1;5628;5621:12;5583:52;5667:9;5654:23;5644:33;;5696:37;5729:2;5718:9;5714:18;5696:37;:::i;:::-;5686:47;;5487:252;;;;;:::o;5744:667::-;5838:6;5846;5854;5862;5870;5878;5931:3;5919:9;5910:7;5906:23;5902:33;5899:53;;;5948:1;5945;5938:12;5899:53;5971:28;5989:9;5971:28;:::i;:::-;5961:38;;6018:37;6051:2;6040:9;6036:18;6018:37;:::i;:::-;6008:47;;6074:37;6107:2;6096:9;6092:18;6074:37;:::i;:::-;6064:47;;6130:37;6163:2;6152:9;6148:18;6130:37;:::i;:::-;6120:47;;6217:3;6206:9;6202:19;6189:33;6231:28;6253:5;6231:28;:::i;:::-;6278:5;-1:-1:-1;6335:3:1;6320:19;;6307:33;6349:30;6307:33;6349:30;:::i;:::-;6398:7;6388:17;;;5744:667;;;;;;;;:::o;7831:184::-;7883:77;7880:1;7873:88;7980:4;7977:1;7970:15;8004:4;8001:1;7994:15;8020:125;8060:4;8088:1;8085;8082:8;8079:34;;;8093:18;;:::i;:::-;-1:-1:-1;8130:9:1;;8020:125::o;8150:184::-;8202:77;8199:1;8192:88;8299:4;8296:1;8289:15;8323:4;8320:1;8313:15;8339:187;8378:1;8404:6;8437:2;8434:1;8430:10;8459:3;8449:37;;8466:18;;:::i;:::-;8504:10;;8500:20;;;;;8339:187;-1:-1:-1;;8339:187:1:o;8531:179::-;8562:1;8588:6;8621:2;8618:1;8614:10;8643:3;8633:37;;8650:18;;:::i;:::-;8688:10;;8684:20;;;;;8531:179;-1:-1:-1;;8531:179:1:o;9117:184::-;9187:6;9240:2;9228:9;9219:7;9215:23;9211:32;9208:52;;;9256:1;9253;9246:12;9208:52;-1:-1:-1;9279:16:1;;9117:184;-1:-1:-1;9117:184:1:o;9608:245::-;9675:6;9728:2;9716:9;9707:7;9703:23;9699:32;9696:52;;;9744:1;9741;9734:12;9696:52;9776:9;9770:16;9795:28;9817:5;9795:28;:::i;12982:128::-;13022:3;13053:1;13049:6;13046:1;13043:13;13040:39;;;13059:18;;:::i;:::-;-1:-1:-1;13095:9:1;;12982:128::o;13115:228::-;13154:3;13182:10;13219:2;13216:1;13212:10;13249:2;13246:1;13242:10;13280:3;13276:2;13272:12;13267:3;13264:21;13261:47;;;13288:18;;:::i;:::-;13324:13;;13115:228;-1:-1:-1;;;;13115:228:1:o;14093:::-;14133:7;14259:1;14191:66;14187:74;14184:1;14181:81;14176:1;14169:9;14162:17;14158:105;14155:131;;;14266:18;;:::i;:::-;-1:-1:-1;14306:9:1;;14093:228::o;14326:120::-;14366:1;14392;14382:35;;14397:18;;:::i;:::-;-1:-1:-1;14431:9:1;;14326:120::o

Swarm Source

ipfs://5f6359aa68785e1c6dacec3963c2ab9ebf3a2b48909a68032cc8286cfb9e028a

Block Transaction Difficulty 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
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.