ETH Price: $2,518.48 (+2.79%)

Token

Crypto Fight Inflation (CFI)
 

Overview

Max Total Supply

1,000,000,000 CFI

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,559,327.280564554577237207 CFI

Value
$0.00
0xc2843a83fc9dbc16f8ad3922e8b0d1c1f9334f53
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:
CFI

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-26
*/

pragma solidity ^0.7.0;
//SPDX-License-Identifier: UNLICENSED

/* The time has come to summon all legendary crypto warriors to gather and fight our greatest enemy in this day and age ⚔

Telegram: https://t.me/CFI_portal
Website: https://cfi.quest/
*/

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address who) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function transfer(address to, uint value) external returns (bool);
    function approve(address spender, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}
interface IUNIv2 {
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) 
    external 
    payable 
    returns (uint amountToken, uint amountETH, uint liquidity);
    
    function WETH() external pure returns (address);

}


interface IUniswapV2Factory {
  event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}


contract CFI is IERC20, Ownable {
    
    using SafeMath for uint;
    IUNIv2 uniswapRouter = IUNIv2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Factory uniswapFactory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
    string public _symbol;
    string public _name;
    uint8 public _decimals;
    uint _totalSupply = 1000000000 ether;
    uint public CPI_VALUE; // Divided by 10, see line 213

 
    address public pool;
    
    bool public burning;

    uint256 private _maxTxAmount = _totalSupply / 100;
    uint256 private _maxWalletAmount = _totalSupply / 100;

    bool private started = false;

    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public blacklisted;

    
    mapping(address => uint) _balances;
    mapping(address => mapping(address => uint)) _allowances;
    mapping(address => bool) internal authorizations;

     
     modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED");
        _;
    }
 
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
    
    constructor() {
        authorizations[owner()] = true;
        _symbol = "CFI";
        _name = "Crypto Fight Inflation";
        _decimals = 18;
        
         isTxLimitExempt[owner()] = true;

         pool = uniswapFactory.createPair(address(this), uniswapRouter.WETH());

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }
    

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

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

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

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

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


    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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


    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }


    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

         if(!isTxLimitExempt[sender])
            require(!blacklisted[sender], "You are blacklisted");
            
        if(!started && sender == pool && !isTxLimitExempt[recipient] && recipient != address(uniswapRouter) && recipient != pool) {
            blacklisted[recipient] = true;
        }
            if (
            sender != owner() &&
            recipient != owner() &&
            !isTxLimitExempt[recipient] &&
            recipient != address(0x000000000000000000000000000000000000dEaD) &&
            recipient != pool &&
            recipient != address(this)
        ) {
            require(amount <= _maxTxAmount, "MAX TX");
            uint256 balanceRecipient = balanceOf(recipient);
            require(
                balanceRecipient + amount <= _maxWalletAmount,
                "Exceeds maximum wallet token amount"
            );
        }

        if (recipient == pool && burning && sender != owner() && sender != address(uniswapFactory) && CPI_VALUE != 0) {
        uint256 ToBurn = amount.mul(CPI_VALUE).div(1000);
        uint256 ToTransfer = amount.sub(ToBurn);
        
        _burn(sender, ToBurn);

        _balances[sender] = _balances[sender].sub(ToTransfer, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(ToTransfer);
        emit Transfer(sender, recipient, ToTransfer);
    }
        else {

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        }
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _balances[address(0)] = _balances[address(0)].add(amount);
        emit Transfer(account, address(0), amount);
    }

    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 setCPI(uint256 value) external authorized {
        require(value <= 150, "Hyperinflation");
        CPI_VALUE = value;
    }

    function setIsBurning(bool value) external authorized {
        burning = value;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        authorized
    {
        isTxLimitExempt[holder] = exempt;
    }

     function removeBots(address[] memory _bots) external onlyOwner {
        for (uint16 i = 0; i < _bots.length; i++) {
               blacklisted[_bots[i]] = false;
       }
    }

    function liftLimits() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletAmount = _totalSupply;
    }

    function theGigaStart() external onlyOwner {
        started = true;
    }


     function recoverLosteth() external authorized {
        payable(msg.sender).transfer(address(this).balance);
    }
 
    function recoverLostTokens(address _token, uint256 _amount)
        external
        authorized
    {
        IERC20(_token).transfer(msg.sender, _amount);
    }
}



