ETH Price: $3,098.71 (-4.17%)
 

Overview

Max Total Supply

245,210.901002742619066284 S3D

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
127,166.592057359950919936 S3D

Value
$0.00
0x2675FE1424F664EECFE992034a537152baaea8E7
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:
Swap3D

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-14
*/

pragma solidity ^0.4.25;


interface ERC20 {
    function totalSupply() external view returns (uint256 supply);
    function balanceOf(address _owner) external view returns (uint256 balance);
    function transfer(address _to, uint256 _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function approve(address _spender, uint256 _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
    function decimals() external view returns (uint256 digits);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


contract Swap3D {
    
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }

    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );

    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

    event Transfer(
        address indexed from, 
        address indexed to, 
        uint256 tokens
    );

    string public name = "Swap3D";
    string public symbol = "S3D";
    uint8 public constant decimals = 18;
    uint8 internal constant dividendFee_ = 10; // 10%
    uint8 internal constant sellFee_ = 10; // 10%
    uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;
    uint256 internal constant magnitude = 2**64;
    address internal constant tokenAddress = address(0xCC4304A31d09258b0029eA7FE63d032f52e44EFe);  // TrustSwap (SWAP) token address
    ERC20 internal constant _contract = ERC20(tokenAddress);

    // Admin for premine lock 
    address internal administrator;
    uint256 public stakingRequirement = 10e18; // 10 SWAP minimum 
    uint256 public releaseTime = 1594728000; // Tuesday, July 14, 2020 12:00:00 PM GMT

    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;

    constructor() public {
        administrator = msg.sender;
    }

    function() external payable {
        revert();
    }
    
    function checkAndTransfer(uint256 _amount) private {
        require(
            _contract.transferFrom(
                msg.sender, 
                address(this), 
                _amount
            ) == true, "transfer must succeed"
        );
    }

    function buy(uint256 _amount, address _referredBy) public returns(uint256) {
        checkAndTransfer(_amount);
        
        return purchaseTokens(
            _amount, 
            _referredBy, 
            msg.sender
        );
    }

    function reinvest() public onlyStronghands() {
        uint256 _dividends = myDividends(false); 

        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        uint256 _tokens = purchaseTokens(
            _dividends, 
            address(0x0), 
            _customerAddress
        );
        
        emit onReinvestment(
            _customerAddress,
            _dividends,
            _tokens
        );
    }

    function exit() public {
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if (_tokens > 0) sell(_tokens);
        withdraw();
    }

    function withdraw() public onlyStronghands() {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false);

        payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        _contract.transfer(_customerAddress, _dividends);

        emit onWithdraw(
            _customerAddress,
            _dividends
        );
    }

    function sell(uint256 _amountOfTokens) public onlyBagholders() {
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div((_ethereum * sellFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);

        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(
            tokenBalanceLedger_[_customerAddress],
            _tokens
        );

        int256 _updatedPayouts = (int256)(profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;

        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_ = SafeMath.add(
                profitPerShare_,
                (_dividends * magnitude) / tokenSupply_
            );
        }

        // fire sell event
        emit onTokenSell(
            _customerAddress,
            _tokens,
            _taxedEthereum
        );
        
        // fire burn event 
        emit Transfer(
            _customerAddress,
            address(0x0000000000000000000000000000000000000000),
            _tokens
        );
    }

    function transfer(address _toAddress, uint256 _amountOfTokens)
        public
        onlyBagholders()
        returns (bool)
    {
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        
        if (myDividends(true) > 0) withdraw(); // withdraw divs if any 

        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(
            tokenBalanceLedger_[_customerAddress],
            _amountOfTokens
        );
        
        tokenBalanceLedger_[_toAddress] = SafeMath.add(
            tokenBalanceLedger_[_toAddress],
            _amountOfTokens
        );

        payoutsTo_[_customerAddress] -= (int256)(profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256)(profitPerShare_ * _amountOfTokens);

        // fire event
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens);

        // ERC20
        return true;
    }

    /**
     * Method to view the current TrustSwap stored in the contract
     * Example: totalSwapBalance()
     */
    function totalSwapBalance() public view returns (uint256) {
        return _contract.balanceOf(address(this));
    }

