ETH Price: $3,099.24 (+3.81%)
Gas: 41 Gwei

Token

LuxuryBoomSquare (LBS)
 

Overview

Max Total Supply

1,000,000,000 LBS

Holders

10

Total Transfers

-

Market

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
LuxuryBoomSquare

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.8.0;

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function owner() public view virtual 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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract Freezable is Context {
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);

    mapping(address => bool) private _frozenAccount;

    modifier whenNotFrozen(address holder) {
        require(!_frozenAccount[holder]);
        _;
    }

    function isFrozen(address holder) public view virtual returns (bool frozen) {
        return _frozenAccount[holder];
    }

    function _freezeAccount(address holder) internal virtual returns (bool success) {
        require(!isFrozen(holder));
        _frozenAccount[holder] = true;
        emit Freeze(holder);
        success = true;
    }

    function _unfreezeAccount(address holder) internal virtual returns (bool success) {
        require(isFrozen(holder));
        _frozenAccount[holder] = false;
        emit Unfreeze(holder);
        success = true;
    }
}

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual 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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        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");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= 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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
    unchecked {
        _approve(account, _msgSender(), currentAllowance - amount);
    }
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        if (length > 0) {
            autoUnlock(from);
        }
        require(_balances[from] >= _totalLocked[from] + amount, "checkLock : balance exceed");
        _;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success)
    {
        require(
            _balances[from] >= amount + _totalLocked[from],
            "lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage info = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - info._amount;
        emit Unlock(from, info._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) public onlyOwner returns (bool success) {
        require(_balances[recipient] >= amount, "There is not enough balance of holder.");
        _lock(recipient, amount, releaseTime);

        success = true;
    }

    function autoUnlock(address from) public returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        success = true;
    }

    function unlock(address from, uint256 idx) public onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success){
        require(_locks[from].length > 0, "There is not lock info.");
        //        uint256 i = _locks[from].length - 1;
        //        _unlock(from, i);
        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success)
    {
        require(recipient != address(0));
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount)
    {
        LockInfo memory info = _locks[locked][index];
        releaseTime = info._releaseTime;
        amount = info._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

contract LuxuryBoomSquare is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("LuxuryBoomSquare", "LBS") {
        _mint(msg.sender, 1000000000 * (10 ** decimals()));
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function freezeAccount(address holder) public onlyOwner {
        _freezeAccount(holder);
    }

    function unfreezeAccount(address holder) public onlyOwner {
        _unfreezeAccount(holder);
    }

    function transfer(address to, uint256 amount) public checkLock(msg.sender, amount) override returns (bool) {
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public checkLock(from, amount) override returns (bool) {
        return super.transferFrom(from, to, amount);
    }

    function balanceOf(address holder) public view override returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance);

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function balanceOfTotal(address holder) public view returns (uint256 balance) {
        balance = super.balanceOf(holder);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused whenNotFrozen(from) override {
        super._beforeTokenTransfer(from, to, amount);
    }
}

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":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"from","type":"address"}],"name":"autoUnlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOfTotal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","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":"holder","type":"address"}],"name":"freezeAccount","outputs":[],"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":"holder","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601081526020017f4c7578757279426f6f6d537175617265000000000000000000000000000000008152506040518060400160405280600381526020017f4c4253000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000420565b508060049080519060200190620000af92919062000420565b5050506000600560006101000a81548160ff0219169083151502179055506000620000df620001c460201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001be3362000193620001cc60201b60201c565b600a620001a1919062000659565b633b9aca00620001b2919062000796565b620001d560201b60201c565b62000901565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023f9062000551565b60405180910390fd5b6200025c600083836200033a60201b60201c565b8060026000828254620002709190620005a1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002c79190620005a1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032e919062000573565b60405180910390a35050565b6200034a6200040460201b60201c565b156200038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000384906200052f565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620003e657600080fd5b620003fe8484846200041b60201b620019fb1760201c565b50505050565b6000600560009054906101000a900460ff16905090565b505050565b8280546200042e906200080e565b90600052602060002090601f0160209004810192826200045257600085556200049e565b82601f106200046d57805160ff19168380011785556200049e565b828001600101855582156200049e579182015b828111156200049d57825182559160200191906001019062000480565b5b509050620004ad9190620004b1565b5090565b5b80821115620004cc576000816000905550600101620004b2565b5090565b6000620004df60108362000590565b9150620004ec82620008af565b602082019050919050565b600062000506601f8362000590565b91506200051382620008d8565b602082019050919050565b6200052981620007f7565b82525050565b600060208201905081810360008301526200054a81620004d0565b9050919050565b600060208201905081810360008301526200056c81620004f7565b9050919050565b60006020820190506200058a60008301846200051e565b92915050565b600082825260208201905092915050565b6000620005ae82620007f7565b9150620005bb83620007f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f357620005f262000844565b5b828201905092915050565b6000808291508390505b6001851115620006505780860481111562000628576200062762000844565b5b6001851615620006385780820291505b80810290506200064885620008a2565b945062000608565b94509492505050565b60006200066682620007f7565b9150620006738362000801565b9250620006a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006aa565b905092915050565b600082620006bc57600190506200078f565b81620006cc57600090506200078f565b8160018114620006e55760028114620006f05762000726565b60019150506200078f565b60ff84111562000705576200070462000844565b5b8360020a9150848211156200071f576200071e62000844565b5b506200078f565b5060208310610133831016604e8410600b8410161715620007605782820a9050838111156200075a576200075962000844565b5b6200078f565b6200076f8484846001620005fe565b9250905081840481111562000789576200078862000844565b5b81810290505b9392505050565b6000620007a382620007f7565b9150620007b083620007f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007ec57620007eb62000844565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200082757607f821691505b602082108114156200083e576200083d62000873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61399280620009116000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612f5b565b60405180910390f35b61021760048036038101906102129190612b86565b6106d1565b6040516102249190612f40565b60405180910390f35b6102356106ef565b60405161024291906131bd565b60405180910390f35b61026560048036038101906102609190612b37565b6106f9565b6040516102729190612f40565b60405180910390f35b61028361083a565b6040516102909190613201565b60405180910390f35b6102b360048036038101906102ae9190612b86565b610843565b6040516102c09190612f40565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612c11565b610975565b005b6102f7610989565b6040516103049190612f40565b60405180910390f35b61032760048036038101906103229190612ad2565b6109a0565b60405161033491906131bd565b60405180910390f35b610345610a40565b005b610361600480360381019061035c9190612ad2565b610b7d565b005b61037d60048036038101906103789190612b86565b610c06565b005b61039960048036038101906103949190612b86565b610c81565b6040516103a69190612f40565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612f25565b60405180910390f35b6103df610e48565b6040516103ec9190612f5b565b60405180910390f35b61040f600480360381019061040a9190612b86565b610eda565b60405161041c9190612f40565b60405180910390f35b61043f600480360381019061043a9190612b86565b610fc5565b60405161044c9190612f40565b60405180910390f35b61046f600480360381019061046a9190612b86565b611104565b60405161047d9291906131d8565b60405180910390f35b6104a0600480360381019061049b9190612ad2565b6111c5565b6040516104ad9190612f40565b60405180910390f35b6104d060048036038101906104cb9190612ad2565b61134d565b6040516104dd91906131bd565b60405180910390f35b61050060048036038101906104fb9190612ad2565b61135f565b60405161050e9291906131d8565b60405180910390f35b610531600480360381019061052c9190612afb565b6113ee565b60405161053e91906131bd565b60405180910390f35b610561600480360381019061055c9190612bc2565b611475565b60405161056e9190612f40565b60405180910390f35b610591600480360381019061058c9190612ad2565b61154f565b60405161059e9190612f40565b60405180910390f35b6105c160048036038101906105bc9190612bc2565b61165a565b6040516105ce9190612f40565b60405180910390f35b6105f160048036038101906105ec9190612ad2565b611770565b6040516105fe9190612f40565b60405180910390f35b610621600480360381019061061c9190612ad2565b6117c6565b005b61063d60048036038101906106389190612ad2565b61184f565b005b60606003805461064e90613374565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90613374565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de611a00565b8484611a08565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115610758576107568361154f565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a39190613238565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612fbd565b60405180910390fd5b61082e878787611bd3565b93505050509392505050565b60006012905090565b60006108e5610850611a00565b84846001600061085e611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e09190613238565b611a08565b6001905092915050565b6108f7611a00565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906130fd565b60405180910390fd5b610973611ccb565b565b610986610980611a00565b82611d6d565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611f38565b9050600080806109bb8661135f565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a049190613238565b95505b50508080610a14906133a6565b9150506109d8565b505b828285610a2b919061328e565b610a359190613238565b945050505050919050565b610a48611a00565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab3906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b85611a00565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf0906130fd565b60405180910390fd5b610c0281611f80565b5050565b6000610c1983610c14611a00565b6113ee565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061311d565b60405180910390fd5b610c7283610c6a611a00565b848403611a08565b610c7c8383611d6d565b505050565b6000610c8b611a00565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf6906130fd565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a9061305d565b60405180910390fd5b610d8d8383612038565b506001905092915050565b610da0611a00565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b906130fd565b60405180910390fd5b610e1c6123be565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5790613374565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8390613374565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee9611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d9061319d565b60405180910390fd5b610fba610fb1611a00565b85858403611a08565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115611024576110228361154f565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f9190613238565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612fbd565b60405180910390fd5b6110f98686612461565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611180577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111cf611a00565b73ffffffffffffffffffffffffffffffffffffffff166111ed610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a906130fd565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061305d565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b60008111156113435761132f8360018361132a919061328e565b612038565b50808061133b9061334a565b915050611310565b5060019050919050565b600061135882611f38565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061147f611a00565b73ffffffffffffffffffffffffffffffffffffffff1661149d610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561152d57600080fd5b61153833858561247f565b6115438484846126f5565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116505742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611619577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160000154101561163d5761163b8382612038565b505b8080611648906133a6565b915050611557565b5060019050919050565b6000611664611a00565b73ffffffffffffffffffffffffffffffffffffffff16611682610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906130fd565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906130bd565b60405180910390fd5b6117648484846126f5565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ce611a00565b73ffffffffffffffffffffffffffffffffffffffff166117ec610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611839906130fd565b60405180910390fd5b61184b8161293e565b5050565b611857611a00565b73ffffffffffffffffffffffffffffffffffffffff16611875610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c2906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061301d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf9061303d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc691906131bd565b60405180910390a3505050565b6000611be084848461247f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611c2b611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca2906130dd565b60405180910390fd5b611cbf85611cb7611a00565b858403611a08565b60019150509392505050565b611cd3610989565b611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990612f9d565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d56611a00565b604051611d639190612f25565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd49061313d565b60405180910390fd5b611de9826000836129f7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690612fdd565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611ec6919061328e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2b91906131bd565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f8b82611770565b611f9457600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612111919061328e565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161219e91906131bd565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612234919061328e565b8154811061226b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106122f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061238a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6123c6610989565b15612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd9061309d565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861244a611a00565b6040516124579190612f25565b60405180910390a1565b600061247561246e611a00565b848461247f565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e69061315d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690612f7d565b60405180910390fd5b61256a8383836129f7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e79061307d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126839190613238565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e791906131bd565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836127429190613238565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990612ffd565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280d9190613238565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161292b9291906131d8565b60405180910390a2600190509392505050565b600061294982611770565b1561295357600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6129ff610989565b15612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a369061309d565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a9757600080fd5b612aa28484846119fb565b50505050565b600081359050612ab78161392e565b92915050565b600081359050612acc81613945565b92915050565b600060208284031215612ae457600080fd5b6000612af284828501612aa8565b91505092915050565b60008060408385031215612b0e57600080fd5b6000612b1c85828601612aa8565b9250506020612b2d85828601612aa8565b9150509250929050565b600080600060608486031215612b4c57600080fd5b6000612b5a86828701612aa8565b9350506020612b6b86828701612aa8565b9250506040612b7c86828701612abd565b9150509250925092565b60008060408385031215612b9957600080fd5b6000612ba785828601612aa8565b9250506020612bb885828601612abd565b9150509250929050565b600080600060608486031215612bd757600080fd5b6000612be586828701612aa8565b9350506020612bf686828701612abd565b9250506040612c0786828701612abd565b9150509250925092565b600060208284031215612c2357600080fd5b6000612c3184828501612abd565b91505092915050565b612c43816132c2565b82525050565b612c52816132d4565b82525050565b6000612c638261321c565b612c6d8185613227565b9350612c7d818560208601613317565b612c868161344d565b840191505092915050565b6000612c9e602383613227565b9150612ca98261345e565b604082019050919050565b6000612cc1601483613227565b9150612ccc826134ad565b602082019050919050565b6000612ce4601a83613227565b9150612cef826134d6565b602082019050919050565b6000612d07602283613227565b9150612d12826134ff565b604082019050919050565b6000612d2a603283613227565b9150612d358261354e565b604082019050919050565b6000612d4d602683613227565b9150612d588261359d565b604082019050919050565b6000612d70602283613227565b9150612d7b826135ec565b604082019050919050565b6000612d93601783613227565b9150612d9e8261363b565b602082019050919050565b6000612db6602683613227565b9150612dc182613664565b604082019050919050565b6000612dd9601083613227565b9150612de4826136b3565b602082019050919050565b6000612dfc602683613227565b9150612e07826136dc565b604082019050919050565b6000612e1f602883613227565b9150612e2a8261372b565b604082019050919050565b6000612e42602083613227565b9150612e4d8261377a565b602082019050919050565b6000612e65602483613227565b9150612e70826137a3565b604082019050919050565b6000612e88602183613227565b9150612e93826137f2565b604082019050919050565b6000612eab602583613227565b9150612eb682613841565b604082019050919050565b6000612ece602483613227565b9150612ed982613890565b604082019050919050565b6000612ef1602583613227565b9150612efc826138df565b604082019050919050565b612f1081613300565b82525050565b612f1f8161330a565b82525050565b6000602082019050612f3a6000830184612c3a565b92915050565b6000602082019050612f556000830184612c49565b92915050565b60006020820190508181036000830152612f758184612c58565b905092915050565b60006020820190508181036000830152612f9681612c91565b9050919050565b60006020820190508181036000830152612fb681612cb4565b9050919050565b60006020820190508181036000830152612fd681612cd7565b9050919050565b60006020820190508181036000830152612ff681612cfa565b9050919050565b6000602082019050818103600083015261301681612d1d565b9050919050565b6000602082019050818103600083015261303681612d40565b9050919050565b6000602082019050818103600083015261305681612d63565b9050919050565b6000602082019050818103600083015261307681612d86565b9050919050565b6000602082019050818103600083015261309681612da9565b9050919050565b600060208201905081810360008301526130b681612dcc565b9050919050565b600060208201905081810360008301526130d681612def565b9050919050565b600060208201905081810360008301526130f681612e12565b9050919050565b6000602082019050818103600083015261311681612e35565b9050919050565b6000602082019050818103600083015261313681612e58565b9050919050565b6000602082019050818103600083015261315681612e7b565b9050919050565b6000602082019050818103600083015261317681612e9e565b9050919050565b6000602082019050818103600083015261319681612ec1565b9050919050565b600060208201905081810360008301526131b681612ee4565b9050919050565b60006020820190506131d26000830184612f07565b92915050565b60006040820190506131ed6000830185612f07565b6131fa6020830184612f07565b9392505050565b60006020820190506132166000830184612f16565b92915050565b600081519050919050565b600082825260208201905092915050565b600061324382613300565b915061324e83613300565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613283576132826133ef565b5b828201905092915050565b600061329982613300565b91506132a483613300565b9250828210156132b7576132b66133ef565b5b828203905092915050565b60006132cd826132e0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561333557808201518184015260208101905061331a565b83811115613344576000848401525b50505050565b600061335582613300565b91506000821415613369576133686133ef565b5b600182039050919050565b6000600282049050600182168061338c57607f821691505b602082108114156133a05761339f61341e565b5b50919050565b60006133b182613300565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133e4576133e36133ef565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b613937816132c2565b811461394257600080fd5b50565b61394e81613300565b811461395957600080fd5b5056fea2646970667358221220d190f29c9fe6b66367e6ed04d2aac05c7f58478c2cb7dfed604622190fcb867564736f6c63430008020033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612f5b565b60405180910390f35b61021760048036038101906102129190612b86565b6106d1565b6040516102249190612f40565b60405180910390f35b6102356106ef565b60405161024291906131bd565b60405180910390f35b61026560048036038101906102609190612b37565b6106f9565b6040516102729190612f40565b60405180910390f35b61028361083a565b6040516102909190613201565b60405180910390f35b6102b360048036038101906102ae9190612b86565b610843565b6040516102c09190612f40565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612c11565b610975565b005b6102f7610989565b6040516103049190612f40565b60405180910390f35b61032760048036038101906103229190612ad2565b6109a0565b60405161033491906131bd565b60405180910390f35b610345610a40565b005b610361600480360381019061035c9190612ad2565b610b7d565b005b61037d60048036038101906103789190612b86565b610c06565b005b61039960048036038101906103949190612b86565b610c81565b6040516103a69190612f40565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612f25565b60405180910390f35b6103df610e48565b6040516103ec9190612f5b565b60405180910390f35b61040f600480360381019061040a9190612b86565b610eda565b60405161041c9190612f40565b60405180910390f35b61043f600480360381019061043a9190612b86565b610fc5565b60405161044c9190612f40565b60405180910390f35b61046f600480360381019061046a9190612b86565b611104565b60405161047d9291906131d8565b60405180910390f35b6104a0600480360381019061049b9190612ad2565b6111c5565b6040516104ad9190612f40565b60405180910390f35b6104d060048036038101906104cb9190612ad2565b61134d565b6040516104dd91906131bd565b60405180910390f35b61050060048036038101906104fb9190612ad2565b61135f565b60405161050e9291906131d8565b60405180910390f35b610531600480360381019061052c9190612afb565b6113ee565b60405161053e91906131bd565b60405180910390f35b610561600480360381019061055c9190612bc2565b611475565b60405161056e9190612f40565b60405180910390f35b610591600480360381019061058c9190612ad2565b61154f565b60405161059e9190612f40565b60405180910390f35b6105c160048036038101906105bc9190612bc2565b61165a565b6040516105ce9190612f40565b60405180910390f35b6105f160048036038101906105ec9190612ad2565b611770565b6040516105fe9190612f40565b60405180910390f35b610621600480360381019061061c9190612ad2565b6117c6565b005b61063d60048036038101906106389190612ad2565b61184f565b005b60606003805461064e90613374565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90613374565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de611a00565b8484611a08565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115610758576107568361154f565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a39190613238565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612fbd565b60405180910390fd5b61082e878787611bd3565b93505050509392505050565b60006012905090565b60006108e5610850611a00565b84846001600061085e611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e09190613238565b611a08565b6001905092915050565b6108f7611a00565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906130fd565b60405180910390fd5b610973611ccb565b565b610986610980611a00565b82611d6d565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611f38565b9050600080806109bb8661135f565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a049190613238565b95505b50508080610a14906133a6565b9150506109d8565b505b828285610a2b919061328e565b610a359190613238565b945050505050919050565b610a48611a00565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab3906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b85611a00565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf0906130fd565b60405180910390fd5b610c0281611f80565b5050565b6000610c1983610c14611a00565b6113ee565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061311d565b60405180910390fd5b610c7283610c6a611a00565b848403611a08565b610c7c8383611d6d565b505050565b6000610c8b611a00565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf6906130fd565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a9061305d565b60405180910390fd5b610d8d8383612038565b506001905092915050565b610da0611a00565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b906130fd565b60405180910390fd5b610e1c6123be565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5790613374565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8390613374565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee9611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d9061319d565b60405180910390fd5b610fba610fb1611a00565b85858403611a08565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506000811115611024576110228361154f565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f9190613238565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612fbd565b60405180910390fd5b6110f98686612461565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611180577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111cf611a00565b73ffffffffffffffffffffffffffffffffffffffff166111ed610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a906130fd565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061305d565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b60008111156113435761132f8360018361132a919061328e565b612038565b50808061133b9061334a565b915050611310565b5060019050919050565b600061135882611f38565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061147f611a00565b73ffffffffffffffffffffffffffffffffffffffff1661149d610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ea906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561152d57600080fd5b61153833858561247f565b6115438484846126f5565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116505742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611619577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160000154101561163d5761163b8382612038565b505b8080611648906133a6565b915050611557565b5060019050919050565b6000611664611a00565b73ffffffffffffffffffffffffffffffffffffffff16611682610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906130fd565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611750906130bd565b60405180910390fd5b6117648484846126f5565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ce611a00565b73ffffffffffffffffffffffffffffffffffffffff166117ec610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614611842576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611839906130fd565b60405180910390fd5b61184b8161293e565b5050565b611857611a00565b73ffffffffffffffffffffffffffffffffffffffff16611875610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c2906130fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561193b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119329061301d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061317d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf9061303d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc691906131bd565b60405180910390a3505050565b6000611be084848461247f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611c2b611a00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca2906130dd565b60405180910390fd5b611cbf85611cb7611a00565b858403611a08565b60019150509392505050565b611cd3610989565b611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990612f9d565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d56611a00565b604051611d639190612f25565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd49061313d565b60405180910390fd5b611de9826000836129f7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690612fdd565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611ec6919061328e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2b91906131bd565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f8b82611770565b611f9457600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612111919061328e565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161219e91906131bd565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050612234919061328e565b8154811061226b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106122f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548061238a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6123c6610989565b15612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd9061309d565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861244a611a00565b6040516124579190612f25565b60405180910390a1565b600061247561246e611a00565b848461247f565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e69061315d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690612f7d565b60405180910390fd5b61256a8383836129f7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e79061307d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126839190613238565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126e791906131bd565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836127429190613238565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b990612ffd565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280d9190613238565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161292b9291906131d8565b60405180910390a2600190509392505050565b600061294982611770565b1561295357600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6129ff610989565b15612a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a369061309d565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a9757600080fd5b612aa28484846119fb565b50505050565b600081359050612ab78161392e565b92915050565b600081359050612acc81613945565b92915050565b600060208284031215612ae457600080fd5b6000612af284828501612aa8565b91505092915050565b60008060408385031215612b0e57600080fd5b6000612b1c85828601612aa8565b9250506020612b2d85828601612aa8565b9150509250929050565b600080600060608486031215612b4c57600080fd5b6000612b5a86828701612aa8565b9350506020612b6b86828701612aa8565b9250506040612b7c86828701612abd565b9150509250925092565b60008060408385031215612b9957600080fd5b6000612ba785828601612aa8565b9250506020612bb885828601612abd565b9150509250929050565b600080600060608486031215612bd757600080fd5b6000612be586828701612aa8565b9350506020612bf686828701612abd565b9250506040612c0786828701612abd565b9150509250925092565b600060208284031215612c2357600080fd5b6000612c3184828501612abd565b91505092915050565b612c43816132c2565b82525050565b612c52816132d4565b82525050565b6000612c638261321c565b612c6d8185613227565b9350612c7d818560208601613317565b612c868161344d565b840191505092915050565b6000612c9e602383613227565b9150612ca98261345e565b604082019050919050565b6000612cc1601483613227565b9150612ccc826134ad565b602082019050919050565b6000612ce4601a83613227565b9150612cef826134d6565b602082019050919050565b6000612d07602283613227565b9150612d12826134ff565b604082019050919050565b6000612d2a603283613227565b9150612d358261354e565b604082019050919050565b6000612d4d602683613227565b9150612d588261359d565b604082019050919050565b6000612d70602283613227565b9150612d7b826135ec565b604082019050919050565b6000612d93601783613227565b9150612d9e8261363b565b602082019050919050565b6000612db6602683613227565b9150612dc182613664565b604082019050919050565b6000612dd9601083613227565b9150612de4826136b3565b602082019050919050565b6000612dfc602683613227565b9150612e07826136dc565b604082019050919050565b6000612e1f602883613227565b9150612e2a8261372b565b604082019050919050565b6000612e42602083613227565b9150612e4d8261377a565b602082019050919050565b6000612e65602483613227565b9150612e70826137a3565b604082019050919050565b6000612e88602183613227565b9150612e93826137f2565b604082019050919050565b6000612eab602583613227565b9150612eb682613841565b604082019050919050565b6000612ece602483613227565b9150612ed982613890565b604082019050919050565b6000612ef1602583613227565b9150612efc826138df565b604082019050919050565b612f1081613300565b82525050565b612f1f8161330a565b82525050565b6000602082019050612f3a6000830184612c3a565b92915050565b6000602082019050612f556000830184612c49565b92915050565b60006020820190508181036000830152612f758184612c58565b905092915050565b60006020820190508181036000830152612f9681612c91565b9050919050565b60006020820190508181036000830152612fb681612cb4565b9050919050565b60006020820190508181036000830152612fd681612cd7565b9050919050565b60006020820190508181036000830152612ff681612cfa565b9050919050565b6000602082019050818103600083015261301681612d1d565b9050919050565b6000602082019050818103600083015261303681612d40565b9050919050565b6000602082019050818103600083015261305681612d63565b9050919050565b6000602082019050818103600083015261307681612d86565b9050919050565b6000602082019050818103600083015261309681612da9565b9050919050565b600060208201905081810360008301526130b681612dcc565b9050919050565b600060208201905081810360008301526130d681612def565b9050919050565b600060208201905081810360008301526130f681612e12565b9050919050565b6000602082019050818103600083015261311681612e35565b9050919050565b6000602082019050818103600083015261313681612e58565b9050919050565b6000602082019050818103600083015261315681612e7b565b9050919050565b6000602082019050818103600083015261317681612e9e565b9050919050565b6000602082019050818103600083015261319681612ec1565b9050919050565b600060208201905081810360008301526131b681612ee4565b9050919050565b60006020820190506131d26000830184612f07565b92915050565b60006040820190506131ed6000830185612f07565b6131fa6020830184612f07565b9392505050565b60006020820190506132166000830184612f16565b92915050565b600081519050919050565b600082825260208201905092915050565b600061324382613300565b915061324e83613300565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613283576132826133ef565b5b828201905092915050565b600061329982613300565b91506132a483613300565b9250828210156132b7576132b66133ef565b5b828203905092915050565b60006132cd826132e0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561333557808201518184015260208101905061331a565b83811115613344576000848401525b50505050565b600061335582613300565b91506000821415613369576133686133ef565b5b600182039050919050565b6000600282049050600182168061338c57607f821691505b602082108114156133a05761339f61341e565b5b50919050565b60006133b182613300565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133e4576133e36133ef565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b613937816132c2565b811461394257600080fd5b50565b61394e81613300565b811461395957600080fd5b5056fea2646970667358221220d190f29c9fe6b66367e6ed04d2aac05c7f58478c2cb7dfed604622190fcb867564736f6c63430008020033

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.