library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"CPI_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverLosteth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setCPI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsBurning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"theGigaStart","outputs":[],"stateMutability":"nonpayable","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"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce8000000600755606460075481620000cb57fe5b04600a55606460075481620000dc57fe5b04600b556000600c60006101000a81548160ff0219169083151502179055503480156200010857600080fd5b5060006200011b620005dd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160116000620001cf620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f4346490000000000000000000000000000000000000000000000000000000000815250600490805190602001906200026d9291906200060e565b506040518060400160405280601681526020017f43727970746f20466967687420496e666c6174696f6e0000000000000000000081525060059080519060200190620002bb9291906200060e565b506012600660006101000a81548160ff021916908360ff1602179055506001600d6000620002ee620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003e757600080fd5b505afa158015620003fc573d6000803e3d6000fd5b505050506040513d60208110156200041357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200048e57600080fd5b505af1158015620004a3573d6000803e3d6000fd5b505050506040513d6020811015620004ba57600080fd5b8101908080519060200190929190505050600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600f600062000522620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000570620005e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a3620006c4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000646576000855562000692565b82601f106200066157805160ff191683800117855562000692565b8280016001018555821562000692579182015b828111156200069157825182559160200191906001019062000674565b5b509050620006a19190620006a5565b5090565b5b80821115620006c0576000816000905550600101620006a6565b5090565b612f1c80620006d46000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d28d8852116100a2578063efdc4cab11610071578063efdc4cab146109dd578063f60b3d6d14610a0b578063f84ba65d14610a15578063fe9fbb8014610a65576101da565b8063d28d88521461083a578063dbac26e9146108bd578063dd62ed3e14610917578063dec2ba0f1461098f576101da565b8063a9059cbb116100de578063a9059cbb14610719578063b09f12661461077d578063bc3f4f5414610800578063bd7c9dfb14610830576101da565b80638da5cb5b146105fe57806395d89b4114610632578063a457c2d7146106b5576101da565b806333596f501161017c5780636c3bbfd71161014b5780636c3bbfd71461048a57806370a0823114610542578063715018a61461059a5780638b42507f146105a4576101da565b806333596f50146103de57806337540e35146103e857806339509351146104065780634c12b33f1461046a576101da565b806318160ddd116101b857806318160ddd146102fa57806323b872dd14610318578063313ce5671461039c57806332424aa3146103bd576101da565b806306fdde03146101df578063095ea7b31461026257806316f0115b146102c6575b600080fd5b6101e7610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b61565b60405180821515815260200191505060405180910390f35b6102ce610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610302610ba5565b6040518082815260200191505060405180910390f35b6103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610baf565b60405180821515815260200191505060405180910390f35b6103a4610c88565b604051808260ff16815260200191505060405180910390f35b6103c5610c9f565b604051808260ff16815260200191505060405180910390f35b6103e6610cb2565b005b6103f0610d76565b6040518082815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7c565b60405180821515815260200191505060405180910390f35b610472610e2f565b60405180821515815260200191505060405180910390f35b610540600480360360208110156104a057600080fd5b81019080803590602001906401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460208302840111640100000000831117156104f157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610e42565b005b6105846004803603602081101561055857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9a565b6040518082815260200191505060405180910390f35b6105a2610fe3565b005b6105e6600480360360208110156105ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611169565b60405180821515815260200191505060405180910390f35b610606611189565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063a6111b2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561067a57808201518184015260208101905061065f565b50505050905090810190601f1680156106a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610701600480360360408110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611254565b60405180821515815260200191505060405180910390f35b6107656004803603604081101561072f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611321565b60405180821515815260200191505060405180910390f35b61078561133f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107c55780820151818401526020810190506107aa565b50505050905090810190601f1680156107f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61082e6004803603602081101561081657600080fd5b810190808035151590602001909291905050506113dd565b005b610838611475565b005b61084261155a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610882578082015181840152602081019050610867565b50505050905090810190601f1680156108af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108ff600480360360208110156108d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f8565b60405180821515815260200191505060405180910390f35b6109796004803603604081101561092d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b6040518082815260200191505060405180910390f35b6109db600480360360408110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061169f565b005b610a09600480360360208110156109f357600080fd5b81019080803590602001909291905050506117cb565b005b610a136118c7565b005b610a6360048036036040811015610a2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b610aa760048036036020811015610a7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a79565b60405180821515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e611acf565b8484611ad7565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b6000610bbc848484611cce565b610c7d84610bc8611acf565b610c7885604051806060016040528060288152602001612e3060289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2e611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b611ad7565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610cbb33611a79565b610d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d73573d6000803e3d6000fd5b50565b60085481565b6000610e25610d89611acf565b84610e208560106000610d9a611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b611ad7565b6001905092915050565b600960149054906101000a900460ff1681565b610e4a611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518161ffff161015610f96576000600e6000848461ffff1681518110610f3057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610f0d565b5050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610feb611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124a5780601f1061121f5761010080835404028352916020019161124a565b820191906000526020600020905b81548152906001019060200180831161122d57829003601f168201915b5050505050905090565b6000611317611261611acf565b8461131285604051806060016040528060258152602001612ec2602591396010600061128b611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b611ad7565b6001905092915050565b600061133561132e611acf565b8484611cce565b6001905092915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113d55780601f106113aa576101008083540402835291602001916113d5565b820191906000526020600020905b8154815290600101906020018083116113b857829003601f168201915b505050505081565b6113e633611a79565b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b61147d611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b505050505081565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a833611a79565b61171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506040513d60208110156117b557600080fd5b8101908080519060200190929190505050505050565b6117d433611a79565b611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60968111156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4879706572696e666c6174696f6e00000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b6118cf611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600754600a81905550600754600b81905550565b6119ac33611a79565b611a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e9e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612da46022913960400191505060405180910390fd5b80601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e796025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d5f6023913960400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611eec57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b5b600c60009054906101000a900460ff16158015611f565750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611fac5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120065750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120605750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120be576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6120c6611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121345750612104611189565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561218a5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121c4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561221e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561225657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561233f57600a548111156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4d4158205458000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006122de83610f9a565b9050600b54828201111561233d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dec6023913960400191505060405180910390fd5b505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123a85750600960149054906101000a900460ff165b80156123e757506123b7611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124415750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124505750600060085414155b156126535760006124806103e86124726008548561294a90919063ffffffff16565b6129d090919063ffffffff16565b905060006124978284612a1a90919063ffffffff16565b90506124a38583612a64565b61250f81604051806060016040528060268152602001612dc660269139600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a481600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506127fd565b6126bf81604051806060016040528060268152602001612dc660269139600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275481600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b505050565b60008383111582906128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612874578082015181840152602081019050612859565b50505050905090810190601f1680156128a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561295d57600090506129ca565b600082840290508284828161296e57fe5b04146129c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e0f6021913960400191505060405180910390fd5b809150505b92915050565b6000612a1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c98565b905092915050565b6000612a5c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612802565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e586021913960400191505060405180910390fd5b612b5681604051806060016040528060228152602001612d8260229139600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612beb81600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d09578082015181840152602081019050612cee565b50505050905090810190601f168015612d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d5057fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202c8c5921e3a4251189e217e4278dfcbd4810f8b650745fa6b84acab7e45d117364736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d28d8852116100a2578063efdc4cab11610071578063efdc4cab146109dd578063f60b3d6d14610a0b578063f84ba65d14610a15578063fe9fbb8014610a65576101da565b8063d28d88521461083a578063dbac26e9146108bd578063dd62ed3e14610917578063dec2ba0f1461098f576101da565b8063a9059cbb116100de578063a9059cbb14610719578063b09f12661461077d578063bc3f4f5414610800578063bd7c9dfb14610830576101da565b80638da5cb5b146105fe57806395d89b4114610632578063a457c2d7146106b5576101da565b806333596f501161017c5780636c3bbfd71161014b5780636c3bbfd71461048a57806370a0823114610542578063715018a61461059a5780638b42507f146105a4576101da565b806333596f50146103de57806337540e35146103e857806339509351146104065780634c12b33f1461046a576101da565b806318160ddd116101b857806318160ddd146102fa57806323b872dd14610318578063313ce5671461039c57806332424aa3146103bd576101da565b806306fdde03146101df578063095ea7b31461026257806316f0115b146102c6575b600080fd5b6101e7610abf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022757808201518184015260208101905061020c565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ae6004803603604081101561027857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b61565b60405180821515815260200191505060405180910390f35b6102ce610b7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610302610ba5565b6040518082815260200191505060405180910390f35b6103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610baf565b60405180821515815260200191505060405180910390f35b6103a4610c88565b604051808260ff16815260200191505060405180910390f35b6103c5610c9f565b604051808260ff16815260200191505060405180910390f35b6103e6610cb2565b005b6103f0610d76565b6040518082815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d7c565b60405180821515815260200191505060405180910390f35b610472610e2f565b60405180821515815260200191505060405180910390f35b610540600480360360208110156104a057600080fd5b81019080803590602001906401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460208302840111640100000000831117156104f157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610e42565b005b6105846004803603602081101561055857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9a565b6040518082815260200191505060405180910390f35b6105a2610fe3565b005b6105e6600480360360208110156105ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611169565b60405180821515815260200191505060405180910390f35b610606611189565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61063a6111b2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561067a57808201518184015260208101905061065f565b50505050905090810190601f1680156106a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610701600480360360408110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611254565b60405180821515815260200191505060405180910390f35b6107656004803603604081101561072f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611321565b60405180821515815260200191505060405180910390f35b61078561133f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107c55780820151818401526020810190506107aa565b50505050905090810190601f1680156107f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61082e6004803603602081101561081657600080fd5b810190808035151590602001909291905050506113dd565b005b610838611475565b005b61084261155a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610882578082015181840152602081019050610867565b50505050905090810190601f1680156108af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108ff600480360360208110156108d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f8565b60405180821515815260200191505060405180910390f35b6109796004803603604081101561092d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b6040518082815260200191505060405180910390f35b6109db600480360360408110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061169f565b005b610a09600480360360208110156109f357600080fd5b81019080803590602001909291905050506117cb565b005b610a136118c7565b005b610a6360048036036040811015610a2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506119a3565b005b610aa760048036036020811015610a7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a79565b60405180821515815260200191505060405180910390f35b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e611acf565b8484611ad7565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b6000610bbc848484611cce565b610c7d84610bc8611acf565b610c7885604051806060016040528060288152602001612e3060289139601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2e611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b611ad7565b600190509392505050565b6000600660009054906101000a900460ff16905090565b600660009054906101000a900460ff1681565b610cbb33611a79565b610d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d73573d6000803e3d6000fd5b50565b60085481565b6000610e25610d89611acf565b84610e208560106000610d9a611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b611ad7565b6001905092915050565b600960149054906101000a900460ff1681565b610e4a611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b81518161ffff161015610f96576000600e6000848461ffff1681518110610f3057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610f0d565b5050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610feb611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561124a5780601f1061121f5761010080835404028352916020019161124a565b820191906000526020600020905b81548152906001019060200180831161122d57829003601f168201915b5050505050905090565b6000611317611261611acf565b8461131285604051806060016040528060258152602001612ec2602591396010600061128b611acf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b611ad7565b6001905092915050565b600061133561132e611acf565b8484611cce565b6001905092915050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113d55780601f106113aa576101008083540402835291602001916113d5565b820191906000526020600020905b8154815290600101906020018083116113b857829003601f168201915b505050505081565b6113e633611a79565b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b61147d611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115f05780601f106115c5576101008083540402835291602001916115f0565b820191906000526020600020905b8154815290600101906020018083116115d357829003601f168201915b505050505081565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116a833611a79565b61171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506040513d60208110156117b557600080fd5b8101908080519060200190929190505050505050565b6117d433611a79565b611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b60968111156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4879706572696e666c6174696f6e00000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b6118cf611acf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600754600a81905550600754600b81905550565b6119ac33611a79565b611a1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e9e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612da46022913960400191505060405180910390fd5b80601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e796025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d5f6023913960400191505060405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611eec57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611eeb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b5b600c60009054906101000a900460ff16158015611f565750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611fac5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120065750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120605750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120be576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6120c6611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121345750612104611189565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561218a5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121c4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561221e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561225657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561233f57600a548111156122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f4d4158205458000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006122de83610f9a565b9050600b54828201111561233d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612dec6023913960400191505060405180910390fd5b505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123a85750600960149054906101000a900460ff165b80156123e757506123b7611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124415750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156124505750600060085414155b156126535760006124806103e86124726008548561294a90919063ffffffff16565b6129d090919063ffffffff16565b905060006124978284612a1a90919063ffffffff16565b90506124a38583612a64565b61250f81604051806060016040528060268152602001612dc660269139600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125a481600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350506127fd565b6126bf81604051806060016040528060268152602001612dc660269139600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275481600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b505050565b60008383111582906128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612874578082015181840152602081019050612859565b50505050905090810190601f1680156128a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561295d57600090506129ca565b600082840290508284828161296e57fe5b04146129c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e0f6021913960400191505060405180910390fd5b809150505b92915050565b6000612a1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c98565b905092915050565b6000612a5c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612802565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e586021913960400191505060405180910390fd5b612b5681604051806060016040528060228152602001612d8260229139600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128029092919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612beb81600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c290919063ffffffff16565b600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d09578082015181840152602081019050612cee565b50505050905090810190601f168015612d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d5057fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f756e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202c8c5921e3a4251189e217e4278dfcbd4810f8b650745fa6b84acab7e45d117364736f6c63430007060033

