ETH Price: $3,438.34 (-1.39%)

Token

Flute (FLUTE)
 

Overview

Max Total Supply

10,000,000,000 FLUTE

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
322,130,087.568986352 FLUTE

Value
$0.00
0x6bcd919c30e9fdf3e2b6bb62630e2075185c77c1
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:
FLUTE

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Flute.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface ERC20 {
    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 renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    event OwnershipTransferred(address owner);
}

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

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    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 FLUTE is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address immutable DEV_ADDRESS = 0x1238B80CF941750E5563F9728faE00EE9d9B1cE9;

    string constant _name = "Flute";
    string constant _symbol = "FLUTE";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10_000_000_000 * (10**_decimals);
    uint256 public _maxWalletAmount = 230_000_000 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;
    uint256 FluteFee = 12;
    address public FluteTeam = msg.sender;
    IDEXRouter public router;
    address public pair;
    bool public swapEnabled = true;
    bool public feesEnabled = true;
    uint256 public swapThreshold = (_totalSupply / 1000) * 5;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    string private _websiteInformation;
    string private _twitterInformation;

    constructor() Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        _allowances[address(this)][address(router)] = type(uint256).max;
        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;
    }

    function Flute() external payable {
        require(
            msg.sender == DEV_ADDRESS,
            "Only developer create pair and add liquidity"
        );

        pair = IDEXFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        _balances[pair] = _totalSupply;
        emit Transfer(address(0), address(this), _totalSupply);
        ERC20(pair).approve(address(routerAdress), type(uint256).max);
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEV_ADDRESS,
            block.timestamp
        );
    }

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

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

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

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

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

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

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

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

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setFluteFee(uint256 _FluteFee) external onlyOwner {
        require(_FluteFee <= 5, "Must keep fees at 5% or less");
        FluteFee = _FluteFee;
    }

    function setMaxFlute(uint256 _percentage) external onlyOwner {
        if (_percentage == 100) {
            _maxWalletAmount = type(uint256).max;
        } else {
            _maxWalletAmount = _totalSupply.mul(_percentage).div(100);
        }
    }

    /**
        Internal functions
    **/

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(FluteFee).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToSwap = contractTokenBalance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETHMarketing = address(this).balance;

        (bool MarketingSuccess, ) = payable(FluteTeam).call{
            value: amountETHMarketing
        }("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (recipient != pair && recipient != DEAD) {
            require(
                isTxLimitExempt[recipient] ||
                    _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived = feesEnabled && shouldTakeFee(sender)
            ? takeFee(sender, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    /**
        Social links
    **/

    function setFluteSocials(
        string calldata __websiteInformation,
        string calldata __twitterInformation
    ) external {
        require(
            msg.sender == DEV_ADDRESS,
            "Only developer can adjust social links"
        );

        _websiteInformation = __websiteInformation;
        _twitterInformation = __twitterInformation;
    }

    function getWebsiteInformation() public view returns (string memory) {
        return _websiteInformation;
    }

    function getTwitterInformation() public view returns (string memory) {
        return _twitterInformation;
    }

    receive() external payable {}

    // https://www.the-flute.show
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":[],"name":"Flute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"FluteTeam","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTwitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWebsiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_FluteFee","type":"uint256"}],"name":"setFluteFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__websiteInformation","type":"string"},{"internalType":"string","name":"__twitterInformation","type":"string"}],"name":"setFluteSocials","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setMaxFlute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60a0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000f39190620005b8565b6402540be40062000105919062000609565b6003556009600a620001189190620005b8565b630db5858062000129919062000609565b600455600c60095533600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff02191690831515021790555060056103e8600354620001bc919062000683565b620001c8919062000609565b600d55348015620001d857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050620006bb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004ac578086048111156200048457620004836200041e565b5b6001851615620004945780820291505b8081029050620004a4856200044d565b945062000464565b94509492505050565b600082620004c757600190506200059a565b81620004d757600090506200059a565b8160018114620004f05760028114620004fb5762000531565b60019150506200059a565b60ff84111562000510576200050f6200041e565b5b8360020a9150848211156200052a57620005296200041e565b5b506200059a565b5060208310610133831016604e8410600b84101617156200056b5782820a9050838111156200056557620005646200041e565b5b6200059a565b6200057a84848460016200045a565b925090508184048111156200059457620005936200041e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005c582620005a1565b9150620005d283620005ab565b9250620006017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004b5565b905092915050565b60006200061682620005a1565b91506200062383620005a1565b92508282026200063381620005a1565b915082820484148315176200064d576200064c6200041e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200069082620005a1565b91506200069d83620005a1565b925082620006b057620006af62000654565b5b828204905092915050565b608051613252620006e560003960008181610ac801528181610ce2015261114d01526132526000f3fe60806040526004361061016a5760003560e01c80637925f305116100d1578063a9059cbb1161008a578063dd5824d711610064578063dd5824d71461051e578063dd62ed3e14610547578063e0dc354614610584578063f887ea40146105af57610171565b8063a9059cbb146104ac578063b0f9e119146104e9578063c3f93b01146104f357610171565b80637925f305146103ae5780637bb1bd8f146103d7578063893d20e81461040057806395d89b411461042b578063a64e4f8a14610456578063a8aa1b311461048157610171565b8063313ce56711610123578063313ce567146102ae5780633f4def79146102d95780636c0a24eb146103045780636ddd17131461032f57806370a082311461035a578063715018a61461039757610171565b80630445b6671461017657806306fdde03146101a1578063095ea7b3146101cc57806318160ddd1461020957806323b872dd146102345780632f54bf6e1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105da565b60405161019891906121dc565b60405180910390f35b3480156101ad57600080fd5b506101b66105e0565b6040516101c39190612287565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee919061233d565b61061d565b6040516102009190612398565b60405180910390f35b34801561021557600080fd5b5061021e61070f565b60405161022b91906121dc565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906123b3565b610719565b6040516102689190612398565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612406565b610919565b6040516102a59190612398565b60405180910390f35b3480156102ba57600080fd5b506102c3610972565b6040516102d0919061244f565b60405180910390f35b3480156102e557600080fd5b506102ee61097b565b6040516102fb9190612479565b60405180910390f35b34801561031057600080fd5b506103196109a1565b60405161032691906121dc565b60405180910390f35b34801561033b57600080fd5b506103446109a7565b6040516103519190612398565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612406565b6109ba565b60405161038e91906121dc565b60405180910390f35b3480156103a357600080fd5b506103ac610a03565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906124f9565b610ac6565b005b3480156103e357600080fd5b506103fe60048036038101906103f9919061257a565b610b7e565b005b34801561040c57600080fd5b50610415610c2c565b6040516104229190612479565b60405180910390f35b34801561043757600080fd5b50610440610c55565b60405161044d9190612287565b60405180910390f35b34801561046257600080fd5b5061046b610c92565b6040516104789190612398565b60405180910390f35b34801561048d57600080fd5b50610496610ca5565b6040516104a39190612479565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061233d565b610ccb565b6040516104e09190612398565b60405180910390f35b6104f1610ce0565b005b3480156104ff57600080fd5b506105086111d6565b6040516105159190612287565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061257a565b611268565b005b34801561055357600080fd5b5061056e600480360381019061056991906125a7565b6112fe565b60405161057b91906121dc565b60405180910390f35b34801561059057600080fd5b50610599611385565b6040516105a69190612287565b60405180910390f35b3480156105bb57600080fd5b506105c4611417565b6040516105d19190612646565b60405180910390f35b600d5481565b60606040518060400160405280600581526020017f466c757465000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106fd91906121dc565b60405180910390a36001905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461090557610884826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6109108484846114a1565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600c60149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0c33610919565b610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a42906126ad565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610abc9190612479565b60405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061273f565b60405180910390fd5b8383600f9182610b6592919061299b565b50818160109182610b7792919061299b565b5050505050565b610b8733610919565b610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906126ad565b60405180910390fd5b60648103610bfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600481905550610c29565b610c226064610c148360035461188290919063ffffffff16565b6118fc90919063ffffffff16565b6004819055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f464c555445000000000000000000000000000000000000000000000000000000815250905090565b600c60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd83384846114a1565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590612add565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190612b12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190612b12565b6040518363ffffffff1660e01b8152600401610ec9929190612b3f565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c9190612b12565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405161101491906121dc565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110bb929190612b68565b6020604051808303816000875af11580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612bbd565b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611148306109ba565b6000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b815260040161118e96959493929190612c25565b60606040518083038185885af11580156111ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d19190612c9b565b505050565b6060601080546111e5906127c8565b80601f0160208091040260200160405190810160405280929190818152602001828054611211906127c8565b801561125e5780601f106112335761010080835404028352916020019161125e565b820191906000526020600020905b81548152906001019060200180831161124157829003601f168201915b5050505050905090565b61127133610919565b6112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a7906126ad565b60405180910390fd5b60058111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612d3a565b60405180910390fd5b8060098190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600f8054611394906127c8565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906127c8565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c9190612287565b60405180910390fd5b50600083856114949190612d89565b9050809150509392505050565b6000600e60009054906101000a900460ff16156114ca576114c3848484611946565b905061187b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165f57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061161f575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161c9190612dbd565b11155b61165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612e63565b60405180910390fd5b5b611667611b19565b1561167557611674611bf0565b5b6116fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60159054906101000a900460ff168015611764575061176385611f1e565b5b61176e5782611779565b6117788584611f75565b5b90506117cd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161186d91906121dc565b60405180910390a360019150505b9392505050565b600080830361189457600090506118f6565b600082846118a29190612e83565b90508284826118b19190612ef4565b146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612f97565b60405180910390fd5b809150505b92915050565b600061193e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612116565b905092915050565b60006119d1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a6682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0691906121dc565b60405180910390a3600190509392505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611b865750600e60009054906101000a900460ff16155b8015611b9e5750600c60149054906101000a900460ff165b8015611beb5750600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600d54905060008190506000600267ffffffffffffffff811115611c3457611c3361276a565b5b604051908082528060200260200182016040528015611c625781602001602082028036833780820191505090505b5090503081600081518110611c7a57611c79612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612b12565b81600181518110611d5957611d58612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611df79594939291906130a4565b600060405180830381600087803b158015611e1157600080fd5b505af1158015611e25573d6000803e3d6000fd5b5050505060004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e769061312f565b60006040518083038185875af1925050503d8060008114611eb3576040519150601f19603f3d011682016040523d82523d6000602084013e611eb8565b606091505b5050905080611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613190565b60405180910390fd5b50505050506000600e60006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080611fa06064611f926009548661188290919063ffffffff16565b6118fc90919063ffffffff16565b9050611ff481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209491906121dc565b60405180910390a36120af818461217990919063ffffffff16565b91505092915050565b60008082846120c79190612dbd565b90508381101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906131fc565b60405180910390fd5b8091505092915050565b6000808311829061215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549190612287565b60405180910390fd5b506000838561216c9190612ef4565b9050809150509392505050565b60006121bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143d565b905092915050565b6000819050919050565b6121d6816121c3565b82525050565b60006020820190506121f160008301846121cd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612231578082015181840152602081019050612216565b60008484015250505050565b6000601f19601f8301169050919050565b6000612259826121f7565b6122638185612202565b9350612273818560208601612213565b61227c8161223d565b840191505092915050565b600060208201905081810360008301526122a1818461224e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122de826122b3565b9050919050565b6122ee816122d3565b81146122f957600080fd5b50565b60008135905061230b816122e5565b92915050565b61231a816121c3565b811461232557600080fd5b50565b60008135905061233781612311565b92915050565b60008060408385031215612354576123536122a9565b5b6000612362858286016122fc565b925050602061237385828601612328565b9150509250929050565b60008115159050919050565b6123928161237d565b82525050565b60006020820190506123ad6000830184612389565b92915050565b6000806000606084860312156123cc576123cb6122a9565b5b60006123da868287016122fc565b93505060206123eb868287016122fc565b92505060406123fc86828701612328565b9150509250925092565b60006020828403121561241c5761241b6122a9565b5b600061242a848285016122fc565b91505092915050565b600060ff82169050919050565b61244981612433565b82525050565b60006020820190506124646000830184612440565b92915050565b612473816122d3565b82525050565b600060208201905061248e600083018461246a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126124b9576124b8612494565b5b8235905067ffffffffffffffff8111156124d6576124d5612499565b5b6020830191508360018202830111156124f2576124f161249e565b5b9250929050565b60008060008060408587031215612513576125126122a9565b5b600085013567ffffffffffffffff811115612531576125306122ae565b5b61253d878288016124a3565b9450945050602085013567ffffffffffffffff8111156125605761255f6122ae565b5b61256c878288016124a3565b925092505092959194509250565b6000602082840312156125905761258f6122a9565b5b600061259e84828501612328565b91505092915050565b600080604083850312156125be576125bd6122a9565b5b60006125cc858286016122fc565b92505060206125dd858286016122fc565b9150509250929050565b6000819050919050565b600061260c612607612602846122b3565b6125e7565b6122b3565b9050919050565b600061261e826125f1565b9050919050565b600061263082612613565b9050919050565b61264081612625565b82525050565b600060208201905061265b6000830184612637565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612697600683612202565b91506126a282612661565b602082019050919050565b600060208201905081810360008301526126c68161268a565b9050919050565b7f4f6e6c7920646576656c6f7065722063616e2061646a75737420736f6369616c60008201527f206c696e6b730000000000000000000000000000000000000000000000000000602082015250565b6000612729602683612202565b9150612734826126cd565b604082019050919050565b600060208201905081810360008301526127588161271c565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127e057607f821691505b6020821081036127f3576127f2612799565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261285b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261281e565b612865868361281e565b95508019841693508086168417925050509392505050565b600061289861289361288e846121c3565b6125e7565b6121c3565b9050919050565b6000819050919050565b6128b28361287d565b6128c66128be8261289f565b84845461282b565b825550505050565b600090565b6128db6128ce565b6128e68184846128a9565b505050565b5b8181101561290a576128ff6000826128d3565b6001810190506128ec565b5050565b601f82111561294f57612920816127f9565b6129298461280e565b81016020851015612938578190505b61294c6129448561280e565b8301826128eb565b50505b505050565b600082821c905092915050565b600061297260001984600802612954565b1980831691505092915050565b600061298b8383612961565b9150826002028217905092915050565b6129a5838361275f565b67ffffffffffffffff8111156129be576129bd61276a565b5b6129c882546127c8565b6129d382828561290e565b6000601f831160018114612a0257600084156129f0578287013590505b6129fa858261297f565b865550612a62565b601f198416612a10866127f9565b60005b82811015612a3857848901358255600182019150602085019450602081019050612a13565b86831015612a555784890135612a51601f891682612961565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920646576656c6f70657220637265617465207061697220616e64206160008201527f6464206c69717569646974790000000000000000000000000000000000000000602082015250565b6000612ac7602c83612202565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b600081519050612b0c816122e5565b92915050565b600060208284031215612b2857612b276122a9565b5b6000612b3684828501612afd565b91505092915050565b6000604082019050612b54600083018561246a565b612b61602083018461246a565b9392505050565b6000604082019050612b7d600083018561246a565b612b8a60208301846121cd565b9392505050565b612b9a8161237d565b8114612ba557600080fd5b50565b600081519050612bb781612b91565b92915050565b600060208284031215612bd357612bd26122a9565b5b6000612be184828501612ba8565b91505092915050565b6000819050919050565b6000612c0f612c0a612c0584612bea565b6125e7565b6121c3565b9050919050565b612c1f81612bf4565b82525050565b600060c082019050612c3a600083018961246a565b612c4760208301886121cd565b612c546040830187612c16565b612c616060830186612c16565b612c6e608083018561246a565b612c7b60a08301846121cd565b979650505050505050565b600081519050612c9581612311565b92915050565b600080600060608486031215612cb457612cb36122a9565b5b6000612cc286828701612c86565b9350506020612cd386828701612c86565b9250506040612ce486828701612c86565b9150509250925092565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000612d24601c83612202565b9150612d2f82612cee565b602082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d94826121c3565b9150612d9f836121c3565b9250828203905081811115612db757612db6612d5a565b5b92915050565b6000612dc8826121c3565b9150612dd3836121c3565b9250828201905080821115612deb57612dea612d5a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e4d602583612202565b9150612e5882612df1565b604082019050919050565b60006020820190508181036000830152612e7c81612e40565b9050919050565b6000612e8e826121c3565b9150612e99836121c3565b9250828202612ea7816121c3565b91508282048414831517612ebe57612ebd612d5a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eff826121c3565b9150612f0a836121c3565b925082612f1a57612f19612ec5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f81602183612202565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301b816122d3565b82525050565b600061302d8383613012565b60208301905092915050565b6000602082019050919050565b600061305182612fe6565b61305b8185612ff1565b935061306683613002565b8060005b8381101561309757815161307e8882613021565b975061308983613039565b92505060018101905061306a565b5085935050505092915050565b600060a0820190506130b960008301886121cd565b6130c66020830187612c16565b81810360408301526130d88186613046565b90506130e7606083018561246a565b6130f460808301846121cd565b9695505050505050565b600081905092915050565b50565b60006131196000836130fe565b915061312482613109565b600082019050919050565b600061313a8261310c565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061317a601e83612202565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131e6601b83612202565b91506131f1826131b0565b602082019050919050565b60006020820190508181036000830152613215816131d9565b905091905056fea2646970667358221220d3c881cf660f17a0330b7d19b07ca57ac8dedd34392f71e7f0278f6e0e1f71b664736f6c63430008120033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80637925f305116100d1578063a9059cbb1161008a578063dd5824d711610064578063dd5824d71461051e578063dd62ed3e14610547578063e0dc354614610584578063f887ea40146105af57610171565b8063a9059cbb146104ac578063b0f9e119146104e9578063c3f93b01146104f357610171565b80637925f305146103ae5780637bb1bd8f146103d7578063893d20e81461040057806395d89b411461042b578063a64e4f8a14610456578063a8aa1b311461048157610171565b8063313ce56711610123578063313ce567146102ae5780633f4def79146102d95780636c0a24eb146103045780636ddd17131461032f57806370a082311461035a578063715018a61461039757610171565b80630445b6671461017657806306fdde03146101a1578063095ea7b3146101cc57806318160ddd1461020957806323b872dd146102345780632f54bf6e1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105da565b60405161019891906121dc565b60405180910390f35b3480156101ad57600080fd5b506101b66105e0565b6040516101c39190612287565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee919061233d565b61061d565b6040516102009190612398565b60405180910390f35b34801561021557600080fd5b5061021e61070f565b60405161022b91906121dc565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906123b3565b610719565b6040516102689190612398565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612406565b610919565b6040516102a59190612398565b60405180910390f35b3480156102ba57600080fd5b506102c3610972565b6040516102d0919061244f565b60405180910390f35b3480156102e557600080fd5b506102ee61097b565b6040516102fb9190612479565b60405180910390f35b34801561031057600080fd5b506103196109a1565b60405161032691906121dc565b60405180910390f35b34801561033b57600080fd5b506103446109a7565b6040516103519190612398565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612406565b6109ba565b60405161038e91906121dc565b60405180910390f35b3480156103a357600080fd5b506103ac610a03565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906124f9565b610ac6565b005b3480156103e357600080fd5b506103fe60048036038101906103f9919061257a565b610b7e565b005b34801561040c57600080fd5b50610415610c2c565b6040516104229190612479565b60405180910390f35b34801561043757600080fd5b50610440610c55565b60405161044d9190612287565b60405180910390f35b34801561046257600080fd5b5061046b610c92565b6040516104789190612398565b60405180910390f35b34801561048d57600080fd5b50610496610ca5565b6040516104a39190612479565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061233d565b610ccb565b6040516104e09190612398565b60405180910390f35b6104f1610ce0565b005b3480156104ff57600080fd5b506105086111d6565b6040516105159190612287565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061257a565b611268565b005b34801561055357600080fd5b5061056e600480360381019061056991906125a7565b6112fe565b60405161057b91906121dc565b60405180910390f35b34801561059057600080fd5b50610599611385565b6040516105a69190612287565b60405180910390f35b3480156105bb57600080fd5b506105c4611417565b6040516105d19190612646565b60405180910390f35b600d5481565b60606040518060400160405280600581526020017f466c757465000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106fd91906121dc565b60405180910390a36001905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461090557610884826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6109108484846114a1565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600c60149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0c33610919565b610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a42906126ad565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610abc9190612479565b60405180910390a1565b7f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061273f565b60405180910390fd5b8383600f9182610b6592919061299b565b50818160109182610b7792919061299b565b5050505050565b610b8733610919565b610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906126ad565b60405180910390fd5b60648103610bfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600481905550610c29565b610c226064610c148360035461188290919063ffffffff16565b6118fc90919063ffffffff16565b6004819055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f464c555445000000000000000000000000000000000000000000000000000000815250905090565b600c60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd83384846114a1565b905092915050565b7f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590612add565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190612b12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190612b12565b6040518363ffffffff1660e01b8152600401610ec9929190612b3f565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c9190612b12565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405161101491906121dc565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110bb929190612b68565b6020604051808303816000875af11580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612bbd565b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611148306109ba565b6000807f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce9426040518863ffffffff1660e01b815260040161118e96959493929190612c25565b60606040518083038185885af11580156111ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d19190612c9b565b505050565b6060601080546111e5906127c8565b80601f0160208091040260200160405190810160405280929190818152602001828054611211906127c8565b801561125e5780601f106112335761010080835404028352916020019161125e565b820191906000526020600020905b81548152906001019060200180831161124157829003601f168201915b5050505050905090565b61127133610919565b6112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a7906126ad565b60405180910390fd5b60058111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612d3a565b60405180910390fd5b8060098190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600f8054611394906127c8565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906127c8565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c9190612287565b60405180910390fd5b50600083856114949190612d89565b9050809150509392505050565b6000600e60009054906101000a900460ff16156114ca576114c3848484611946565b905061187b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165f57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061161f575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161c9190612dbd565b11155b61165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612e63565b60405180910390fd5b5b611667611b19565b1561167557611674611bf0565b5b6116fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60159054906101000a900460ff168015611764575061176385611f1e565b5b61176e5782611779565b6117788584611f75565b5b90506117cd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161186d91906121dc565b60405180910390a360019150505b9392505050565b600080830361189457600090506118f6565b600082846118a29190612e83565b90508284826118b19190612ef4565b146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612f97565b60405180910390fd5b809150505b92915050565b600061193e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612116565b905092915050565b60006119d1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a6682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0691906121dc565b60405180910390a3600190509392505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611b865750600e60009054906101000a900460ff16155b8015611b9e5750600c60149054906101000a900460ff165b8015611beb5750600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600d54905060008190506000600267ffffffffffffffff811115611c3457611c3361276a565b5b604051908082528060200260200182016040528015611c625781602001602082028036833780820191505090505b5090503081600081518110611c7a57611c79612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612b12565b81600181518110611d5957611d58612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611df79594939291906130a4565b600060405180830381600087803b158015611e1157600080fd5b505af1158015611e25573d6000803e3d6000fd5b5050505060004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e769061312f565b60006040518083038185875af1925050503d8060008114611eb3576040519150601f19603f3d011682016040523d82523d6000602084013e611eb8565b606091505b5050905080611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613190565b60405180910390fd5b50505050506000600e60006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080611fa06064611f926009548661188290919063ffffffff16565b6118fc90919063ffffffff16565b9050611ff481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209491906121dc565b60405180910390a36120af818461217990919063ffffffff16565b91505092915050565b60008082846120c79190612dbd565b90508381101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906131fc565b60405180910390fd5b8091505092915050565b6000808311829061215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549190612287565b60405180910390fd5b506000838561216c9190612ef4565b9050809150509392505050565b60006121bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143d565b905092915050565b6000819050919050565b6121d6816121c3565b82525050565b60006020820190506121f160008301846121cd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612231578082015181840152602081019050612216565b60008484015250505050565b6000601f19601f8301169050919050565b6000612259826121f7565b6122638185612202565b9350612273818560208601612213565b61227c8161223d565b840191505092915050565b600060208201905081810360008301526122a1818461224e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122de826122b3565b9050919050565b6122ee816122d3565b81146122f957600080fd5b50565b60008135905061230b816122e5565b92915050565b61231a816121c3565b811461232557600080fd5b50565b60008135905061233781612311565b92915050565b60008060408385031215612354576123536122a9565b5b6000612362858286016122fc565b925050602061237385828601612328565b9150509250929050565b60008115159050919050565b6123928161237d565b82525050565b60006020820190506123ad6000830184612389565b92915050565b6000806000606084860312156123cc576123cb6122a9565b5b60006123da868287016122fc565b93505060206123eb868287016122fc565b92505060406123fc86828701612328565b9150509250925092565b60006020828403121561241c5761241b6122a9565b5b600061242a848285016122fc565b91505092915050565b600060ff82169050919050565b61244981612433565b82525050565b60006020820190506124646000830184612440565b92915050565b612473816122d3565b82525050565b600060208201905061248e600083018461246a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126124b9576124b8612494565b5b8235905067ffffffffffffffff8111156124d6576124d5612499565b5b6020830191508360018202830111156124f2576124f161249e565b5b9250929050565b60008060008060408587031215612513576125126122a9565b5b600085013567ffffffffffffffff811115612531576125306122ae565b5b61253d878288016124a3565b9450945050602085013567ffffffffffffffff8111156125605761255f6122ae565b5b61256c878288016124a3565b925092505092959194509250565b6000602082840312156125905761258f6122a9565b5b600061259e84828501612328565b91505092915050565b600080604083850312156125be576125bd6122a9565b5b60006125cc858286016122fc565b92505060206125dd858286016122fc565b9150509250929050565b6000819050919050565b600061260c612607612602846122b3565b6125e7565b6122b3565b9050919050565b600061261e826125f1565b9050919050565b600061263082612613565b9050919050565b61264081612625565b82525050565b600060208201905061265b6000830184612637565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612697600683612202565b91506126a282612661565b602082019050919050565b600060208201905081810360008301526126c68161268a565b9050919050565b7f4f6e6c7920646576656c6f7065722063616e2061646a75737420736f6369616c60008201527f206c696e6b730000000000000000000000000000000000000000000000000000602082015250565b6000612729602683612202565b9150612734826126cd565b604082019050919050565b600060208201905081810360008301526127588161271c565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127e057607f821691505b6020821081036127f3576127f2612799565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261285b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261281e565b612865868361281e565b95508019841693508086168417925050509392505050565b600061289861289361288e846121c3565b6125e7565b6121c3565b9050919050565b6000819050919050565b6128b28361287d565b6128c66128be8261289f565b84845461282b565b825550505050565b600090565b6128db6128ce565b6128e68184846128a9565b505050565b5b8181101561290a576128ff6000826128d3565b6001810190506128ec565b5050565b601f82111561294f57612920816127f9565b6129298461280e565b81016020851015612938578190505b61294c6129448561280e565b8301826128eb565b50505b505050565b600082821c905092915050565b600061297260001984600802612954565b1980831691505092915050565b600061298b8383612961565b9150826002028217905092915050565b6129a5838361275f565b67ffffffffffffffff8111156129be576129bd61276a565b5b6129c882546127c8565b6129d382828561290e565b6000601f831160018114612a0257600084156129f0578287013590505b6129fa858261297f565b865550612a62565b601f198416612a10866127f9565b60005b82811015612a3857848901358255600182019150602085019450602081019050612a13565b86831015612a555784890135612a51601f891682612961565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920646576656c6f70657220637265617465207061697220616e64206160008201527f6464206c69717569646974790000000000000000000000000000000000000000602082015250565b6000612ac7602c83612202565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b600081519050612b0c816122e5565b92915050565b600060208284031215612b2857612b276122a9565b5b6000612b3684828501612afd565b91505092915050565b6000604082019050612b54600083018561246a565b612b61602083018461246a565b9392505050565b6000604082019050612b7d600083018561246a565b612b8a60208301846121cd565b9392505050565b612b9a8161237d565b8114612ba557600080fd5b50565b600081519050612bb781612b91565b92915050565b600060208284031215612bd357612bd26122a9565b5b6000612be184828501612ba8565b91505092915050565b6000819050919050565b6000612c0f612c0a612c0584612bea565b6125e7565b6121c3565b9050919050565b612c1f81612bf4565b82525050565b600060c082019050612c3a600083018961246a565b612c4760208301886121cd565b612c546040830187612c16565b612c616060830186612c16565b612c6e608083018561246a565b612c7b60a08301846121cd565b979650505050505050565b600081519050612c9581612311565b92915050565b600080600060608486031215612cb457612cb36122a9565b5b6000612cc286828701612c86565b9350506020612cd386828701612c86565b9250506040612ce486828701612c86565b9150509250925092565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000612d24601c83612202565b9150612d2f82612cee565b602082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d94826121c3565b9150612d9f836121c3565b9250828203905081811115612db757612db6612d5a565b5b92915050565b6000612dc8826121c3565b9150612dd3836121c3565b9250828201905080821115612deb57612dea612d5a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e4d602583612202565b9150612e5882612df1565b604082019050919050565b60006020820190508181036000830152612e7c81612e40565b9050919050565b6000612e8e826121c3565b9150612e99836121c3565b9250828202612ea7816121c3565b91508282048414831517612ebe57612ebd612d5a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eff826121c3565b9150612f0a836121c3565b925082612f1a57612f19612ec5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f81602183612202565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301b816122d3565b82525050565b600061302d8383613012565b60208301905092915050565b6000602082019050919050565b600061305182612fe6565b61305b8185612ff1565b935061306683613002565b8060005b8381101561309757815161307e8882613021565b975061308983613039565b92505060018101905061306a565b5085935050505092915050565b600060a0820190506130b960008301886121cd565b6130c66020830187612c16565b81810360408301526130d88186613046565b90506130e7606083018561246a565b6130f460808301846121cd565b9695505050505050565b600081905092915050565b50565b60006131196000836130fe565b915061312482613109565b600082019050919050565b600061313a8261310c565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061317a601e83612202565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131e6601b83612202565b91506131f1826131b0565b602082019050919050565b60006020820190508181036000830152613215816131d9565b905091905056fea2646970667358221220d3c881cf660f17a0330b7d19b07ca57ac8dedd34392f71e7f0278f6e0e1f71b664736f6c63430008120033

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.