ETH Price: $3,249.06 (-0.33%)
Gas: 2 Gwei

Token

Yield Vault Protocol (YVP)
 

Overview

Max Total Supply

2,000,000,000 YVP

Holders

111

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,359,999.04 YVP

Value
$0.00
0x059725f544416f725626a644b7e35a34b451ceec
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
YieldVaultProtocol

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-06
*/

/*
An innovative staking protocol called "Yield Vault Protocol"

Website: www.yieldvault.finance
Telegram: t.me/YieldVaultProtocol
Twitter: twitter.com/YieldVaultToken
Medium : medium.com/@YieldVaultProtocol
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

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

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

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

    event OwnershipTransferred(address owner);
}

interface IFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract YieldVaultProtocol is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Yield Vault Protocol";
    string private constant _symbol = "YVP";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 2000000000 * (10**_decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 200;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 100;
    uint256 private marketingFee = 150;
    uint256 private developmentFee = 150;
    uint256 private burnFee = 0;
    uint256 private totalFee = 400;
    uint256 private sellFee = 400;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 200) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public development_receiver =
        0x87cdC4049c97d2c6D56B1AD02Bb7d27E54Ae31d0;
    address public marketing_receiver =
        0x06304Bde13912af136739B28c53A3479d63ae660;
    address public liquidity_receiver =
        0x12d831dDcC0ae439996d1EC7f4145635b172a87E;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function removeLimits() external onlyOwner {
        _maxWalletPercent = 10000;
        _maxTxAmountPercent = 10000;
    }

    function updateDevelopmentReceiver (address _newAddress) external  {
        require(msg.sender == development_receiver);
        development_receiver = _newAddress;
    }

    function updateMarketingFeeReceiver (address _newAddress) external {
        require(msg.sender == marketing_receiver);
        marketing_receiver = _newAddress;
    }

    function updateLiquidityReceiver (address _newAddress) external  {
        require(msg.sender == liquidity_receiver);
        liquidity_receiver = _newAddress;
    }

    function TransferERC20Token(address tokenAddress, uint256 amount) external {
        require (msg.sender == development_receiver);
        IERC20(tokenAddress).transferFrom(marketing_receiver, address(this), amount);
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function _maxWalletToken() public view returns (uint256) {
        return (totalSupply() * _maxWalletPercent) / denominator;
    }

    function _maxTxAmount() public view returns (uint256) {
        return (totalSupply() * _maxTxAmountPercent) / denominator;
    }

    function _maxTransferAmount() public view returns (uint256) {
        return (totalSupply() * _maxTransferPercent) / denominator;
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken(),
                "Exceeds maximum wallet amount."
            );
        }
    }

    function swapbackCounters(address sender, address recipient) internal {
        if (recipient == pair && !isFeeExempt[sender]) {
            swapTimes += uint256(1);
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxTransferAmount() ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount() ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketing_receiver).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(development_receiver).transfer(remainingBalance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function shouldSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            aboveMin &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (shouldSwapBack(sender, recipient, amount)) {
            swapAndLiquify(swapThreshold);
            swapTimes = uint256(0);
        }
    }

    function shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            _allowances[marketing_receiver][address(this)] = _maxTxAmount();
            emit Transfer(sender, address(this), feeAmount);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[],"name":"liquidity_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"updateDevelopmentReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"updateLiquidityReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"updateMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004a3565b62000022906377359400620004bb565b600181815560646002819055600381905560c860048190556009805460ff60a01b19169055600a919091556096600b819055600c556000600d819055610190600e819055600f556010556127106011556012805460ff1916909217909155620186a0916200009091620004bb565b6200009c9190620004dd565b601555620186a0600154600a620000b49190620004bb565b620000c09190620004dd565b601655601780546001600160a01b03199081167387cdc4049c97d2c6d56b1ad02bb7d27e54ae31d0179091556018805482167306304bde13912af136739b28c53a3479d63ae660179055601980549091167312d831ddcc0ae439996d1ec7f4145635b172a87e1790553480156200013657600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c4919062000500565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000500565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000500565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055306000908152600760209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560195486168552828520805482168317905560185490951684528184208054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200052b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003e5578160001904821115620003c957620003c96200038e565b80851615620003d757918102915b93841c9390800290620003a9565b509250929050565b600082620003fe575060016200049d565b816200040d575060006200049d565b8160018114620004265760028114620004315762000451565b60019150506200049d565b60ff8411156200044557620004456200038e565b50506001821b6200049d565b5060208310610133831016604e8410600b841016171562000476575081810a6200049d565b620004828383620003a4565b80600019048211156200049957620004996200038e565b0290505b92915050565b6000620004b460ff841683620003ed565b9392505050565b6000816000190483118215151615620004d857620004d86200038e565b500290565b600082620004fb57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200051357600080fd5b81516001600160a01b0381168114620004b457600080fd5b6119dc806200053b6000396000f3fe6080604052600436106101a05760003560e01c80635f7bcd70116100ec57806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e146104e8578063e87655cf1461052e578063ed9a48ba1461054e578063f2fde38b1461056e57600080fd5b806395d89b411461047c578063a8aa1b31146104a8578063a9059cbb146104c857600080fd5b806378109e54116100c657806378109e54146104145780637d1db4a51461042957806388fc36b71461043e578063893d20e81461045e57600080fd5b80635f7bcd70146103a957806370a08231146103c9578063751039fc146103ff57600080fd5b806323b872dd11610159578063313ce56711610133578063313ce567146103055780633f4218e014610321578063420bbf201461035157806348ff2b8b1461038957600080fd5b806323b872dd146102a1578063293230b8146102c15780632f54bf6e146102d657600080fd5b806306fdde03146101ac578063095ea7b3146101fb57806318160ddd1461022b578063190b762c1461024a5780631f976b7e1461026c578063223ffb421461028157600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b50604080518082019091526014815273165a595b190815985d5b1d08141c9bdd1bd8dbdb60621b60208201525b6040516101f2919061168d565b60405180910390f35b34801561020757600080fd5b5061021b6102163660046116f3565b61058e565b60405190151581526020016101f2565b34801561023757600080fd5b506001545b6040519081526020016101f2565b34801561025657600080fd5b5061026a61026536600461171f565b6105a5565b005b34801561027857600080fd5b5061023c6105de565b34801561028d57600080fd5b5061026a61029c3660046116f3565b610608565b3480156102ad57600080fd5b5061021b6102bc36600461173c565b6106a1565b3480156102cd57600080fd5b5061026a61070b565b3480156102e257600080fd5b5061021b6102f136600461171f565b6000546001600160a01b0391821691161490565b34801561031157600080fd5b50604051600981526020016101f2565b34801561032d57600080fd5b5061021b61033c36600461171f565b60076020526000908152604090205460ff1681565b34801561035d57600080fd5b50601754610371906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b34801561039557600080fd5b5061026a6103a436600461178b565b610753565b3480156103b557600080fd5b50601854610371906001600160a01b031681565b3480156103d557600080fd5b5061023c6103e436600461171f565b6001600160a01b031660009081526005602052604090205490565b34801561040b57600080fd5b5061026a6107a8565b34801561042057600080fd5b5061023c6107df565b34801561043557600080fd5b5061023c6107f0565b34801561044a57600080fd5b5061026a61045936600461171f565b610801565b34801561046a57600080fd5b506000546001600160a01b0316610371565b34801561048857600080fd5b5060408051808201909152600381526205956560ec1b60208201526101e5565b3480156104b457600080fd5b50600954610371906001600160a01b031681565b3480156104d457600080fd5b5061021b6104e33660046116f3565b61083a565b3480156104f457600080fd5b5061023c6105033660046117c4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561053a57600080fd5b50601954610371906001600160a01b031681565b34801561055a57600080fd5b5061026a61056936600461171f565b610847565b34801561057a57600080fd5b5061026a61058936600461171f565b610880565b600061059b3384846108fe565b5060015b92915050565b6018546001600160a01b031633146105bc57600080fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006011546003546105ef60015490565b6105f99190611808565b6106039190611827565b905090565b6017546001600160a01b0316331461061f57600080fd5b6018546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101839052908316906323b872dd906064016020604051808303816000875af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190611849565b505050565b60006106ae848484610a22565b61070084336106fb8560405180606001604052806028815260200161197f602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b48565b6108fe565b5060015b9392505050565b6000546001600160a01b0316331461073e5760405162461bcd60e51b815260040161073590611866565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461077d5760405162461bcd60e51b815260040161073590611866565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d25760405162461bcd60e51b815260040161073590611866565b6127106004819055600255565b60006011546004546105ef60015490565b60006011546002546105ef60015490565b6017546001600160a01b0316331461081857600080fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600061059b338484610a22565b6019546001600160a01b0316331461085e57600080fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108aa5760405162461bcd60e51b815260040161073590611866565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610735565b6001600160a01b0382166109c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610735565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610a2d838383610b74565b610a378383610d1e565b610a42838383610db3565b610a4c8383610ea4565b610a57838383610efb565b610a62838383611032565b6001600160a01b038316600090815260056020526040902054610a859082611057565b6001600160a01b038416600090815260056020526040812091909155610aab8484611063565b610ab55781610ac0565b610ac08484846110a9565b6001600160a01b038416600090815260056020526040902054909150610ae690826111c5565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b3a9085815260200190565b60405180910390a350505050565b60008184841115610b6c5760405162461bcd60e51b8152600401610735919061168d565b505050900390565b6001600160a01b038316610bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610735565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610735565b60008111610c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610735565b6001600160a01b03831660009081526005602052604090205481111561069c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610735565b6001600160a01b03821660009081526007602052604090205460ff16158015610d6057506001600160a01b03811660009081526007602052604090205460ff16155b15610daf57600954600160a01b900460ff16610daf5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610735565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610df557506001600160a01b03821660009081526007602052604090205460ff16155b8015610e0f57506009546001600160a01b03838116911614155b8015610e2657506001600160a01b03821661dead14155b1561069c57610e336107df565b6001600160a01b038316600090815260056020526040902054610e5690836111c5565b111561069c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610735565b6009546001600160a01b038281169116148015610eda57506001600160a01b03821660009081526007602052604090205460ff16155b15610daf57600160136000828254610ef29190611886565b90915550505050565b6009546001600160a01b03848116911614610fa157610f186105de565b81111580610f3e57506001600160a01b03831660009081526007602052604090205460ff165b80610f6157506001600160a01b03821660009081526007602052604090205460ff165b610fa15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610735565b610fa96107f0565b81111580610fcf57506001600160a01b03831660009081526007602052604090205460ff165b80610ff257506001600160a01b03821660009081526007602052604090205460ff165b61069c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610735565b61103d8383836111d1565b1561069c5761104d601554611299565b6000601355505050565b60006107048284611899565b6001600160a01b03821660009081526007602052604081205460ff161580156107045750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806110b6858561141c565b11156111be5760006110df6110cb868661141c565b6011546110d9908690611467565b90611473565b306000908152600560205260409020549091506110fc90826111c5565b306000908152600560205260409020556111146107f0565b6018546001600160a01b039081166000908152600660209081526040808320308085529252918290209390935551908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111759085815260200190565b60405180910390a3600d54156111ac576111ac3061dead6111a7600d546110d96011548961146790919063ffffffff16565b610a22565b6111b68382611057565b915050610704565b5092915050565b60006107048284611886565b6016546015543060009081526005602052604081205460145491938510159211159060ff16158015611205575060125460ff165b801561121a5750600954600160a01b900460ff165b80156112235750815b801561124857506001600160a01b03861660009081526007602052604090205460ff16155b801561126d57506001600160a01b03851660009081526007602052604090205460ff16155b801561128657506009546001600160a01b038681169116145b801561128f5750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936112d3936002936110d99391926112cd9283916111c5565b906111c5565b905060006112f6826112f0600a548661147390919063ffffffff16565b90611467565b905060006113048483611057565b9050476113108261147f565b600061131c4783611057565b9050600061133f611338600a548861105790919063ffffffff16565b8390611467565b90506000611358600a548361147390919063ffffffff16565b9050801561136a5761136a86826115d9565b600b5460009061137f906110d9856002611473565b905080156113c3576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c1573d6000803e3d6000fd5b505b478015611406576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611404573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361143e5750600f5461059f565b6009546001600160a01b039081169084160361145d5750600e5461059f565b5060105492915050565b60006107048284611827565b60006107048284611808565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114b4576114b46118ac565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561150d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153191906118c2565b81600181518110611544576115446118ac565b6001600160a01b03928316602091820292909201015260085461156a91309116846108fe565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115a39085906000908690309042906004016118df565b600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b505050505050565b6008546115f19030906001600160a01b0316846108fe565b60085460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611661573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116869190611950565b5050505050565b600060208083528351808285015260005b818110156116ba5785810183015185820160400152820161169e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f057600080fd5b50565b6000806040838503121561170657600080fd5b8235611711816116db565b946020939093013593505050565b60006020828403121561173157600080fd5b8135610704816116db565b60008060006060848603121561175157600080fd5b833561175c816116db565b9250602084013561176c816116db565b929592945050506040919091013590565b80151581146116f057600080fd5b6000806040838503121561179e57600080fd5b82356117a9816116db565b915060208301356117b98161177d565b809150509250929050565b600080604083850312156117d757600080fd5b82356117e2816116db565b915060208301356117b9816116db565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611822576118226117f2565b500290565b60008261184457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561185b57600080fd5b81516107048161177d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082018082111561059f5761059f6117f2565b8181038181111561059f5761059f6117f2565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118d457600080fd5b8151610704816116db565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561192f5784516001600160a01b03168352938301939183019160010161190a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561196557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e00a7e9ffad5709f9a0583b5208fb7b942c94cba0a173e450fa2a25a22ee29364736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80635f7bcd70116100ec57806395d89b411161008a578063dd62ed3e11610064578063dd62ed3e146104e8578063e87655cf1461052e578063ed9a48ba1461054e578063f2fde38b1461056e57600080fd5b806395d89b411461047c578063a8aa1b31146104a8578063a9059cbb146104c857600080fd5b806378109e54116100c657806378109e54146104145780637d1db4a51461042957806388fc36b71461043e578063893d20e81461045e57600080fd5b80635f7bcd70146103a957806370a08231146103c9578063751039fc146103ff57600080fd5b806323b872dd11610159578063313ce56711610133578063313ce567146103055780633f4218e014610321578063420bbf201461035157806348ff2b8b1461038957600080fd5b806323b872dd146102a1578063293230b8146102c15780632f54bf6e146102d657600080fd5b806306fdde03146101ac578063095ea7b3146101fb57806318160ddd1461022b578063190b762c1461024a5780631f976b7e1461026c578063223ffb421461028157600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b50604080518082019091526014815273165a595b190815985d5b1d08141c9bdd1bd8dbdb60621b60208201525b6040516101f2919061168d565b60405180910390f35b34801561020757600080fd5b5061021b6102163660046116f3565b61058e565b60405190151581526020016101f2565b34801561023757600080fd5b506001545b6040519081526020016101f2565b34801561025657600080fd5b5061026a61026536600461171f565b6105a5565b005b34801561027857600080fd5b5061023c6105de565b34801561028d57600080fd5b5061026a61029c3660046116f3565b610608565b3480156102ad57600080fd5b5061021b6102bc36600461173c565b6106a1565b3480156102cd57600080fd5b5061026a61070b565b3480156102e257600080fd5b5061021b6102f136600461171f565b6000546001600160a01b0391821691161490565b34801561031157600080fd5b50604051600981526020016101f2565b34801561032d57600080fd5b5061021b61033c36600461171f565b60076020526000908152604090205460ff1681565b34801561035d57600080fd5b50601754610371906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b34801561039557600080fd5b5061026a6103a436600461178b565b610753565b3480156103b557600080fd5b50601854610371906001600160a01b031681565b3480156103d557600080fd5b5061023c6103e436600461171f565b6001600160a01b031660009081526005602052604090205490565b34801561040b57600080fd5b5061026a6107a8565b34801561042057600080fd5b5061023c6107df565b34801561043557600080fd5b5061023c6107f0565b34801561044a57600080fd5b5061026a61045936600461171f565b610801565b34801561046a57600080fd5b506000546001600160a01b0316610371565b34801561048857600080fd5b5060408051808201909152600381526205956560ec1b60208201526101e5565b3480156104b457600080fd5b50600954610371906001600160a01b031681565b3480156104d457600080fd5b5061021b6104e33660046116f3565b61083a565b3480156104f457600080fd5b5061023c6105033660046117c4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561053a57600080fd5b50601954610371906001600160a01b031681565b34801561055a57600080fd5b5061026a61056936600461171f565b610847565b34801561057a57600080fd5b5061026a61058936600461171f565b610880565b600061059b3384846108fe565b5060015b92915050565b6018546001600160a01b031633146105bc57600080fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60006011546003546105ef60015490565b6105f99190611808565b6106039190611827565b905090565b6017546001600160a01b0316331461061f57600080fd5b6018546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101839052908316906323b872dd906064016020604051808303816000875af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190611849565b505050565b60006106ae848484610a22565b61070084336106fb8560405180606001604052806028815260200161197f602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b48565b6108fe565b5060015b9392505050565b6000546001600160a01b0316331461073e5760405162461bcd60e51b815260040161073590611866565b60405180910390fd5b6009805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461077d5760405162461bcd60e51b815260040161073590611866565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107d25760405162461bcd60e51b815260040161073590611866565b6127106004819055600255565b60006011546004546105ef60015490565b60006011546002546105ef60015490565b6017546001600160a01b0316331461081857600080fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600061059b338484610a22565b6019546001600160a01b0316331461085e57600080fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108aa5760405162461bcd60e51b815260040161073590611866565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610735565b6001600160a01b0382166109c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610735565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610a2d838383610b74565b610a378383610d1e565b610a42838383610db3565b610a4c8383610ea4565b610a57838383610efb565b610a62838383611032565b6001600160a01b038316600090815260056020526040902054610a859082611057565b6001600160a01b038416600090815260056020526040812091909155610aab8484611063565b610ab55781610ac0565b610ac08484846110a9565b6001600160a01b038416600090815260056020526040902054909150610ae690826111c5565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b3a9085815260200190565b60405180910390a350505050565b60008184841115610b6c5760405162461bcd60e51b8152600401610735919061168d565b505050900390565b6001600160a01b038316610bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610735565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610735565b60008111610c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610735565b6001600160a01b03831660009081526005602052604090205481111561069c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610735565b6001600160a01b03821660009081526007602052604090205460ff16158015610d6057506001600160a01b03811660009081526007602052604090205460ff16155b15610daf57600954600160a01b900460ff16610daf5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610735565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610df557506001600160a01b03821660009081526007602052604090205460ff16155b8015610e0f57506009546001600160a01b03838116911614155b8015610e2657506001600160a01b03821661dead14155b1561069c57610e336107df565b6001600160a01b038316600090815260056020526040902054610e5690836111c5565b111561069c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610735565b6009546001600160a01b038281169116148015610eda57506001600160a01b03821660009081526007602052604090205460ff16155b15610daf57600160136000828254610ef29190611886565b90915550505050565b6009546001600160a01b03848116911614610fa157610f186105de565b81111580610f3e57506001600160a01b03831660009081526007602052604090205460ff165b80610f6157506001600160a01b03821660009081526007602052604090205460ff165b610fa15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610735565b610fa96107f0565b81111580610fcf57506001600160a01b03831660009081526007602052604090205460ff165b80610ff257506001600160a01b03821660009081526007602052604090205460ff165b61069c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610735565b61103d8383836111d1565b1561069c5761104d601554611299565b6000601355505050565b60006107048284611899565b6001600160a01b03821660009081526007602052604081205460ff161580156107045750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806110b6858561141c565b11156111be5760006110df6110cb868661141c565b6011546110d9908690611467565b90611473565b306000908152600560205260409020549091506110fc90826111c5565b306000908152600560205260409020556111146107f0565b6018546001600160a01b039081166000908152600660209081526040808320308085529252918290209390935551908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111759085815260200190565b60405180910390a3600d54156111ac576111ac3061dead6111a7600d546110d96011548961146790919063ffffffff16565b610a22565b6111b68382611057565b915050610704565b5092915050565b60006107048284611886565b6016546015543060009081526005602052604081205460145491938510159211159060ff16158015611205575060125460ff165b801561121a5750600954600160a01b900460ff165b80156112235750815b801561124857506001600160a01b03861660009081526007602052604090205460ff16155b801561126d57506001600160a01b03851660009081526007602052604090205460ff16155b801561128657506009546001600160a01b038681169116145b801561128f5750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936112d3936002936110d99391926112cd9283916111c5565b906111c5565b905060006112f6826112f0600a548661147390919063ffffffff16565b90611467565b905060006113048483611057565b9050476113108261147f565b600061131c4783611057565b9050600061133f611338600a548861105790919063ffffffff16565b8390611467565b90506000611358600a548361147390919063ffffffff16565b9050801561136a5761136a86826115d9565b600b5460009061137f906110d9856002611473565b905080156113c3576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156113c1573d6000803e3d6000fd5b505b478015611406576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611404573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361143e5750600f5461059f565b6009546001600160a01b039081169084160361145d5750600e5461059f565b5060105492915050565b60006107048284611827565b60006107048284611808565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114b4576114b46118ac565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561150d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153191906118c2565b81600181518110611544576115446118ac565b6001600160a01b03928316602091820292909201015260085461156a91309116846108fe565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115a39085906000908690309042906004016118df565b600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b505050505050565b6008546115f19030906001600160a01b0316846108fe565b60085460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611661573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116869190611950565b5050505050565b600060208083528351808285015260005b818110156116ba5785810183015185820160400152820161169e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f057600080fd5b50565b6000806040838503121561170657600080fd5b8235611711816116db565b946020939093013593505050565b60006020828403121561173157600080fd5b8135610704816116db565b60008060006060848603121561175157600080fd5b833561175c816116db565b9250602084013561176c816116db565b929592945050506040919091013590565b80151581146116f057600080fd5b6000806040838503121561179e57600080fd5b82356117a9816116db565b915060208301356117b98161177d565b809150509250929050565b600080604083850312156117d757600080fd5b82356117e2816116db565b915060208301356117b9816116db565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611822576118226117f2565b500290565b60008261184457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561185b57600080fd5b81516107048161177d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082018082111561059f5761059f6117f2565b8181038181111561059f5761059f6117f2565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118d457600080fd5b8151610704816116db565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561192f5784516001600160a01b03168352938301939183019160010161190a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561196557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e00a7e9ffad5709f9a0583b5208fb7b942c94cba0a173e450fa2a25a22ee29364736f6c63430008100033

Deployed Bytecode Sourcemap

6005:13227:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:83;;;;;;;;;;-1:-1:-1;8499:5:0;;;;;;;;;;;;-1:-1:-1;;;8499:5:0;;;;8429:83;;;;;;;:::i;:::-;;;;;;;;10649:191;;;;;;;;;;-1:-1:-1;10649:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10649:191:0;1023:187:1;10848:100:0;;;;;;;;;;-1:-1:-1;10928:12:0;;10848:100;;;1361:25:1;;;1349:2;1334:18;10848:100:0;1215:177:1;10062:170:0;;;;;;;;;;-1:-1:-1;10062:170:0;;;;;:::i;:::-;;:::i;:::-;;11235:137;;;;;;;;;;;;;:::i;10416:225::-;;;;;;;;;;-1:-1:-1;10416:225:0;;;;;:::i;:::-;;:::i;18410:442::-;;;;;;;;;;-1:-1:-1;18410:442:0;;;;;:::i;:::-;;:::i;8706:83::-;;;;;;;;;;;;;:::i;4132:103::-;;;;;;;;;;-1:-1:-1;4132:103:0;;;;;:::i;:::-;4187:4;4222:5;-1:-1:-1;;;;;4211:16:0;;;4222:5;;4211:16;;4132:103;8615:83;;;;;;;;;;-1:-1:-1;8615:83:0;;6234:1;2252:36:1;;2240:2;2225:18;8615:83:0;2110:184:1;6578:43:0;;;;;;;;;;-1:-1:-1;6578:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7450:89;;;;;;;;;;-1:-1:-1;7450:89:0;;;;-1:-1:-1;;;;;7450:89:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;7450:89:0;2299:203:1;9615:124:0;;;;;;;;;;-1:-1:-1;9615:124:0;;;;;:::i;:::-;;:::i;7546:87::-;;;;;;;;;;-1:-1:-1;7546:87:0;;;;-1:-1:-1;;;;;7546:87:0;;;8897:119;;;;;;;;;;-1:-1:-1;8897:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8990:18:0;8963:7;8990:18;;;:9;:18;;;;;;;8897:119;9747:125;;;;;;;;;;;;;:::i;10956:132::-;;;;;;;;;;;;;:::i;11096:131::-;;;;;;;;;;;;;:::i;9880:174::-;;;;;;;;;;-1:-1:-1;9880:174:0;;;;;:::i;:::-;;:::i;8797:92::-;;;;;;;;;;-1:-1:-1;8849:7:0;8876:5;-1:-1:-1;;;;;8876:5:0;8797:92;;8520:87;;;;;;;;;;-1:-1:-1;8592:7:0;;;;;;;;;;;;-1:-1:-1;;;8592:7:0;;;;8520:87;;6649:19;;;;;;;;;;-1:-1:-1;6649:19:0;;;;-1:-1:-1;;;;;6649:19:0;;;9024:197;;;;;;;;;;-1:-1:-1;9024:197:0;;;;;:::i;:::-;;:::i;9229:184::-;;;;;;;;;;-1:-1:-1;9229:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9378:18:0;;;9346:7;9378:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9229:184;7640:87;;;;;;;;;;-1:-1:-1;7640:87:0;;;;-1:-1:-1;;;;;7640:87:0;;;10240:168;;;;;;;;;;-1:-1:-1;10240:168:0;;;;;:::i;:::-;;:::i;4243:136::-;;;;;;;;;;-1:-1:-1;4243:136:0;;;;;:::i;:::-;;:::i;10649:191::-;10751:4;10773:37;10782:10;10794:7;10803:6;10773:8;:37::i;:::-;-1:-1:-1;10828:4:0;10649:191;;;;;:::o;10062:170::-;10162:18;;-1:-1:-1;;;;;10162:18:0;10148:10;:32;10140:41;;;;;;10192:18;:32;;-1:-1:-1;;;;;;10192:32:0;-1:-1:-1;;;;;10192:32:0;;;;;;;;;;10062:170::o;11235:137::-;11286:7;11353:11;;11330:19;;11314:13;10928:12;;;10848:100;11314:13;:35;;;;:::i;:::-;11313:51;;;;:::i;:::-;11306:58;;11235:137;:::o;10416:225::-;10525:20;;-1:-1:-1;;;;;10525:20:0;10511:10;:34;10502:44;;;;;;10591:18;;10557:76;;-1:-1:-1;;;10557:76:0;;-1:-1:-1;;;;;10591:18:0;;;10557:76;;;4437:34:1;10619:4:0;4487:18:1;;;4480:43;4539:18;;;4532:34;;;10557:33:0;;;;;;4372:18:1;;10557:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10416:225;;:::o;18410:442::-;18542:4;18559:36;18569:6;18577:9;18588:6;18559:9;:36::i;:::-;18606:216;18629:6;18650:10;18675:136;18729:6;18675:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18675:19:0;;;;;;:11;:19;;;;;;;;18695:10;18675:31;;;;;;;;;:136;:35;:136::i;:::-;18606:8;:216::i;:::-;-1:-1:-1;18840:4:0;18410:442;;;;;;:::o;8706:83::-;4187:4;4222:5;-1:-1:-1;;;;;4222:5:0;4082:10;4211:16;4066:38;;;;-1:-1:-1;;;4066:38:0;;;;;;;:::i;:::-;;;;;;;;;8760:14:::1;:21:::0;;-1:-1:-1;;;;8760:21:0::1;-1:-1:-1::0;;;8760:21:0::1;::::0;;8706:83::o;9615:124::-;4187:4;4222:5;-1:-1:-1;;;;;4222:5:0;4082:10;4211:16;4066:38;;;;-1:-1:-1;;;4066:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9699:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9699:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9615:124::o;9747:125::-;4187:4;4222:5;-1:-1:-1;;;;;4222:5:0;4082:10;4211:16;4066:38;;;;-1:-1:-1;;;4066:38:0;;;;;;;:::i;:::-;9821:5:::1;9801:17;:25:::0;;;9837:19:::1;:27:::0;9747:125::o;10956:132::-;11004:7;11069:11;;11048:17;;11032:13;10928:12;;;10848:100;11096:131;11141:7;11208:11;;11185:19;;11169:13;10928:12;;;10848:100;9880:174;9980:20;;-1:-1:-1;;;;;9980:20:0;9966:10;:34;9958:43;;;;;;10012:20;:34;;-1:-1:-1;;;;;;10012:34:0;-1:-1:-1;;;;;10012:34:0;;;;;;;;;;9880:174::o;9024:197::-;9129:4;9151:40;9161:10;9173:9;9184:6;9151:9;:40::i;10240:168::-;10338:18;;-1:-1:-1;;;;;10338:18:0;10324:10;:32;10316:41;;;;;;10368:18;:32;;-1:-1:-1;;;;;;10368:32:0;-1:-1:-1;;;;;10368:32:0;;;;;;;;;;10240:168::o;4243:136::-;4187:4;4222:5;-1:-1:-1;;;;;4222:5:0;4082:10;4211:16;4066:38;;;;-1:-1:-1;;;4066:38:0;;;;;;;:::i;:::-;4319:5:::1;:11:::0;;-1:-1:-1;;;;;;4319:11:0::1;-1:-1:-1::0;;;;;4319:11:0;::::1;::::0;;::::1;::::0;;;4346:25:::1;::::0;2445:51:1;;;4346:25:0::1;::::0;2433:2:1;2418:18;4346:25:0::1;;;;;;;4243:136:::0;:::o;18860:369::-;-1:-1:-1;;;;;18987:19:0;;18979:68;;;;-1:-1:-1;;;18979:68:0;;5579:2:1;18979:68:0;;;5561:21:1;5618:2;5598:18;;;5591:30;5657:34;5637:18;;;5630:62;-1:-1:-1;;;5708:18:1;;;5701:34;5752:19;;18979:68:0;5377:400:1;18979:68:0;-1:-1:-1;;;;;19066:21:0;;19058:68;;;;-1:-1:-1;;;19058:68:0;;5984:2:1;19058:68:0;;;5966:21:1;6023:2;6003:18;;;5996:30;6062:34;6042:18;;;6035:62;-1:-1:-1;;;6113:18:1;;;6106:32;6155:19;;19058:68:0;5782:398:1;19058:68:0;-1:-1:-1;;;;;19137:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19189:32;;1361:25:1;;;19189:32:0;;1334:18:1;19189:32:0;;;;;;;18860:369;;;:::o;11936:744::-;12059:37;12070:6;12078:9;12089:6;12059:10;:37::i;:::-;12107:38;12127:6;12135:9;12107:19;:38::i;:::-;12156:41;12171:6;12179:9;12190:6;12156:14;:41::i;:::-;12208:35;12225:6;12233:9;12208:16;:35::i;:::-;12254:39;12267:6;12275:9;12286:6;12254:12;:39::i;:::-;12304:35;12313:6;12321:9;12332:6;12304:8;:35::i;:::-;-1:-1:-1;;;;;12370:17:0;;;;;;:9;:17;;;;;;:29;;12392:6;12370:21;:29::i;:::-;-1:-1:-1;;;;;12350:17:0;;;;;;:9;:17;;;;;:49;;;;12435:32;12360:6;12457:9;12435:13;:32::i;:::-;:104;;12533:6;12435:104;;;12483:34;12491:6;12499:9;12510:6;12483:7;:34::i;:::-;-1:-1:-1;;;;;12573:20:0;;;;;;:9;:20;;;;;;12410:129;;-1:-1:-1;12573:40:0;;12410:129;12573:24;:40::i;:::-;-1:-1:-1;;;;;12550:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12629:43;;;;;;;;;;12657:14;1361:25:1;;1349:2;1334:18;;1215:177;12629:43:0;;;;;;;;12048:632;11936:744;;;:::o;2113:240::-;2233:7;2294:12;2286:6;;;;2278:29;;;;-1:-1:-1;;;2278:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2329:5:0;;;2113:240::o;11380:548::-;-1:-1:-1;;;;;11518:20:0;;11510:70;;;;-1:-1:-1;;;11510:70:0;;6387:2:1;11510:70:0;;;6369:21:1;6426:2;6406:18;;;6399:30;6465:34;6445:18;;;6438:62;-1:-1:-1;;;6516:18:1;;;6509:35;6561:19;;11510:70:0;6185:401:1;11510:70:0;-1:-1:-1;;;;;11599:23:0;;11591:71;;;;-1:-1:-1;;;11591:71:0;;6793:2:1;11591:71:0;;;6775:21:1;6832:2;6812:18;;;6805:30;6871:34;6851:18;;;6844:62;-1:-1:-1;;;6922:18:1;;;6915:33;6965:19;;11591:71:0;6591:399:1;11591:71:0;11712:1;11695:6;:19;11673:110;;;;-1:-1:-1;;;11673:110:0;;7197:2:1;11673:110:0;;;7179:21:1;7236:2;7216:18;;;7209:30;7275:34;7255:18;;;7248:62;-1:-1:-1;;;7326:18:1;;;7319:39;7375:19;;11673:110:0;6995:405:1;11673:110:0;-1:-1:-1;;;;;8990:18:0;;8963:7;8990:18;;;:9;:18;;;;;;11816:6;:27;;11794:126;;;;-1:-1:-1;;;11794:126:0;;7607:2:1;11794:126:0;;;7589:21:1;7646:2;7626:18;;;7619:30;7685:34;7665:18;;;7658:62;-1:-1:-1;;;7736:18:1;;;7729:47;7793:19;;11794:126:0;7405:413:1;12688:240:0;-1:-1:-1;;;;;12805:19:0;;;;;;:11;:19;;;;;;;;12804:20;:47;;;;-1:-1:-1;;;;;;12829:22:0;;;;;;:11;:22;;;;;;;;12828:23;12804:47;12800:121;;;12876:14;;-1:-1:-1;;;12876:14:0;;;;12868:41;;;;-1:-1:-1;;;12868:41:0;;8025:2:1;12868:41:0;;;8007:21:1;8064:2;8044:18;;;8037:30;-1:-1:-1;;;8083:18:1;;;8076:44;8137:18;;12868:41:0;7823:338:1;12868:41:0;12688:240;;:::o;12936:491::-;-1:-1:-1;;;;;13089:19:0;;;;;;:11;:19;;;;;;;;13088:20;:60;;;;-1:-1:-1;;;;;;13126:22:0;;;;;;:11;:22;;;;;;;;13125:23;13088:60;:103;;;;-1:-1:-1;13186:4:0;;-1:-1:-1;;;;;13165:26:0;;;13186:4;;13165:26;;13088:103;:146;;;;-1:-1:-1;;;;;;13208:26:0;;7401:42;13208:26;;13088:146;13070:350;;;13325:17;:15;:17::i;:::-;-1:-1:-1;;;;;13288:20:0;;;;;;:9;:20;;;;;;:32;;13313:6;13288:24;:32::i;:::-;13287:55;;13261:147;;;;-1:-1:-1;;;13261:147:0;;8368:2:1;13261:147:0;;;8350:21:1;8407:2;8387:18;;;8380:30;8446:32;8426:18;;;8419:60;8496:18;;13261:147:0;8166:354:1;13435:185:0;13533:4;;-1:-1:-1;;;;;13520:17:0;;;13533:4;;13520:17;:41;;;;-1:-1:-1;;;;;;13542:19:0;;;;;;:11;:19;;;;;;;;13541:20;13520:41;13516:97;;;13599:1;13578:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13435:185:0;;:::o;13628:571::-;13774:4;;-1:-1:-1;;;;;13764:14:0;;;13774:4;;13764:14;13760:247;;13831:20;:18;:20::i;:::-;13821:6;:30;;:74;;;-1:-1:-1;;;;;;13876:19:0;;;;;;:11;:19;;;;;;;;13821:74;:121;;;-1:-1:-1;;;;;;13920:22:0;;;;;;:11;:22;;;;;;;;13821:121;13795:200;;;;-1:-1:-1;;;13795:200:0;;8857:2:1;13795:200:0;;;8839:21:1;8896:2;8876:18;;;8869:30;-1:-1:-1;;;8915:18:1;;;8908:47;8972:18;;13795:200:0;8655:341:1;13795:200:0;14049:14;:12;:14::i;:::-;14039:6;:24;;:64;;;-1:-1:-1;;;;;;14084:19:0;;;;;;:11;:19;;;;;;;;14039:64;:107;;;-1:-1:-1;;;;;;14124:22:0;;;;;;:11;:22;;;;;;;;14039:107;14017:174;;;;-1:-1:-1;;;14017:174:0;;8857:2:1;14017:174:0;;;8839:21:1;8896:2;8876:18;;;8869:30;-1:-1:-1;;;8915:18:1;;;8908:47;8972:18;;14017:174:0;8655:341:1;16766:270:0;16893:41;16908:6;16916:9;16927:6;16893:14;:41::i;:::-;16889:140;;;16951:29;16966:13;;16951:14;:29::i;:::-;17015:1;16995:9;:22;16766:270;;;:::o;413:98::-;471:7;498:5;502:1;498;:5;:::i;17044:192::-;-1:-1:-1;;;;;17182:19:0;;17152:4;17182:19;;;:11;:19;;;;;;;;17181:20;:47;;;;-1:-1:-1;;;;;;;17206:22:0;;;;;:11;:22;;;;;;;;17205:23;;17044:192;-1:-1:-1;17044:192:0:o;17555:847::-;17675:7;17732:1;17699:30;17711:6;17719:9;17699:11;:30::i;:::-;:34;17695:676;;;17750:17;17770:91;17816:30;17828:6;17836:9;17816:11;:30::i;:::-;17781:11;;17770:23;;:6;;:10;:23::i;:::-;:27;;:91::i;:::-;17921:4;17903:24;;;;:9;:24;;;;;;17750:111;;-1:-1:-1;17903:39:0;;17750:111;17903:28;:39::i;:::-;17894:4;17876:24;;;;:9;:24;;;;;:66;18006:14;:12;:14::i;:::-;17969:18;;-1:-1:-1;;;;;17969:18:0;;;17957:31;;;;:11;:31;;;;;;;;17997:4;17957:46;;;;;;;;;:63;;;;18040:42;;;;;;;;;18072:9;1361:25:1;;1349:2;1334:18;;1215:177;18040:42:0;;;;;;;;18101:7;;:20;18097:220;;18142:159;18182:4;7401:42;18246:36;18274:7;;18246:23;18257:11;;18246:6;:10;;:23;;;;:::i;:36::-;18142:9;:159::i;:::-;18338:21;:6;18349:9;18338:10;:21::i;:::-;18331:28;;;;;17695:676;-1:-1:-1;18388:6:0;17555:847;-1:-1:-1;;17555:847:0:o;307:98::-;365:7;392:5;396:1;392;:5;:::i;16220:538::-;16395:15;;16471:13;;16461:4;16352;8990:18;;;:9;:18;;;;;;16516:8;;16352:4;;16385:25;;;;-1:-1:-1;16443:41:0;;16516:8;;16515:9;:37;;;;-1:-1:-1;16541:11:0;;;;16515:37;:68;;;;-1:-1:-1;16569:14:0;;-1:-1:-1;;;16569:14:0;;;;16515:68;:93;;;;;16600:8;16515:93;:130;;;;-1:-1:-1;;;;;;16626:19:0;;;;;;:11;:19;;;;;;;;16625:20;16515:130;:170;;;;-1:-1:-1;;;;;;16663:22:0;;;;;;:11;:22;;;;;;;;16662:23;16515:170;:204;;;;-1:-1:-1;16715:4:0;;-1:-1:-1;;;;;16702:17:0;;;16715:4;;16702:17;16515:204;:235;;;;;16736:14;16515:235;16495:255;16220:538;-1:-1:-1;;;;;;16220:538:0:o;14207:1192::-;7298:8;:15;;-1:-1:-1;;7298:15:0;7309:4;7298:15;;;;;;14358:14:::1;::::0;14340:12:::1;::::0;14316::::1;::::0;7298:8;;14301:90:::1;::::0;14389:1:::1;::::0;14316:57:::1;::::0;14358:14;;14316:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;14301:90::-;14278:113;;14402:32;14437:66;14480:12;14437:24;14448:12;;14437:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:66::i;:::-;14402:101:::0;-1:-1:-1;14514:14:0::1;14531:36;:6:::0;14402:101;14531:10:::1;:36::i;:::-;14514:53:::0;-1:-1:-1;14603:21:0::1;14635:24;14514:53:::0;14635:16:::1;:24::i;:::-;14670:20;14693:41;:21;14719:14:::0;14693:25:::1;:41::i;:::-;14670:64;;14745:19;14767:48;14784:30;14801:12;;14784;:16;;:30;;;;:::i;:::-;14767:12:::0;;:16:::1;:48::i;:::-;14745:70;;14826:29;14858;14874:12;;14858:11;:15;;:29;;;;:::i;:::-;14826:61:::0;-1:-1:-1;14902:34:0;;14898:128:::1;;14953:61;14966:24;14992:21;14953:12;:61::i;:::-;15082:12;::::0;15036:20:::1;::::0;15059:36:::1;::::0;:18:::1;:11:::0;15075:1:::1;15059:15;:18::i;:36::-;15036:59:::0;-1:-1:-1;15110:16:0;;15106:99:::1;;15151:18;::::0;15143:50:::1;::::0;-1:-1:-1;;;;;15151:18:0;;::::1;::::0;15143:50;::::1;;;::::0;15180:12;;15151:18:::1;15143:50:::0;15151:18;15143:50;15180:12;15151:18;15143:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15106:99;15242:21;15278:29:::0;;15274:118:::1;;15332:20;::::0;15324:56:::1;::::0;-1:-1:-1;;;;;15332:20:0;;::::1;::::0;15324:56;::::1;;;::::0;15363:16;;15332:20:::1;15324:56:::0;15332:20;15324:56;15363:16;15332:20;15324:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15274:118;-1:-1:-1::0;;7336:8:0;:16;;-1:-1:-1;;7336:16:0;;;-1:-1:-1;;;;;;;;14207:1192:0:o;17244:303::-;17392:4;;17350:7;;-1:-1:-1;;;;;17392:4:0;;;17379:17;;;;17375:64;;-1:-1:-1;17420:7:0;;17413:14;;17375:64;17463:4;;-1:-1:-1;;;;;17463:4:0;;;17453:14;;;;17449:62;;-1:-1:-1;17491:8:0;;17484:15;;17449:62;-1:-1:-1;17528:11:0;;17244:303;;;;:::o;625:98::-;683:7;710:5;714:1;710;:5;:::i;519:98::-;577:7;604:5;608:1;604;:5;:::i;15768:444::-;15858:16;;;15872:1;15858:16;;;;;;;;15834:21;;15858:16;;;;;;;;;;-1:-1:-1;15858:16:0;15834:40;;15903:4;15885;15890:1;15885:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15885:23:0;;;:7;;;;;;;;;;:23;;;;15929:6;;:13;;;-1:-1:-1;;;15929:13:0;;;;:6;;;;;:11;;:13;;;;;15885:7;;15929:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15919:4;15924:1;15919:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15919:23:0;;;:7;;;;;;;;;:23;15985:6;;15953:53;;15970:4;;15985:6;15994:11;15953:8;:53::i;:::-;16017:6;;:187;;-1:-1:-1;;;16017:187:0;;-1:-1:-1;;;;;16017:6:0;;;;:57;;:187;;16089:11;;16017:6;;16131:4;;16158;;16178:15;;16017:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15823:389;15768:444;:::o;15407:353::-;15520:6;;15488:53;;15505:4;;-1:-1:-1;;;;;15520:6:0;15529:11;15488:8;:53::i;:::-;15552:6;;15693:18;;15552:200;;-1:-1:-1;;;15552:200:0;;15615:4;15552:200;;;10980:34:1;11030:18;;;11023:34;;;15552:6:0;11073:18:1;;;11066:34;;;11116:18;;;11109:34;-1:-1:-1;;;;;15693:18:0;;;11159:19:1;;;11152:44;15726:15:0;11212:19:1;;;11205:35;15552:6:0;;;:22;;15582:9;;10914:19:1;;15552:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15407:353;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2507:118::-;2593:5;2586:13;2579:21;2572:5;2569:32;2559:60;;2615:1;2612;2605:12;2630:382;2695:6;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;2811:9;2798:23;2830:31;2855:5;2830:31;:::i;:::-;2880:5;-1:-1:-1;2937:2:1;2922:18;;2909:32;2950:30;2909:32;2950:30;:::i;:::-;2999:7;2989:17;;;2630:382;;;;;:::o;3017:388::-;3085:6;3093;3146:2;3134:9;3125:7;3121:23;3117:32;3114:52;;;3162:1;3159;3152:12;3114:52;3201:9;3188:23;3220:31;3245:5;3220:31;:::i;:::-;3270:5;-1:-1:-1;3327:2:1;3312:18;;3299:32;3340:33;3299:32;3340:33;:::i;3670:127::-;3731:10;3726:3;3722:20;3719:1;3712:31;3762:4;3759:1;3752:15;3786:4;3783:1;3776:15;3802:168;3842:7;3908:1;3904;3900:6;3896:14;3893:1;3890:21;3885:1;3878:9;3871:17;3867:45;3864:71;;;3915:18;;:::i;:::-;-1:-1:-1;3955:9:1;;3802:168::o;3975:217::-;4015:1;4041;4031:132;;4085:10;4080:3;4076:20;4073:1;4066:31;4120:4;4117:1;4110:15;4148:4;4145:1;4138:15;4031:132;-1:-1:-1;4177:9:1;;3975:217::o;4577:245::-;4644:6;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4745:9;4739:16;4764:28;4786:5;4764:28;:::i;4827:329::-;5029:2;5011:21;;;5068:1;5048:18;;;5041:29;-1:-1:-1;;;5101:2:1;5086:18;;5079:36;5147:2;5132:18;;4827:329::o;8525:125::-;8590:9;;;8611:10;;;8608:36;;;8624:18;;:::i;9001:128::-;9068:9;;;9089:11;;;9086:37;;;9103:18;;:::i;9266:127::-;9327:10;9322:3;9318:20;9315:1;9308:31;9358:4;9355:1;9348:15;9382:4;9379:1;9372:15;9398:251;9468:6;9521:2;9509:9;9500:7;9496:23;9492:32;9489:52;;;9537:1;9534;9527:12;9489:52;9569:9;9563:16;9588:31;9613:5;9588:31;:::i;9654:980::-;9916:4;9964:3;9953:9;9949:19;9995:6;9984:9;9977:25;10021:2;10059:6;10054:2;10043:9;10039:18;10032:34;10102:3;10097:2;10086:9;10082:18;10075:31;10126:6;10161;10155:13;10192:6;10184;10177:22;10230:3;10219:9;10215:19;10208:26;;10269:2;10261:6;10257:15;10243:29;;10290:1;10300:195;10314:6;10311:1;10308:13;10300:195;;;10379:13;;-1:-1:-1;;;;;10375:39:1;10363:52;;10470:15;;;;10435:12;;;;10411:1;10329:9;10300:195;;;-1:-1:-1;;;;;;;10551:32:1;;;;10546:2;10531:18;;10524:60;-1:-1:-1;;;10615:3:1;10600:19;10593:35;10512:3;9654:980;-1:-1:-1;;;9654:980:1:o;11251:306::-;11339:6;11347;11355;11408:2;11396:9;11387:7;11383:23;11379:32;11376:52;;;11424:1;11421;11414:12;11376:52;11453:9;11447:16;11437:26;;11503:2;11492:9;11488:18;11482:25;11472:35;;11547:2;11536:9;11532:18;11526:25;11516:35;;11251:306;;;;;:::o

Swarm Source

ipfs://2e00a7e9ffad5709f9a0583b5208fb7b942c94cba0a173e450fa2a25a22ee293
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.