Deployed Bytecode Sourcemap

2543:7243:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4130:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4994:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2991:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4407:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5171:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4316:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2855:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9492:116;;;:::i;:::-;;2927:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5502:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3023:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9079:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4515:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2384:148;;;:::i;:::-;;3206:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2170:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4221:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5730:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4644:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2801:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8823:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9405:76;;;:::i;:::-;;2829:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3260:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4827:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9617:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8678:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9268:129;;;:::i;:::-;;8919:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3597:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4130:83;4167:13;4200:5;4193:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4130:83;:::o;4994:169::-;5077:4;5094:39;5103:12;:10;:12::i;:::-;5117:7;5126:6;5094:8;:39::i;:::-;5151:4;5144:11;;4994:169;;;;:::o;2991:19::-;;;;;;;;;;;;;:::o;4407:100::-;4460:7;4487:12;;4480:19;;4407:100;:::o;5171:321::-;5277:4;5294:36;5304:6;5312:9;5323:6;5294:9;:36::i;:::-;5341:121;5350:6;5358:12;:10;:12::i;:::-;5372:89;5410:6;5372:89;;;;;;;;;;;;;;;;;:11;:19;5384:6;5372:19;;;;;;;;;;;;;;;:33;5392:12;:10;:12::i;:::-;5372:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5341:8;:121::i;:::-;5480:4;5473:11;;5171:321;;;;;:::o;4316:83::-;4357:5;4382:9;;;;;;;;;;;4375:16;;4316:83;:::o;2855:22::-;;;;;;;;;;;;;:::o;9492:116::-;3528:24;3541:10;3528:12;:24::i;:::-;3520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9557:10:::1;9549:28;;:51;9578:21;9549:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9492:116::o:0;2927:21::-;;;;:::o;5502:218::-;5590:4;5607:83;5616:12;:10;:12::i;:::-;5630:7;5639:50;5678:10;5639:11;:25;5651:12;:10;:12::i;:::-;5639:25;;;;;;;;;;;;;;;:34;5665:7;5639:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5607:8;:83::i;:::-;5708:4;5701:11;;5502:218;;;;:::o;3023:19::-;;;;;;;;;;;;;:::o;9079:181::-;2307:12;:10;:12::i;:::-;2297:22;;:6;;;;;;;;;;:22;;;2289:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9158:8:::1;9153:100;9176:5;:12;9172:1;:16;;;9153:100;;;9237:5;9213:11;:21;9225:5;9231:1;9225:8;;;;;;;;;;;;;;;;9213:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9190:3;;;;;;;9153:100;;;;9079:181:::0;:::o;4515:119::-;4581:7;4608:9;:18;4618:7;4608:18;;;;;;;;;;;;;;;;4601:25;;4515:119;;;:::o;2384:148::-;2307:12;:10;:12::i;:::-;2297:22;;:6;;;;;;;;;;:22;;;2289:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:1:::1;2454:40;;2475:6;::::0;::::1;;;;;;;;2454:40;;;;;;;;;;;;2522:1;2505:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2384:148::o:0;3206:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;2170:79::-;2208:7;2235:6;;;;;;;;;;;2228:13;;2170:79;:::o;4221:87::-;4260:13;4293:7;4286:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4221:87;:::o;5730:269::-;5823:4;5840:129;5849:12;:10;:12::i;:::-;5863:7;5872:96;5911:15;5872:96;;;;;;;;;;;;;;;;;:11;:25;5884:12;:10;:12::i;:::-;5872:25;;;;;;;;;;;;;;;:34;5898:7;5872:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5840:8;:129::i;:::-;5987:4;5980:11;;5730:269;;;;:::o;4644:175::-;4730:4;4747:42;4757:12;:10;:12::i;:::-;4771:9;4782:6;4747:9;:42::i;:::-;4807:4;4800:11;;4644:175;;;;:::o;2801:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8823:88::-;3528:24;3541:10;3528:12;:24::i;:::-;3520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8898:5:::1;8888:7;;:15;;;;;;;;;;;;;;;;;;8823:88:::0;:::o;9405:76::-;2307:12;:10;:12::i;:::-;2297:22;;:6;;;;;;;;;;:22;;;2289:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9469:4:::1;9459:7;;:14;;;;;;;;;;;;;;;;;;9405:76::o:0;2829:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3260:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;4827:153::-;4917:7;4944:11;:19;4956:6;4944:19;;;;;;;;;;;;;;;:28;4964:7;4944:28;;;;;;;;;;;;;;;;4937:35;;4827:153;;;;:::o;9617:166::-;3528:24;3541:10;3528:12;:24::i;:::-;3520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9738:6:::1;9731:23;;;9755:10;9767:7;9731:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;9617:166:::0;;:::o;8678:137::-;3528:24;3541:10;3528:12;:24::i;:::-;3520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8757:3:::1;8748:5;:12;;8740:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8802:5;8790:9;:17;;;;8678:137:::0;:::o;9268:129::-;2307:12;:10;:12::i;:::-;2297:22;;:6;;;;;;;;;;:22;;;2289:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9335:12:::1;;9320;:27;;;;9377:12;;9358:16;:31;;;;9268:129::o:0;8919:151::-;3528:24;3541:10;3528:12;:24::i;:::-;3520:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9056:6:::1;9030:15;:23;9046:6;9030:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8919:151:::0;;:::o;3597:107::-;3653:4;3677:14;:19;3692:3;3677:19;;;;;;;;;;;;;;;;;;;;;;;;;3670:26;;3597:107;;;:::o;1461:106::-;1514:15;1549:10;1542:17;;1461:106;:::o;8320:350::-;8441:1;8423:20;;:6;:20;;;;8415:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8522:1;8503:21;;:7;:21;;;;8495:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8607:6;8576:11;:19;8588:6;8576:19;;;;;;;;;;;;;;;:28;8596:7;8576:28;;;;;;;;;;;;;;;:37;;;;8646:7;8629:33;;8638:6;8629:33;;;8655:6;8629:33;;;;;;;;;;;;;;;;;;8320:350;;;:::o;6013:1917::-;6137:1;6119:20;;:6;:20;;;;6111:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6221:1;6200:23;;:9;:23;;;;6192:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6281:15;:23;6297:6;6281:23;;;;;;;;;;;;;;;;;;;;;;;;;6277:94;;6328:11;:19;6340:6;6328:19;;;;;;;;;;;;;;;;;;;;;;;;;6327:20;6319:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6277:94;6400:7;;;;;;;;;;;6399:8;:26;;;;;6421:4;;;;;;;;;;;6411:14;;:6;:14;;;6399:26;:57;;;;;6430:15;:26;6446:9;6430:26;;;;;;;;;;;;;;;;;;;;;;;;;6429:27;6399:57;:96;;;;;6481:13;;;;;;;;;;;6460:35;;:9;:35;;;;6399:96;:117;;;;;6512:4;;;;;;;;;;;6499:17;;:9;:17;;;;6399:117;6396:178;;;6558:4;6533:11;:22;6545:9;6533:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6396:178;6616:7;:5;:7::i;:::-;6606:17;;:6;:17;;;;:54;;;;;6653:7;:5;:7::i;:::-;6640:20;;:9;:20;;;;6606:54;:98;;;;;6678:15;:26;6694:9;6678:26;;;;;;;;;;;;;;;;;;;;;;;;;6677:27;6606:98;:179;;;;;6742:42;6721:64;;:9;:64;;;;6606:179;:213;;;;;6815:4;;;;;;;;;;;6802:17;;:9;:17;;;;6606:213;:256;;;;;6857:4;6836:26;;:9;:26;;;;6606:256;6588:573;;;6907:12;;6897:6;:22;;6889:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:24;6972:20;6982:9;6972;:20::i;:::-;6945:47;;7062:16;;7052:6;7033:16;:25;:45;;7007:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6588:573;;7190:4;;;;;;;;;;;7177:17;;:9;:17;;;:28;;;;;7198:7;;;;;;;;;;;7177:28;:49;;;;;7219:7;:5;:7::i;:::-;7209:17;;:6;:17;;;;7177:49;:86;;;;;7248:14;;;;;;;;;;;7230:33;;:6;:33;;;;7177:86;:104;;;;;7280:1;7267:9;;:14;;7177:104;7173:750;;;7294:14;7311:31;7337:4;7311:21;7322:9;;7311:6;:10;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;7294:48;;7353:18;7374;7385:6;7374;:10;;:18;;;;:::i;:::-;7353:39;;7413:21;7419:6;7427;7413:5;:21::i;:::-;7467:75;7489:10;7467:75;;;;;;;;;;;;;;;;;:9;:17;7477:6;7467:17;;;;;;;;;;;;;;;;:21;;:75;;;;;:::i;:::-;7447:9;:17;7457:6;7447:17;;;;;;;;;;;;;;;:95;;;;7576:36;7601:10;7576:9;:20;7586:9;7576:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;7553:9;:20;7563:9;7553:20;;;;;;;;;;;;;;;:59;;;;7645:9;7628:39;;7637:6;7628:39;;;7656:10;7628:39;;;;;;;;;;;;;;;;;;7173:750;;;;;7723:71;7745:6;7723:71;;;;;;;;;;;;;;;;;:9;:17;7733:6;7723:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7703:9;:17;7713:6;7703:17;;;;;;;;;;;;;;;:91;;;;7828:32;7853:6;7828:9;:20;7838:9;7828:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7805:9;:20;7815:9;7805:20;;;;;;;;;;;;;;;:55;;;;7893:9;7876:35;;7885:6;7876:35;;;7904:6;7876:35;;;;;;;;;;;;;;;;;;7173:750;6013:1917;;;:::o;10960:192::-;11046:7;11079:1;11074;:6;;11082:12;11066:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11106:9;11122:1;11118;:5;11106:17;;11143:1;11136:8;;;10960:192;;;;;:::o;10057:181::-;10115:7;10135:9;10151:1;10147;:5;10135:17;;10176:1;10171;:6;;10163:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10229:1;10222:8;;;10057:181;;;;:::o;11411:471::-;11469:7;11719:1;11714;:6;11710:47;;;11744:1;11737:8;;;;11710:47;11769:9;11785:1;11781;:5;11769:17;;11814:1;11809;11805;:5;;;;;;:10;11797:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11873:1;11866:8;;;11411:471;;;;;:::o;12358:132::-;12416:7;12443:39;12447:1;12450;12443:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;12436:46;;12358:132;;;;:::o;10521:136::-;10579:7;10606:43;10610:1;10613;10606:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10599:50;;10521:136;;;;:::o;7938:374::-;8041:1;8022:21;;:7;:21;;;;8014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8115:68;8138:6;8115:68;;;;;;;;;;;;;;;;;:9;:18;8125:7;8115:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8094:9;:18;8104:7;8094:18;;;;;;;;;;;;;;;:89;;;;8218:33;8244:6;8218:9;:21;8236:1;8218:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;8194:9;:21;8212:1;8194:21;;;;;;;;;;;;;;;:57;;;;8293:1;8267:37;;8276:7;8267:37;;;8297:6;8267:37;;;;;;;;;;;;;;;;;;7938:374;;:::o;12986:278::-;13072:7;13104:1;13100;:5;13107:12;13092:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13131:9;13147:1;13143;:5;;;;;;13131:17;;13255:1;13248:8;;;12986:278;;;;;:::o

Swarm Source

ipfs://2c8c5921e3a4251189e217e4278dfcbd4810f8b650745fa6b84acab7e45d1173
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.