    /**
     * Retrieve the total S3D supply.
     */
    function totalSupply() public view returns (uint256) {
        return tokenSupply_;
    }

    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens() public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }

    /**
     * Retrieve the dividends owned by the caller.
     * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
     * The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
     * But in the internal calculations, we want them separate.
     */
    function myDividends(bool _includeReferralBonus)
        public
        view
        returns (uint256)
    {
        address _customerAddress = msg.sender;
        return
            _includeReferralBonus
                ? dividendsOf(_customerAddress) +
                    referralBalance_[_customerAddress]
                : dividendsOf(_customerAddress);
    }

    /**
     * Retrieve the S3D token balance of any single address.
     */
    function balanceOf(address _customerAddress) public view returns (uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }
    
    /**
     * Retrieve the SWAP token balance of any single address.
     * You can call the SWAP contract directly, but the front end will thank you if you just do this one here.
     */
    function swapBalanceOf(address _customerAddress) public view returns (uint256) {
        return _contract.balanceOf(address(_customerAddress));
    }

    /**
     * Retrieve the referral balance of any single address.
     */
    function getReferralBalance(address _customerAddress) public view returns (uint256) {
        return referralBalance_[_customerAddress];
    }

    /**
     * Retrieve the dividend balance of any single address.
     */
    function dividendsOf(address _customerAddress)
        public
        view
        returns (uint256)
    {
        return
            (uint256)(
                (int256)(
                    profitPerShare_ * tokenBalanceLedger_[_customerAddress]
                ) - payoutsTo_[_customerAddress]
            ) / magnitude;
    }

    /**
     * Return the sell price of 1 individual token.
     */
    function sellPrice() public view returns (uint256) {
        // our calculation relies on the token supply, so we need supply.
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div((_ethereum * sellFee_), 100);
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }

    /**
     * Return the buy price of 1 individual token.
     */
    function buyPrice() public view returns (uint256) {
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of buy orders.
     */
    function calculateTokensReceived(uint256 _ethereumToSpend)
        public
        view
        returns (uint256)
    {
        uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);

        return _amountOfTokens;
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of sell orders.
     */
    function calculateEthereumReceived(uint256 _tokensToSell)
        public
        view
        returns (uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div((_ethereum*sellFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
    
    /**
     * Function for the frontend to fetch all data in one call 
     */
    function getData()
        public 
        view 
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        return (
            // [0] - Total SWAP in contract 
            totalSwapBalance(),
            
            // [1] - Total supply of S3D
            totalSupply(),
            
            // [2] - S3D balance of msg.sender 
            balanceOf(msg.sender),
            
            // [3] - Referral balance of msg.sender
            getReferralBalance(msg.sender),
            
            // [4] - Dividends of msg.sender 
            dividendsOf(msg.sender),
            
            // [5] - Sell price of 1 token 
            sellPrice(),
            
            // [6] - Buy price of 1 token 
            buyPrice(),
            
            // [7] - Balance of SWAP token in user's wallet (free balance that isn't staked)
            swapBalanceOf(msg.sender)
        );
    }

    function purchaseTokens(
        uint256 _incomingEthereum,
        address _referredBy,
        address _sender
    ) 
        internal 
        returns (uint256) 
    {
        require((block.timestamp >= releaseTime) || (_sender == administrator));
        address _customerAddress = _sender;
        uint256 _undividedDividends = SafeMath.div(
            _incomingEthereum,
            dividendFee_
        );
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(
            _incomingEthereum,
            _undividedDividends
        );
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;

        require(
            _amountOfTokens > 0 &&
                (SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_)
        );

        if (
            // is this a referred purchase?
            _referredBy != 0x0000000000000000000000000000000000000000 &&
            // no cheating!
            _referredBy != _customerAddress &&
            // does the referrer meet the staking requirement?
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ) {
            // wealth redistribution
            referralBalance_[_referredBy] = SafeMath.add(
                referralBalance_[_referredBy],
                _referralBonus
            );
        } else {
            // no ref purchase
            // add the referral bonus back to the global dividends
            _dividends = SafeMath.add(_dividends, _referralBonus);
            _fee = _dividends * magnitude;
        }

        // we can't give people infinite tokens 
        if (tokenSupply_ > 0) {
            // add tokens to the pool
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_ += ((_dividends * magnitude) / (tokenSupply_));
            // calculate the amount of tokens the customer receives over his purchase
            _fee =
                _fee -
                (_fee -
                    (_amountOfTokens *
                        ((_dividends * magnitude) / (tokenSupply_))));
        } else {
            // add tokens to the pool
            tokenSupply_ = _amountOfTokens;
        }

        tokenBalanceLedger_[_customerAddress] = SafeMath.add(
            tokenBalanceLedger_[_customerAddress],
            _amountOfTokens
        );

        int256 _updatedPayouts = (int256)((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;

        // fire event
        emit onTokenPurchase(
            _customerAddress,
            _incomingEthereum,
            _amountOfTokens,
            _referredBy
        );

        return _amountOfTokens;
    }

    /**
     * Calculate Token price based on an amount of incoming ethereum
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function ethereumToTokens_(uint256 _ethereum)
        internal
        view
        returns (uint256)
    {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived = ((
            SafeMath.sub(
                (
                    sqrt(
                        (_tokenPriceInitial**2) +
                            (2 *
                                (tokenPriceIncremental_ * 1e18) *
                                (_ethereum * 1e18)) +
                            (((tokenPriceIncremental_)**2) *
                                (tokenSupply_**2)) +
                            (2 *
                                (tokenPriceIncremental_) *
                                _tokenPriceInitial *
                                tokenSupply_)
                    )
                ),
                _tokenPriceInitial
            )
        ) / (tokenPriceIncremental_)) - (tokenSupply_);

        return _tokensReceived;
    }

    /**
     * Calculate token sell value.
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function tokensToEthereum_(uint256 _tokens)
        internal
        view
        returns (uint256)
    {
        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (tokenSupply_ + 1e18);
        uint256 _etherReceived = (SafeMath.sub(
            (((tokenPriceInitial_ +
                (tokenPriceIncremental_ * (_tokenSupply / 1e18))) -
                tokenPriceIncremental_) * (tokens_ - 1e18)),
            (tokenPriceIncremental_ * ((tokens_**2 - tokens_) / 1e18)) / 2
        ) / 1e18);
        return _etherReceived;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

library SafeMath {
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSwapBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getData","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"swapBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"getReferralBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526040805190810160405280600681526020017f537761703344000000000000000000000000000000000000000000000000000081525060009080519060200190620000519291906200010e565b506040805190810160405280600381526020017f5333440000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f9291906200010e565b50678ac7230489e80000600355635f0d9e406004556000600855348015620000c657600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001bd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015157805160ff191683800117855562000182565b8280016001018555821562000182579182015b828111156200018157825182559160200191906001019062000164565b5b50905062000191919062000195565b5090565b620001ba91905b80821115620001b65760008160009055506001016200019c565b5090565b90565b611f7780620001cd6000396000f30060806040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014257806306fdde031461019957806310d0ffdd1461022957806318160ddd1461026a5780631fe356581461029557806322609373146102c0578063313ce567146103015780633bc5de30146103325780633ccfd60b1461038e5780634b750334146103a557806356d399e8146103d0578063688abbf7146103fb57806370a082311461043e5780637deb6025146104955780638620410b146104f6578063949e8acd1461052157806395d89b411461054c578063a9059cbb146105dc578063b0d1ac8a14610641578063b5b86a5114610698578063b91d4001146106ef578063e4849b321461071a578063e9fad8ee14610747578063fdb5a03e1461075e575b600080fd5b34801561014e57600080fd5b50610183600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b6040518082815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610817565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023557600080fd5b50610254600480360381019080803590602001909291905050506108b5565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b5061027f6108ed565b6040518082815260200191505060405180910390f35b3480156102a157600080fd5b506102aa6108f7565b6040518082815260200191505060405180910390f35b3480156102cc57600080fd5b506102eb600480360381019080803590602001909291905050506109e8565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610a34565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033e57600080fd5b50610347610a39565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b34801561039a57600080fd5b506103a3610aa3565b005b3480156103b157600080fd5b506103ba610cf3565b6040518082815260200191505060405180910390f35b3480156103dc57600080fd5b506103e5610d54565b6040518082815260200191505060405180910390f35b34801561040757600080fd5b50610428600480360381019080803515159060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561044a57600080fd5b5061047f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b3480156104a157600080fd5b506104e060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b610e2d565b6040518082815260200191505060405180910390f35b34801561052d57600080fd5b50610536610e8b565b6040518082815260200191505060405180910390f35b34801561055857600080fd5b50610561610ea0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a1578082015181840152602081019050610586565b50505050905090810190601f1680156105ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e857600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f3e565b604051808215151515815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ed565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b50610704611329565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107456004803603810190808035906020019092919050505061132f565b005b34801561075357600080fd5b5061075c6115c6565b005b34801561076a57600080fd5b5061077361162d565b005b600068010000000000000000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561080f57fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b6000806000806108c985600a60ff166117a2565b92506108d585846117bd565b91506108e0826117d9565b9050809350505050919050565b6000600854905090565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b8101908080519060200190929190505050905090565b60008060008060085485111515156109ff57600080fd5b610a0885611866565b9250610a1b600a60ff16840260646117a2565b9150610a2783836117bd565b9050809350505050919050565b601281565b600080600080600080600080610a4d6108f7565b610a556108ed565b610a5e33610dc6565b610a67336112e0565b610a7033610775565b610a78610cf3565b610a80610e2d565b610a89336111ed565b975097509750975097509750975097509091929394959697565b6000806000610ab26001610d5a565b111515610abe57600080fd5b339150610acb6000610d5a565b9050680100000000000000008102600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b505050506040513d6020811015610c8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415610d18576402540be40064174876e800039350610d4e565b610d29670de0b6b3a7640000611866565b9250610d3c600a60ff16840260646117a2565b9150610d4883836117bd565b90508093505b50505090565b60035481565b60008033905082610d7357610d6e81610775565b610dbe565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbc82610775565b015b915050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1a83611911565b610e25838333611ab5565b905092915050565b60008060008060006008541415610e52576402540be40064174876e800019350610e85565b610e63670de0b6b3a7640000611866565b9250610e7383600a60ff166117a2565b9150610e7f8383611edf565b90508093505b50505090565b600080339050610e9a81610dc6565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b505050505081565b6000806000610f4b610e8b565b111515610f5757600080fd5b339050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610fa857600080fd5b6000610fb46001610d5a565b1115610fc357610fc2610aa3565b5b61100c600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846117bd565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611098600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260095402600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508260095402600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d60208110156112c857600080fd5b81019080805190602001909291905050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6000806000806000806000611342610e8b565b11151561134e57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561139f57600080fd5b8694506113ab85611866565b93506113be600a60ff16850260646117a2565b92506113ca84846117bd565b91506113d8600854866117bd565b600881905550611427600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866117bd565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611501576114fa6009546008546801000000000000000086028115156114f457fe5b04611edf565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611621576116208161132f565b5b611629610aa3565b5050565b60008060008061163d6001610d5a565b11151561164957600080fd5b6116536000610d5a565b9250339150680100000000000000008302600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061174583600084611ab5565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082848115156117b057fe5b0490508091505092915050565b60008282111515156117ce57600080fd5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be40061184f611849600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f00565b856117bd565b81151561185857fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a76400006118fa670de0b6b3a764000085036402540be400670de0b6b3a7640000868115156118b857fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a038115156118e357fe5b046402540be400028115156118f457fe5b046117bd565b81151561190357fe5b049050809350505050919050565b6001151573cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b81019080805190602001909291905050501515141515611ab2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7472616e73666572206d7573742073756363656564000000000000000000000081525060200191505060405180910390fd5b50565b600080600080600080600080600060045442101580611b215750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b1515611b2c57600080fd5b899750611b3d8c600a60ff166117a2565b9650611b4a8760036117a2565b9550611b5687876117bd565b9450611b628c886117bd565b9350611b6d846117d9565b92506801000000000000000085029150600083118015611b995750600854611b9784600854611edf565b115b1515611ba457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614158015611c0d57508773ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750600354600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611cf057611ca8600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611edf565b600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0b565b611cfa8587611edf565b945068010000000000000000850291505b60006008541115611d7657611d2260085484611edf565b600881905550600854680100000000000000008602811515611d4057fe5b04600960008282540192505081905550600854680100000000000000008602811515611d6857fe5b048302820382039150611d7e565b826008819055505b611dc7600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836009540203905080600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508a73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58e86604051808381526020018281526020019250505060405180910390a382985050505050505050509392505050565b6000808284019050838110151515611ef657600080fd5b8091505092915050565b600080600260018401811515611f1257fe5b0490508291505b81811015611f45578091506002818285811515611f3257fe5b0401811515611f3d57fe5b049050611f19565b509190505600a165627a7a72305820c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a63180029

Deployed Bytecode

0x60806040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014257806306fdde031461019957806310d0ffdd1461022957806318160ddd1461026a5780631fe356581461029557806322609373146102c0578063313ce567146103015780633bc5de30146103325780633ccfd60b1461038e5780634b750334146103a557806356d399e8146103d0578063688abbf7146103fb57806370a082311461043e5780637deb6025146104955780638620410b146104f6578063949e8acd1461052157806395d89b411461054c578063a9059cbb146105dc578063b0d1ac8a14610641578063b5b86a5114610698578063b91d4001146106ef578063e4849b321461071a578063e9fad8ee14610747578063fdb5a03e1461075e575b600080fd5b34801561014e57600080fd5b50610183600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610775565b6040518082815260200191505060405180910390f35b3480156101a557600080fd5b506101ae610817565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ee5780820151818401526020810190506101d3565b50505050905090810190601f16801561021b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023557600080fd5b50610254600480360381019080803590602001909291905050506108b5565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b5061027f6108ed565b6040518082815260200191505060405180910390f35b3480156102a157600080fd5b506102aa6108f7565b6040518082815260200191505060405180910390f35b3480156102cc57600080fd5b506102eb600480360381019080803590602001909291905050506109e8565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610a34565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033e57600080fd5b50610347610a39565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b34801561039a57600080fd5b506103a3610aa3565b005b3480156103b157600080fd5b506103ba610cf3565b6040518082815260200191505060405180910390f35b3480156103dc57600080fd5b506103e5610d54565b6040518082815260200191505060405180910390f35b34801561040757600080fd5b50610428600480360381019080803515159060200190929190505050610d5a565b6040518082815260200191505060405180910390f35b34801561044a57600080fd5b5061047f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b3480156104a157600080fd5b506104e060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b6040518082815260200191505060405180910390f35b34801561050257600080fd5b5061050b610e2d565b6040518082815260200191505060405180910390f35b34801561052d57600080fd5b50610536610e8b565b6040518082815260200191505060405180910390f35b34801561055857600080fd5b50610561610ea0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105a1578082015181840152602081019050610586565b50505050905090810190601f1680156105ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105e857600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f3e565b604051808215151515815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ed565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b50610704611329565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107456004803603810190808035906020019092919050505061132f565b005b34801561075357600080fd5b5061075c6115c6565b005b34801561076a57600080fd5b5061077361162d565b005b600068010000000000000000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561080f57fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b505050505081565b6000806000806108c985600a60ff166117a2565b92506108d585846117bd565b91506108e0826117d9565b9050809350505050919050565b6000600854905090565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109a857600080fd5b505af11580156109bc573d6000803e3d6000fd5b505050506040513d60208110156109d257600080fd5b8101908080519060200190929190505050905090565b60008060008060085485111515156109ff57600080fd5b610a0885611866565b9250610a1b600a60ff16840260646117a2565b9150610a2783836117bd565b9050809350505050919050565b601281565b600080600080600080600080610a4d6108f7565b610a556108ed565b610a5e33610dc6565b610a67336112e0565b610a7033610775565b610a78610cf3565b610a80610e2d565b610a89336111ed565b975097509750975097509750975097509091929394959697565b6000806000610ab26001610d5a565b111515610abe57600080fd5b339150610acb6000610d5a565b9050680100000000000000008102600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b505050506040513d6020811015610c8f57600080fd5b8101908080519060200190929190505050508173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415610d18576402540be40064174876e800039350610d4e565b610d29670de0b6b3a7640000611866565b9250610d3c600a60ff16840260646117a2565b9150610d4883836117bd565b90508093505b50505090565b60035481565b60008033905082610d7357610d6e81610775565b610dbe565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dbc82610775565b015b915050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e1a83611911565b610e25838333611ab5565b905092915050565b60008060008060006008541415610e52576402540be40064174876e800019350610e85565b610e63670de0b6b3a7640000611866565b9250610e7383600a60ff166117a2565b9150610e7f8383611edf565b90508093505b50505090565b600080339050610e9a81610dc6565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f365780601f10610f0b57610100808354040283529160200191610f36565b820191906000526020600020905b815481529060010190602001808311610f1957829003601f168201915b505050505081565b6000806000610f4b610e8b565b111515610f5757600080fd5b339050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610fa857600080fd5b6000610fb46001610d5a565b1115610fc357610fc2610aa3565b5b61100c600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846117bd565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611098600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508260095402600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508260095402600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600073cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d60208110156112c857600080fd5b81019080805190602001909291905050509050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60045481565b6000806000806000806000611342610e8b565b11151561134e57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561139f57600080fd5b8694506113ab85611866565b93506113be600a60ff16850260646117a2565b92506113ca84846117bd565b91506113d8600854866117bd565b600881905550611427600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866117bd565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611501576114fa6009546008546801000000000000000086028115156114f457fe5b04611edf565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611621576116208161132f565b5b611629610aa3565b5050565b60008060008061163d6001610d5a565b11151561164957600080fd5b6116536000610d5a565b9250339150680100000000000000008302600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061174583600084611ab5565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082848115156117b057fe5b0490508091505092915050565b60008282111515156117ce57600080fd5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be40061184f611849600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f00565b856117bd565b81151561185857fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a76400006118fa670de0b6b3a764000085036402540be400670de0b6b3a7640000868115156118b857fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a038115156118e357fe5b046402540be400028115156118f457fe5b046117bd565b81151561190357fe5b049050809350505050919050565b6001151573cc4304a31d09258b0029ea7fe63d032f52e44efe73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b81019080805190602001909291905050501515141515611ab2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7472616e73666572206d7573742073756363656564000000000000000000000081525060200191505060405180910390fd5b50565b600080600080600080600080600060045442101580611b215750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16145b1515611b2c57600080fd5b899750611b3d8c600a60ff166117a2565b9650611b4a8760036117a2565b9550611b5687876117bd565b9450611b628c886117bd565b9350611b6d846117d9565b92506801000000000000000085029150600083118015611b995750600854611b9784600854611edf565b115b1515611ba457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614158015611c0d57508773ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750600354600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611cf057611ca8600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611edf565b600660008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d0b565b611cfa8587611edf565b945068010000000000000000850291505b60006008541115611d7657611d2260085484611edf565b600881905550600854680100000000000000008602811515611d4057fe5b04600960008282540192505081905550600854680100000000000000008602811515611d6857fe5b048302820382039150611d7e565b826008819055505b611dc7600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611edf565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836009540203905080600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508a73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58e86604051808381526020018281526020019250505060405180910390a382985050505050505050509392505050565b6000808284019050838110151515611ef657600080fd5b8091505092915050565b600080600260018401811515611f1257fe5b0490508291505b81811015611f45578091506002818285811515611f3257fe5b0401811515611f3d57fe5b049050611f19565b509190505600a165627a7a72305820c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a63180029

Deployed Bytecode Sourcemap

736:17800:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:8;;;9469:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9469:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1643:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1643:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1643:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11018:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11018:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7521:91:0;;;;;;;;;;;;;;;;;;;;;;;7338:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7338:118:0;;;;;;;;;;;;;;;;;;;;;;;11524:414;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11524:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1714:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1714:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12033:1087;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12033:1087:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4291:490;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4291:490:0;;;;;;9887:508;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9887:508:0;;;;;;;;;;;;;;;;;;;;;;;2322:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2322:41:0;;;;;;;;;;;;;;;;;;;;;;;8194:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8194:375:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8657:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8657:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3206:247;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3206:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10473:428;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10473:428:0;;;;;;;;;;;;;;;;;;;;;;;7687:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7687:151:0;;;;;;;;;;;;;;;;;;;;;;;1679:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1679:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1679:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6241:967;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6241:967:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9000:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9000:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9238:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9238:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2390:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2390:39:0;;;;;;;;;;;;;;;;;;;;;;;4789:1444;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4789:1444:0;;;;;;;;;;;;;;;;;;;;;;;;;;4076:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4076:207:0;;;;;;3461:607;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3461:607:0;;;;;;9469:339;9564:7;2043:5;9745:10;:28;9756:16;9745:28;;;;;;;;;;;;;;;;9686:19;:37;9706:16;9686:37;;;;;;;;;;;;;;;;9668:15;;:55;9637:136;9609:191;;;;;;;;9589:211;;9469:339;;;:::o;1643:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11018:388::-;11125:7;11150:18;11226:22;11304:23;11171:44;11184:16;1795:2;11171:44;;:12;:44::i;:::-;11150:65;;11251:42;11264:16;11282:10;11251:12;:42::i;:::-;11226:67;;11330:33;11348:14;11330:17;:33::i;:::-;11304:59;;11383:15;11376:22;;11018:388;;;;;;:::o;7521:91::-;7565:7;7592:12;;7585:19;;7521:91;:::o;7338:118::-;7387:7;2104:42;7414:19;;;7442:4;7414:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7414:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7414:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7414:34:0;;;;;;;;;;;;;;;;7407:41;;7338:118;:::o;11524:414::-;11630:7;11704:17;11767:18;11838:22;11680:12;;11663:13;:29;;11655:38;;;;;;;;11724:32;11742:13;11724:17;:32::i;:::-;11704:52;;11788:39;1846:2;11802:18;;:9;:18;11823:3;11788:12;:39::i;:::-;11767:60;;11863:35;11876:9;11887:10;11863:12;:35::i;:::-;11838:60;;11916:14;11909:21;;11524:414;;;;;;:::o;1714:35::-;1747:2;1714:35;:::o;12033:1087::-;12116:7;12138;12160;12182;12204;12226;12248;12270;12373:18;:16;:18::i;:::-;12462:13;:11;:13::i;:::-;12553:21;12563:10;12553:9;:21::i;:::-;12656:30;12675:10;12656:18;:30::i;:::-;12762:23;12774:10;12762:11;:23::i;:::-;12859:11;:9;:11::i;:::-;12943:10;:8;:10::i;:::-;13076:25;13090:10;13076:13;:25::i;:::-;12305:807;;;;;;;;;;;;;;;;12033:1087;;;;;;;;:::o;4291:490::-;4347:24;4395:18;919:1;899:17;911:4;899:11;:17::i;:::-;:21;891:30;;;;;;;;4374:10;4347:37;;4416:18;4428:5;4416:11;:18::i;:::-;4395:39;;2043:5;4488:10;:22;4447:10;:28;4458:16;4447:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;4536:16;:34;4553:16;4536:34;;;;;;;;;;;;;;;;4522:48;;;;4618:1;4581:16;:34;4598:16;4581:34;;;;;;;;;;;;;;;:38;;;;2104:42;4630:18;;;4649:16;4667:10;4630:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4630:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4630:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4630:48:0;;;;;;;;;;;;;;;;;4721:16;4696:77;;;4752:10;4696:77;;;;;;;;;;;;;;;;;;4291:490;;:::o;9887:508::-;9929:7;10145:17;10203:18;10280:22;10044:1;10028:12;;:17;10024:364;;;1982:16;1909:15;10069:43;10062:50;;;;10024:364;10165:23;10183:4;10165:17;:23::i;:::-;10145:43;;10224:41;1846:2;10238:20;;:9;:20;10261:3;10224:12;:41::i;:::-;10203:62;;10305:35;10318:9;10329:10;10305:12;:35::i;:::-;10280:60;;10362:14;10355:21;;9887:508;;;;;:::o;2322:41::-;;;;:::o;8194:375::-;8291:7;8316:24;8343:10;8316:37;;8384:21;:177;;8532:29;8544:16;8532:11;:29::i;:::-;8384:177;;;8478:16;:34;8495:16;8478:34;;;;;;;;;;;;;;;;8425:29;8437:16;8425:11;:29::i;:::-;:87;8384:177;8364:197;;8194:375;;;;:::o;8657:138::-;8723:7;8750:19;:37;8770:16;8750:37;;;;;;;;;;;;;;;;8743:44;;8657:138;;;:::o;3206:247::-;3272:7;3292:25;3309:7;3292:16;:25::i;:::-;3345:100;3374:7;3397:11;3424:10;3345:14;:100::i;:::-;3338:107;;3206:247;;;;:::o;10473:428::-;10514:7;10655:17;10713:18;10786:22;10554:1;10538:12;;:17;10534:360;;;1982:16;1909:15;10579:43;10572:50;;;;10534:360;10675:23;10693:4;10675:17;:23::i;:::-;10655:43;;10734:37;10747:9;1795:2;10734:37;;:12;:37::i;:::-;10713:58;;10811:35;10824:9;10835:10;10811:12;:35::i;:::-;10786:60;;10868:14;10861:21;;10473:428;;;;;:::o;7687:151::-;7728:7;7748:24;7775:10;7748:37;;7803:27;7813:16;7803:9;:27::i;:::-;7796:34;;7687:151;;:::o;1679:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6241:967::-;6364:4;6386:24;823:1;810:10;:8;:10::i;:::-;:14;802:23;;;;;;;;6413:10;6386:37;;6461:19;:37;6481:16;6461:37;;;;;;;;;;;;;;;;6442:15;:56;;6434:65;;;;;;;;6544:1;6524:17;6536:4;6524:11;:17::i;:::-;:21;6520:37;;;6547:10;:8;:10::i;:::-;6520:37;6635:105;6662:19;:37;6682:16;6662:37;;;;;;;;;;;;;;;;6714:15;6635:12;:105::i;:::-;6595:19;:37;6615:16;6595:37;;;;;;;;;;;;;;;:145;;;;6795:99;6822:19;:31;6842:10;6822:31;;;;;;;;;;;;;;;;6868:15;6795:12;:99::i;:::-;6761:19;:31;6781:10;6761:31;;;;;;;;;;;;;;;:133;;;;6966:15;6948;;:33;6907:10;:28;6918:16;6907:28;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7046:15;7028;;:33;6993:10;:22;7004:10;6993:22;;;;;;;;;;;;;;;;:69;;;;;;;;;;;7130:10;7103:55;;7112:16;7103:55;;;7142:15;7103:55;;;;;;;;;;;;;;;;;;7196:4;7189:11;;6241:967;;;;;:::o;9000:151::-;9070:7;2104:42;9097:19;;;9125:16;9097:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9097:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9097:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9097:46:0;;;;;;;;;;;;;;;;9090:53;;9000:151;;;:::o;9238:144::-;9313:7;9340:16;:34;9357:16;9340:34;;;;;;;;;;;;;;;;9333:41;;9238:144;;;:::o;2390:39::-;;;;:::o;4789:1444::-;4863:24;4987:15;5031:17;5088:18;5161:22;5478;823:1;810:10;:8;:10::i;:::-;:14;802:23;;;;;;;;4890:10;4863:37;;4938:19;:37;4958:16;4938:37;;;;;;;;;;;;;;;;4919:15;:56;;4911:65;;;;;;;;5005:15;4987:33;;5051:26;5069:7;5051:17;:26::i;:::-;5031:46;;5109:41;1846:2;5123:20;;:9;:20;5146:3;5109:12;:41::i;:::-;5088:62;;5186:35;5199:9;5210:10;5186:12;:35::i;:::-;5161:60;;5282:35;5295:12;;5309:7;5282:12;:35::i;:::-;5267:12;:50;;;;5368:97;5395:19;:37;5415:16;5395:37;;;;;;;;;;;;;;;;5447:7;5368:12;:97::i;:::-;5328:19;:37;5348:16;5328:37;;;;;;;;;;;;;;;:137;;;;2043:5;5541:14;:26;5530:7;5512:15;;:25;:56;5478:91;;5612:15;5580:10;:28;5591:16;5580:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;5659:1;5644:12;;:16;5640:243;;;5752:119;5783:15;;5844:12;;2043:5;5818:10;:22;5817:39;;;;;;;;5752:12;:119::i;:::-;5734:15;:137;;;;5640:243;5954:16;5928:104;;;5985:7;6007:14;5928:104;;;;;;;;;;;;;;;;;;;;;;;;6149:42;6087:138;;6110:16;6087:138;;;6207:7;6087:138;;;;;;;;;;;;;;;;;;4789:1444;;;;;;;:::o;4076:207::-;4110:24;4158:15;4137:10;4110:37;;4176:19;:37;4196:16;4176:37;;;;;;;;;;;;;;;;4158:55;;4238:1;4228:7;:11;4224:30;;;4241:13;4246:7;4241:4;:13::i;:::-;4224:30;4265:10;:8;:10::i;:::-;4076:207;;:::o;3461:607::-;3517:18;3570:24;3803:15;919:1;899:17;911:4;899:11;:17::i;:::-;:21;891:30;;;;;;;;3538:18;3550:5;3538:11;:18::i;:::-;3517:39;;3597:10;3570:37;;2043:5;3659:10;:22;3618:10;:28;3629:16;3618:28;;;;;;;;;;;;;;;;:64;;;;;;;;;;;3707:16;:34;3724:16;3707:34;;;;;;;;;;;;;;;;3693:48;;;;3789:1;3752:16;:34;3769:16;3752:34;;;;;;;;;;;;;;;:38;;;;3821:110;3850:10;3884:3;3904:16;3821:14;:110::i;:::-;3803:128;;3986:16;3957:103;;;4017:10;4042:7;3957:103;;;;;;;;;;;;;;;;;;;;;;;;3461:607;;;:::o;18564:122::-;18622:7;18642:9;18658:1;18654;:5;;;;;;;;18642:17;;18677:1;18670:8;;18564:122;;;;;:::o;18692:124::-;18750:7;18783:1;18778;:6;;18770:15;;;;;;;;18807:1;18803;:5;18796:12;;18692:124;;;;:::o;16497:998::-;16593:7;16618:26;16683:23;16668:4;1909:15;16647:25;16618:54;;17439:12;;1982:16;16725:671;16779:546;17289:12;;17235:18;1982:16;17138:1;:61;:115;:163;17102:1;17088:12;;:15;17049:1;1982:16;17023:27;17022:82;16983:4;16971:9;:16;16929:4;1982:16;16904:29;16866:1;:68;:122;16831:1;16811:18;:21;16810:179;:295;:492;16779:4;:546::i;:::-;17363:18;16725:12;:671::i;:::-;16710:724;;;;;;;;16709:743;16683:769;;17472:15;17465:22;;16497:998;;;;;:::o;17757:561::-;17851:7;17876:15;17921:20;17976:22;17905:4;17895:7;:14;17876:34;;17960:4;17945:12;;:19;17921:44;;18273:4;18002:268;18176:4;18166:7;:14;1982:16;18112:4;18097:12;:19;;;;;;;;1982:16;18071:46;1909:15;18032:86;18031:130;18030:151;18258:1;18249:4;18238:7;18234:1;18225:7;:10;:20;18224:29;;;;;;;;1982:16;18198:56;18197:62;;;;;;;;18002:12;:268::i;:::-;:275;;;;;;;;17976:302;;18296:14;18289:21;;17757:561;;;;;;:::o;2936:262::-;3150:4;3020:134;;2104:42;3020:22;;;3061:10;3099:4;3124:7;3020:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3020:126:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3020:126:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3020:126:0;;;;;;;;;;;;;;;;:134;;;2998:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2936:262;:::o;13128:3073::-;13289:7;13397:24;13442:27;13565:22;13637:18;13718:22;13843:23;13913:12;15837:22;13343:11;;13324:15;:30;;13323:62;;;;13371:13;;;;;;;;;;;13360:24;;:7;:24;;;13323:62;13315:71;;;;;;;;13424:7;13397:34;;13472:82;13499:17;1795:2;13472:82;;:12;:82::i;:::-;13442:112;;13590:36;13603:19;13624:1;13590:12;:36::i;:::-;13565:61;;13658:49;13671:19;13692:14;13658:12;:49::i;:::-;13637:70;;13743:89;13770:17;13802:19;13743:12;:89::i;:::-;13718:114;;13869:33;13887:14;13869:17;:33::i;:::-;13843:59;;2043:5;13928:10;:22;13913:37;;14003:1;13985:15;:19;:100;;;;;14072:12;;14026:43;14039:15;14056:12;;14026;:43::i;:::-;:58;13985:100;13963:133;;;;;;;;14187:42;14172:57;;:11;:57;;;;:134;;;;;14290:16;14275:31;;:11;:31;;;;14172:134;:269;;;;;14423:18;;14387:19;:32;14407:11;14387:32;;;;;;;;;;;;;;;;:54;;14172:269;14109:779;;;14538:108;14569:16;:29;14586:11;14569:29;;;;;;;;;;;;;;;;14617:14;14538:12;:108::i;:::-;14506:16;:29;14523:11;14506:29;;;;;;;;;;;;;;;:140;;;;14109:779;;;14792:40;14805:10;14817:14;14792:12;:40::i;:::-;14779:53;;2043:5;14854:10;:22;14847:29;;14109:779;14969:1;14954:12;;:16;14950:717;;;15041:43;15054:12;;15068:15;15041:12;:43::i;:::-;15026:12;:58;;;;15271:12;;2043:5;15244:10;:22;15243:41;;;;;;;;15223:15;;:62;;;;;;;;;;;15537:12;;2043:5;15510:10;:22;15509:41;;;;;;;;15465:15;:86;15436:4;:116;15411:4;:142;15387:166;;14950:717;;;15640:15;15625:12;:30;;;;14950:717;15719:105;15746:19;:37;15766:16;15746:37;;;;;;;;;;;;;;;;15798:15;15719:12;:105::i;:::-;15679:19;:37;15699:16;15679:37;;;;;;;;;;;;;;;:145;;;;15909:4;15890:15;15872;;:33;15871:42;15837:77;;15957:15;15925:10;:28;15936:16;15925:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;16136:11;16013:145;;16043:16;16013:145;;;16074:17;16106:15;16013:145;;;;;;;;;;;;;;;;;;;;;;;;16178:15;16171:22;;13128:3073;;;;;;;;;;;;;:::o;18822:148::-;18880:7;18900:9;18916:1;18912;:5;18900:17;;18941:1;18936;:6;;18928:15;;;;;;;;18961:1;18954:8;;18822:148;;;;;:::o;18326:207::-;18374:9;18396;18418:1;18413;18409;:5;18408:11;;;;;;;;18396:23;;18434:1;18430:5;;18446:80;18457:1;18453;:5;18446:80;;;18479:1;18475:5;;18513:1;18508;18504;18500;:5;;;;;;;;:9;18499:15;;;;;;;;18495:19;;18446:80;;;18326:207;;;;:::o

Swarm Source

bzzr://c00276ed6100981837650dad0c5eb26fb954dad672c7661303f5acd2d25a6318
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.