ETH Price: $3,463.78 (+0.36%)

Token

ASEC (ASEC)
 

Overview

Max Total Supply

3,000,000,000 ASEC

Holders

2

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
20 ASEC

Value
$0.00
0xf7c8b97a2f8e6df7e0126e6fa953e257b7de9dc2
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:
ASECToken

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-10-11
*/

pragma solidity 0.5.10;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error.
 */
library SafeMath {

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {

    address internal _owner;

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

    constructor(address initialOwner) internal {
        _owner = initialOwner;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "Caller has no permission");
        _;
    }

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

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

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

}

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract MinterRole is Ownable {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor() internal {
        _minters.add(_owner);
        emit MinterAdded(_owner);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "Caller has no permission");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return(_minters.has(account) || isOwner(account));
    }

    function addMinter(address account) public onlyOwner {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function removeMinter(address account) public onlyOwner {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * See https://eips.ethereum.org/EIPS/eip-20
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

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

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

    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

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

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0));
        require(owner != address(0));

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0));

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

    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowed[account][msg.sender].sub(amount));
    }

}

/**
 * @dev BurnableToken
 */
contract BurnableToken is ERC20 {

    function burn(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    function burnFrom(address account, uint256 amount) public {
        _burnFrom(account, amount);
    }

}

/**
 * @dev MintableToken
 */
contract MintableToken is BurnableToken, MinterRole {

    bool public mintingFinished;

    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    function mint(address account, uint256 amount) public onlyMinter canMint returns (bool) {
        _mint(account, amount);
        return true;
    }

    function finishMinting() external onlyOwner canMint {
        mintingFinished = true;
    }

}

/**
 * @title LockableToken
 */
contract LockableToken is MintableToken {

    mapping (address => uint256) private _locked;

    event Locked(address indexed account, uint256 amount, address indexed by);
    event Unlocked(address indexed account, uint256 amount, address indexed by);

    /**
     * @dev prevent any transfer of locked tokens.
     */
    modifier canTransfer(address from, uint256 value) {
        if (_locked[from] > 0) {
            require(balanceOf(from).sub(value) >= _locked[from]);
        }
        _;
    }

    /**
     * @dev lock tokens of array of addresses.
     * Available only to the owner.
     * @param accounts array of addresses.
     * @param amounts array of amounts of tokens.
     */
    function lock(address[] calldata accounts, uint256[] calldata amounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            require(balanceOf(accounts[i]) >= amounts[i]);
            _locked[accounts[i]] = _locked[accounts[i]].add(amounts[i]);
            emit Locked(accounts[i], amounts[i], msg.sender);
        }
    }

    /**
     * @dev unlock tokens of array of addresses.
     * Available only to the owner.
     * @param accounts array of addresses.
     * @param amounts array of amounts of tokens.
     */
    function unlock(address[] calldata accounts, uint256[] calldata amounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _locked[accounts[i]] = _locked[accounts[i]].sub(amounts[i]);
            emit Unlocked(accounts[i], amounts[i], msg.sender);
        }
    }

    /**
     * @dev amount of locked tokens of specific address.
     * @param account holder address.
     * @return amount of locked tokens.
     */
    function lockedOf(address account) external view returns(uint256) {
        return _locked[account];
    }

    /**
     * @dev modified internal transfer function that prevents any transfer of locked tokens.
     * @param from address The address which you want to send tokens from.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function _transfer(address from, address to, uint256 value) internal canTransfer(from, value) {
        super._transfer(from, to, value);
    }

}

/**
 * @title ApproveAndCall Interface.
 * @dev ApproveAndCall system allows to communicate with smart-contracts.
 */
interface ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 amount, address token, bytes calldata extraData) external;
}

/**
 * @title The ASECToken project contract.
 * @author https://grox.solutions
 */
contract ASECToken is LockableToken {

    // name of the token
    string private _name = "ASEC";
    // symbol of the token
    string private _symbol = "ASEC";
    // decimals of the token
    uint8 private _decimals = 8;

    // initial supply
    uint256 internal constant INITIAL_SUPPLY = 3000000000 * (10 ** 8);

    // registered contracts (to prevent loss of token via transfer function)
    mapping (address => bool) private _contracts;

    /**
     * @dev constructor function that is called once at deployment of the contract.
     * @param recipient Address to receive initial supply.
     */
    constructor(address recipient, address initialOwner) public Ownable(initialOwner) {

        _mint(recipient, INITIAL_SUPPLY);

    }

    /**
     * @dev Allows to send tokens (via Approve and TransferFrom) to other smart contract.
     * @param spender Address of smart contracts to work with.
     * @param amount Amount of tokens to send.
     * @param extraData Any extra data.
     */
    function approveAndCall(address spender, uint256 amount, bytes memory extraData) public returns (bool) {
        require(approve(spender, amount));

        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, amount, address(this), extraData);

        return true;
    }

    /**
     * @dev Allows to register other smart contracts (to prevent loss of tokens via transfer function).
     * @param addr Address of smart contracts to work with.
     */
    function registerContract(address addr) public onlyOwner {
        require(isContract(addr));
        _contracts[addr] = true;
    }

    /**
     * @dev Allows to unregister registered smart contracts.
     * @param addr Address of smart contracts to work with.
     */
    function unregisterContract(address addr) external onlyOwner {
        _contracts[addr] = false;
    }

    /**
     * @dev modified transfer function that allows to safely send tokens to smart contract.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(address to, uint256 value) public returns (bool) {

        if (_contracts[to]) {
            approveAndCall(to, value, new bytes(0));
        } else {
            super.transfer(to, value);
        }

        return true;

    }

    /**
     * @dev modified transferFrom function that allows to safely send tokens to exchange contract.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {

        if (_contracts[to] && !_contracts[msg.sender]) {
            ApproveAndCallFallBack(to).receiveApproval(msg.sender, value, address(this), new bytes(0));
        } else {
            super.transferFrom(from, to, value);
        }

        return true;
    }

    /**
     * @dev Allows to any owner of the contract withdraw needed ERC20 token from this contract (promo or bounties for example).
     * @param ERC20Token Address of ERC20 token.
     * @param recipient Account to receive tokens.
     */
    function withdrawERC20(address ERC20Token, address recipient) external onlyOwner {

        uint256 amount = IERC20(ERC20Token).balanceOf(address(this));
        IERC20(ERC20Token).transfer(recipient, amount);

    }

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @return true if the address is a сontract
     */
    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"registerContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"accounts","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ERC20Token","type":"address"},{"name":"recipient","type":"address"}],"name":"withdrawERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"lockedOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"accounts","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"unregisterContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"recipient","type":"address"},{"name":"initialOwner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"by","type":"address"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"by","type":"address"}],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526040518060400160405280600481526020017f41534543000000000000000000000000000000000000000000000000000000008152506007908051906020019062000051929190620005d3565b506040518060400160405280600481526020017f4153454300000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f929190620005d3565b506008600960006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b506040516200366b3803806200366b83398181016040526040811015620000ef57600080fd5b8101908080519060200190929190805190602001909291905050508080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000207600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660046200028e60201b62002ac21790919060201c565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a26200028682670429d069189e00006200037260201b60201c565b505062000682565b620002a08282620004d360201b60201c565b1562000314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003ad57600080fd5b620003c981600254620005b360201b620027581790919060201c565b60028190555062000427816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005b360201b620027581790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200055c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620036496022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080828401905083811015620005c957600080fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200061657805160ff191683800117855562000647565b8280016001018555821562000647579182015b828111156200064657825182559160200191906001019062000629565b5b5090506200065691906200065a565b5090565b6200067f91905b808211156200067b57600081600090555060010162000661565b5090565b90565b612fb780620006926000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806379cc679011610104578063a5f1e282116100a2578063dd62ed3e11610071578063dd62ed3e14610b0a578063e50d703a14610b82578063f2fde38b14610c50578063fac2c62114610c94576101da565b8063a5f1e282146108f3578063a9059cbb1461094b578063aa271e1a146109b1578063cae9ca5114610a0d576101da565b80639456fbcc116100de5780639456fbcc1461076257806395d89b41146107c6578063983b2d5614610849578063a457c2d71461088d576101da565b806379cc6790146106c05780637d64bcb41461070e5780638da5cb5b14610718576101da565b80633092afd51161017c57806342966c681161014b57806342966c68146105625780635c3c71f41461059057806370a082311461065e578063715018a6146106b6576101da565b80633092afd51461042e578063313ce56714610472578063395093511461049657806340c10f19146104fc576101da565b806318160ddd116101b857806318160ddd146102ea57806322a5dde41461030857806323b872dd1461034c5780632f54bf6e146103d2576101da565b806305d2035b146101df57806306fdde0314610201578063095ea7b314610284575b600080fd5b6101e7610cd8565b604051808215151515815260200191505060405180910390f35b610209610ceb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024957808201518184015260208101905061022e565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d06004803603604081101561029a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8d565b604051808215151515815260200191505060405180910390f35b6102f2610da4565b6040518082815260200191505060405180910390f35b61034a6004803603602081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dae565b005b6103b86004803603606081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e96565b604051808215151515815260200191505060405180910390f35b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d1565b604051808215151515815260200191505060405180910390f35b6104706004803603602081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112b565b005b61047a611200565b604051808260ff1660ff16815260200191505060405180910390f35b6104e2600480360360408110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611217565b604051808215151515815260200191505060405180910390f35b6105486004803603604081101561051257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112bc565b604051808215151515815260200191505060405180910390f35b61058e6004803603602081101561057857600080fd5b8101908080359060200190929190505050611367565b005b61065c600480360360408110156105a657600080fd5b81019080803590602001906401000000008111156105c357600080fd5b8201836020820111156105d557600080fd5b803590602001918460208302840111640100000000831117156105f757600080fd5b90919293919293908035906020019064010000000081111561061857600080fd5b82018360208201111561062a57600080fd5b8035906020019184602083028401116401000000008311171561064c57600080fd5b9091929391929390505050611374565b005b6106a06004803603602081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f9565b6040518082815260200191505060405180910390f35b6106be611641565b005b61070c600480360360408110156106d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061177d565b005b61071661178b565b005b61072061183d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107c46004803603604081101561077857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611867565b005b6107ce611a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561080e5780820151818401526020810190506107f3565b50505050905090810190601f16801561083b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b08565b005b6108d9600480360360408110156108a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bdd565b604051808215151515815260200191505060405180910390f35b6109356004803603602081101561090957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c82565b6040518082815260200191505060405180910390f35b6109976004803603604081101561096157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ccb565b604051808215151515815260200191505060405180910390f35b6109f3600480360360208110156109c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d7a565b604051808215151515815260200191505060405180910390f35b610af060048036036060811015610a2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a6a57600080fd5b820183602082011115610a7c57600080fd5b80359060200191846001830284011164010000000083111715610a9e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611da7565b604051808215151515815260200191505060405180910390f35b610b6c60048036036040811015610b2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f07565b6040518082815260200191505060405180910390f35b610c4e60048036036040811015610b9857600080fd5b8101908080359060200190640100000000811115610bb557600080fd5b820183602082011115610bc757600080fd5b80359060200191846020830284011164010000000083111715610be957600080fd5b909192939192939080359060200190640100000000811115610c0a57600080fd5b820183602082011115610c1c57600080fd5b80359060200191846020830284011164010000000083111715610c3e57600080fd5b9091929391929390505050611f8e565b005b610c9260048036036020811015610c6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121c4565b005b610cd660048036036020811015610caa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a2565b005b600560009054906101000a900460ff1681565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610d9a338484612478565b6001905092915050565b6000600254905090565b610db7336110d1565b610e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b610e32816125d7565b610e3b57600080fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610f3b5750600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110b9578273ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133843060006040519080825280601f01601f191660200182016040528015610f935781602001600182028038833980820191505090505b506040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b505050506110c6565b6110c48484846125ea565b505b600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611134336110d1565b6111a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6111ba81600461269b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000600960009054906101000a900460ff16905090565b60006112b233846112ad85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b612478565b6001905092915050565b60006112c733611d7a565b611339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff161561135357600080fd5b61135d8383612777565b6001905092915050565b61137133826128c9565b50565b61137d336110d1565b6113ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156115f25782828281811061140c57fe5b9050602002013561144486868481811061142257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166115f9565b101561144f57600080fd5b6114db83838381811061145e57fe5b905060200201356006600088888681811061147557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b600660008787858181106114eb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1685858381811061156957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6556f2e938a411129eba507e7d304a1f4b451f10196f319f58567ab10dccf5598585858181106115c957fe5b905060200201356040518082815260200191505060405180910390a380806001019150506113f5565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61164a336110d1565b6116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117878282612a1b565b5050565b611794336110d1565b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff161561182057600080fd5b6001600560006101000a81548160ff021916908315150217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611870336110d1565b6118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561196157600080fd5b505afa158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505050506040513d6020811015611a4f57600080fd5b810190808051906020019092919050505050505050565b606060088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afe5780601f10611ad357610100808354040283529160200191611afe565b820191906000526020600020905b815481529060010190602001808311611ae157829003601f168201915b5050505050905090565b611b11336110d1565b611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b611b97816004612ac290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6000611c783384611c7385600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b6001905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d6457611d5e838360006040519080825280601f01601f191660200182016040528015611d585781602001600182028038833980820191505090505b50611da7565b50611d70565b611d6e8383612bbd565b505b6001905092915050565b6000611d90826004612bd490919063ffffffff16565b80611da05750611d9f826110d1565b5b9050919050565b6000611db38484610d8d565b611dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e95578082015181840152602081019050611e7a565b50505050905090810190601f168015611ec25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f97336110d1565b612009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156121bd576120a683838381811061202957fe5b905060200201356006600088888681811061204057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b600660008787858181106120b657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1685858381811061213457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f52defa8cf76204ed29cc9d30d4c7bde6dfafa1a084f43a0f8443d225ad1bbc3085858581811061219457fe5b905060200201356040518082815260200191505060405180910390a3808060010191505061200f565b5050505050565b6121cd336110d1565b61223f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123ab336110d1565b61241d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124b257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124ec57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080823b905060008111915050919050565b60006125f7848484612cb2565b612690843361268b85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b600190509392505050565b6126a58282612bd4565b6126fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f406021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101561276d57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b157600080fd5b6127c68160025461275890919063ffffffff16565b60028190555061281d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561290357600080fd5b612954816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ab81600254612b9d90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b612a2582826128c9565b612abe8233612ab984600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b5050565b612acc8282612bd4565b15612b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600082821115612bac57600080fd5b600082840390508091505092915050565b6000612bca338484612cb2565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f616022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b82816000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612d6357600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5782612d49856115f9565b612b9d90919063ffffffff16565b1015612d6257600080fd5b5b612d6e858585612d75565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612daf57600080fd5b612e00816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e93816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7230582045bc05f3a7de4574c04d441c318bcbac0f36419040c05ef69f705751c1a3ada964736f6c634300050a0032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373000000000000000000000000a4ecdc877c41f2cde862ef394b06bb0ad228032400000000000000000000000005aaa0f40154c424dd12f78a1b0cb62041831a44

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806379cc679011610104578063a5f1e282116100a2578063dd62ed3e11610071578063dd62ed3e14610b0a578063e50d703a14610b82578063f2fde38b14610c50578063fac2c62114610c94576101da565b8063a5f1e282146108f3578063a9059cbb1461094b578063aa271e1a146109b1578063cae9ca5114610a0d576101da565b80639456fbcc116100de5780639456fbcc1461076257806395d89b41146107c6578063983b2d5614610849578063a457c2d71461088d576101da565b806379cc6790146106c05780637d64bcb41461070e5780638da5cb5b14610718576101da565b80633092afd51161017c57806342966c681161014b57806342966c68146105625780635c3c71f41461059057806370a082311461065e578063715018a6146106b6576101da565b80633092afd51461042e578063313ce56714610472578063395093511461049657806340c10f19146104fc576101da565b806318160ddd116101b857806318160ddd146102ea57806322a5dde41461030857806323b872dd1461034c5780632f54bf6e146103d2576101da565b806305d2035b146101df57806306fdde0314610201578063095ea7b314610284575b600080fd5b6101e7610cd8565b604051808215151515815260200191505060405180910390f35b610209610ceb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024957808201518184015260208101905061022e565b50505050905090810190601f1680156102765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d06004803603604081101561029a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8d565b604051808215151515815260200191505060405180910390f35b6102f2610da4565b6040518082815260200191505060405180910390f35b61034a6004803603602081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dae565b005b6103b86004803603606081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e96565b604051808215151515815260200191505060405180910390f35b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d1565b604051808215151515815260200191505060405180910390f35b6104706004803603602081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061112b565b005b61047a611200565b604051808260ff1660ff16815260200191505060405180910390f35b6104e2600480360360408110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611217565b604051808215151515815260200191505060405180910390f35b6105486004803603604081101561051257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112bc565b604051808215151515815260200191505060405180910390f35b61058e6004803603602081101561057857600080fd5b8101908080359060200190929190505050611367565b005b61065c600480360360408110156105a657600080fd5b81019080803590602001906401000000008111156105c357600080fd5b8201836020820111156105d557600080fd5b803590602001918460208302840111640100000000831117156105f757600080fd5b90919293919293908035906020019064010000000081111561061857600080fd5b82018360208201111561062a57600080fd5b8035906020019184602083028401116401000000008311171561064c57600080fd5b9091929391929390505050611374565b005b6106a06004803603602081101561067457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115f9565b6040518082815260200191505060405180910390f35b6106be611641565b005b61070c600480360360408110156106d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061177d565b005b61071661178b565b005b61072061183d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107c46004803603604081101561077857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611867565b005b6107ce611a66565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561080e5780820151818401526020810190506107f3565b50505050905090810190601f16801561083b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b08565b005b6108d9600480360360408110156108a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bdd565b604051808215151515815260200191505060405180910390f35b6109356004803603602081101561090957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c82565b6040518082815260200191505060405180910390f35b6109976004803603604081101561096157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ccb565b604051808215151515815260200191505060405180910390f35b6109f3600480360360208110156109c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d7a565b604051808215151515815260200191505060405180910390f35b610af060048036036060811015610a2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a6a57600080fd5b820183602082011115610a7c57600080fd5b80359060200191846001830284011164010000000083111715610a9e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611da7565b604051808215151515815260200191505060405180910390f35b610b6c60048036036040811015610b2057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f07565b6040518082815260200191505060405180910390f35b610c4e60048036036040811015610b9857600080fd5b8101908080359060200190640100000000811115610bb557600080fd5b820183602082011115610bc757600080fd5b80359060200191846020830284011164010000000083111715610be957600080fd5b909192939192939080359060200190640100000000811115610c0a57600080fd5b820183602082011115610c1c57600080fd5b80359060200191846020830284011164010000000083111715610c3e57600080fd5b9091929391929390505050611f8e565b005b610c9260048036036020811015610c6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121c4565b005b610cd660048036036020811015610caa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a2565b005b600560009054906101000a900460ff1681565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610d9a338484612478565b6001905092915050565b6000600254905090565b610db7336110d1565b610e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b610e32816125d7565b610e3b57600080fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610f3b5750600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110b9578273ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133843060006040519080825280601f01601f191660200182016040528015610f935781602001600182028038833980820191505090505b506040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561109c57600080fd5b505af11580156110b0573d6000803e3d6000fd5b505050506110c6565b6110c48484846125ea565b505b600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611134336110d1565b6111a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6111ba81600461269b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000600960009054906101000a900460ff16905090565b60006112b233846112ad85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b612478565b6001905092915050565b60006112c733611d7a565b611339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff161561135357600080fd5b61135d8383612777565b6001905092915050565b61137133826128c9565b50565b61137d336110d1565b6113ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156115f25782828281811061140c57fe5b9050602002013561144486868481811061142257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166115f9565b101561144f57600080fd5b6114db83838381811061145e57fe5b905060200201356006600088888681811061147557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b600660008787858181106114eb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1685858381811061156957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6556f2e938a411129eba507e7d304a1f4b451f10196f319f58567ab10dccf5598585858181106115c957fe5b905060200201356040518082815260200191505060405180910390a380806001019150506113f5565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61164a336110d1565b6116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117878282612a1b565b5050565b611794336110d1565b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff161561182057600080fd5b6001600560006101000a81548160ff021916908315150217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611870336110d1565b6118e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561196157600080fd5b505afa158015611975573d6000803e3d6000fd5b505050506040513d602081101561198b57600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611a2557600080fd5b505af1158015611a39573d6000803e3d6000fd5b505050506040513d6020811015611a4f57600080fd5b810190808051906020019092919050505050505050565b606060088054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afe5780601f10611ad357610100808354040283529160200191611afe565b820191906000526020600020905b815481529060010190602001808311611ae157829003601f168201915b5050505050905090565b611b11336110d1565b611b83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b611b97816004612ac290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6000611c783384611c7385600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b6001905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d6457611d5e838360006040519080825280601f01601f191660200182016040528015611d585781602001600182028038833980820191505090505b50611da7565b50611d70565b611d6e8383612bbd565b505b6001905092915050565b6000611d90826004612bd490919063ffffffff16565b80611da05750611d9f826110d1565b5b9050919050565b6000611db38484610d8d565b611dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e95578082015181840152602081019050611e7a565b50505050905090810190601f168015611ec25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f97336110d1565b612009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b60008090505b848490508110156121bd576120a683838381811061202957fe5b905060200201356006600088888681811061204057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b600660008787858181106120b657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1685858381811061213457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f52defa8cf76204ed29cc9d30d4c7bde6dfafa1a084f43a0f8443d225ad1bbc3085858581811061219457fe5b905060200201356040518082815260200191505060405180910390a3808060010191505061200f565b5050505050565b6121cd336110d1565b61223f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6577206f776e657220697320746865207a65726f206164647265737300000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123ab336110d1565b61241d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c657220686173206e6f207065726d697373696f6e000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124b257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124ec57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080823b905060008111915050919050565b60006125f7848484612cb2565b612690843361268b85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b600190509392505050565b6126a58282612bd4565b6126fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f406021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101561276d57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127b157600080fd5b6127c68160025461275890919063ffffffff16565b60028190555061281d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561290357600080fd5b612954816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ab81600254612b9d90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b612a2582826128c9565b612abe8233612ab984600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b612478565b5050565b612acc8282612bd4565b15612b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600082821115612bac57600080fd5b600082840390508091505092915050565b6000612bca338484612cb2565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f616022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b82816000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612d6357600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d5782612d49856115f9565b612b9d90919063ffffffff16565b1015612d6257600080fd5b5b612d6e858585612d75565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612daf57600080fd5b612e00816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b9d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e93816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350505056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a265627a7a7230582045bc05f3a7de4574c04d441c318bcbac0f36419040c05ef69f705751c1a3ada964736f6c634300050a0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a4ecdc877c41f2cde862ef394b06bb0ad228032400000000000000000000000005aaa0f40154c424dd12f78a1b0cb62041831a44

-----Decoded View---------------
Arg [0] : recipient (address): 0xA4ecDC877C41f2cDE862eF394b06Bb0ad2280324
Arg [1] : initialOwner (address): 0x05AaA0F40154c424DD12f78A1b0CB62041831A44

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a4ecdc877c41f2cde862ef394b06bb0ad2280324
Arg [1] : 00000000000000000000000005aaa0f40154c424dd12f78a1b0cb62041831a44


Deployed Bytecode Sourcemap

10479:4262:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10479:4262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7381:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14095:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14095:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4904:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4904:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4404:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11993:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11993:135:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13191:361;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13191:361:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1168:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1168:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3139:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3139:137:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14411:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5296:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5296:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7500:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7500:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7086:81;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7086:81:0;;;;;;;;;;;;;;;;;:::i;:::-;;8520:363;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8520:363:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8520:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8520:363:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8520:363:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8520:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8520:363:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8520:363:0;;;;;;;;;;;;:::i;:::-;;4503:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4503:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1280:140;;;:::i;:::-;;7175:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7175:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7659:93;;;:::i;:::-;;965:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13809:221;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13809:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14245:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14245:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3002:129:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5507:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5507:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9562:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9562:108:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12597:257;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12597:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2864:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2864:130:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11516:285;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11516:285:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11516:285:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11516:285:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11516:285:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11516:285:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4617:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4617:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9091:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9091:307:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9091:307:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9091:307:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9091:307:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9091:307:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9091:307:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9091:307:0;;;;;;;;;;;;:::i;:::-;;1428:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1428:227:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12277:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12277:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7381:27;;;;;;;;;;;;;:::o;14095:83::-;14132:13;14165:5;14158:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14095:83;:::o;4904:148::-;4969:4;4986:36;4995:10;5007:7;5016:5;4986:8;:36::i;:::-;5040:4;5033:11;;4904:148;;;;:::o;4404:91::-;4448:7;4475:12;;4468:19;;4404:91;:::o;11993:135::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:16;12080:4;12069:10;:16::i;:::-;12061:25;;;;;;12116:4;12097:10;:16;12108:4;12097:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11993:135;:::o;13191:361::-;13270:4;13293:10;:14;13304:2;13293:14;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;13312:10;:22;13323:10;13312:22;;;;;;;;;;;;;;;;;;;;;;;;;13311:23;13293:41;13289:232;;;13374:2;13351:42;;;13394:10;13406:5;13421:4;13438:1;13428:12;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;13428:12:0;;;;13351:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13351:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13351:90:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13351:90:0;;;;13289:232;;;13474:35;13493:4;13499:2;13503:5;13474:18;:35::i;:::-;;13289:232;13540:4;13533:11;;13191:361;;;;;:::o;1168:104::-;1223:4;1258:6;;;;;;;;;;;1247:17;;:7;:17;;;1240:24;;1168:104;;;:::o;3139:137::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3206:24;3222:7;3206:8;:15;;:24;;;;:::i;:::-;3260:7;3246:22;;;;;;;;;;;;3139:137;:::o;14411:83::-;14452:5;14477:9;;;;;;;;;;;14470:16;;14411:83;:::o;5296:203::-;5376:4;5393:76;5402:10;5414:7;5423:45;5457:10;5423:8;:20;5432:10;5423:20;;;;;;;;;;;;;;;:29;5444:7;5423:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;5393:8;:76::i;:::-;5487:4;5480:11;;5296:203;;;;:::o;7500:151::-;7582:4;2787:20;2796:10;2787:8;:20::i;:::-;2779:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7456:15;;;;;;;;;;;7455:16;7447:25;;;;;;7599:22;7605:7;7614:6;7599:5;:22::i;:::-;7639:4;7632:11;;7500:151;;;;:::o;7086:81::-;7134:25;7140:10;7152:6;7134:5;:25::i;:::-;7086:81;:::o;8520:363::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8626:9;8638:1;8626:13;;8621:255;8645:8;;:15;;8641:1;:19;8621:255;;;8716:7;;8724:1;8716:10;;;;;;;;;;;;;8690:22;8700:8;;8709:1;8700:11;;;;;;;;;;;;;;;8690:9;:22::i;:::-;:36;;8682:45;;;;;;8765:36;8790:7;;8798:1;8790:10;;;;;;;;;;;;;8765:7;:20;8773:8;;8782:1;8773:11;;;;;;;;;;;;;;;8765:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;8742:7;:20;8750:8;;8759:1;8750:11;;;;;;;;;;;;;;;8742:20;;;;;;;;;;;;;;;:59;;;;8853:10;8821:43;;8828:8;;8837:1;8828:11;;;;;;;;;;;;;;;8821:43;;;8841:7;;8849:1;8841:10;;;;;;;;;;;;;8821:43;;;;;;;;;;;;;;;;;;8662:3;;;;;;;8621:255;;;;8520:363;;;;:::o;4503:106::-;4558:7;4585:9;:16;4595:5;4585:16;;;;;;;;;;;;;;;;4578:23;;4503:106;;;:::o;1280:140::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1379:1;1342:40;;1363:6;;;;;;;;;;;1342:40;;;;;;;;;;;;1410:1;1393:6;;:19;;;;;;;;;;;;;;;;;;1280:140::o;7175:103::-;7244:26;7254:7;7263:6;7244:9;:26::i;:::-;7175:103;;:::o;7659:93::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7456:15;;;;;;;;;;;7455:16;7447:25;;;;;;7740:4;7722:15;;:22;;;;;;;;;;;;;;;;;;7659:93::o;965:79::-;1003:7;1030:6;;;;;;;;;;;1023:13;;965:79;:::o;13809:221::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13903:14;13927:10;13920:28;;;13957:4;13920:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13920:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13920:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13920:43:0;;;;;;;;;;;;;;;;13903:60;;13981:10;13974:27;;;14002:9;14013:6;13974:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13974:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13974:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13974:46:0;;;;;;;;;;;;;;;;;1151:1;13809:221;;:::o;14245:87::-;14284:13;14317:7;14310:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14245:87;:::o;3002:129::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:21;3079:7;3066:8;:12;;:21;;;;:::i;:::-;3115:7;3103:20;;;;;;;;;;;;3002:129;:::o;5507:213::-;5592:4;5609:81;5618:10;5630:7;5639:50;5673:15;5639:8;:20;5648:10;5639:20;;;;;;;;;;;;;;;:29;5660:7;5639:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5609:8;:81::i;:::-;5708:4;5701:11;;5507:213;;;;:::o;9562:108::-;9619:7;9646;:16;9654:7;9646:16;;;;;;;;;;;;;;;;9639:23;;9562:108;;;:::o;12597:257::-;12658:4;12681:10;:14;12692:2;12681:14;;;;;;;;;;;;;;;;;;;;;;;;;12677:144;;;12712:39;12727:2;12731:5;12748:1;12738:12;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;12738:12:0;;;;12712:14;:39::i;:::-;;12677:144;;;12784:25;12799:2;12803:5;12784:14;:25::i;:::-;;12677:144;12840:4;12833:11;;12597:257;;;;:::o;2864:130::-;2920:4;2944:21;2957:7;2944:8;:12;;:21;;;;:::i;:::-;:41;;;;2969:16;2977:7;2969;:16::i;:::-;2944:41;2937:49;;2864:130;;;:::o;11516:285::-;11613:4;11638:24;11646:7;11655:6;11638:7;:24::i;:::-;11630:33;;;;;;11699:7;11676:47;;;11724:10;11736:6;11752:4;11759:9;11676:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11676:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11676:93:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11676:93:0;;;;11789:4;11782:11;;11516:285;;;;;:::o;4617:131::-;4689:7;4716:8;:15;4725:5;4716:15;;;;;;;;;;;;;;;:24;4732:7;4716:24;;;;;;;;;;;;;;;;4709:31;;4617:131;;;;:::o;9091:307::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9199:9;9211:1;9199:13;;9194:197;9218:8;;:15;;9214:1;:19;9194:197;;;9278:36;9303:7;;9311:1;9303:10;;;;;;;;;;;;;9278:7;:20;9286:8;;9295:1;9286:11;;;;;;;;;;;;;;;9278:20;;;;;;;;;;;;;;;;:24;;:36;;;;:::i;:::-;9255:7;:20;9263:8;;9272:1;9263:11;;;;;;;;;;;;;;;9255:20;;;;;;;;;;;;;;;:59;;;;9368:10;9334:45;;9343:8;;9352:1;9343:11;;;;;;;;;;;;;;;9334:45;;;9356:7;;9364:1;9356:10;;;;;;;;;;;;;9334:45;;;;;;;;;;;;;;;;;;9235:3;;;;;;;9194:197;;;;9091:307;;;;:::o;1428:227::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1529:1;1509:22;;:8;:22;;;;1501:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:8;1581:38;;1602:6;;;;;;;;;;;1581:38;;;;;;;;;;;;1639:8;1630:6;;:17;;;;;;;;;;;;;;;;;;1428:227;:::o;12277:104::-;1092:19;1100:10;1092:7;:19::i;:::-;1084:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12368:5;12349:10;:16;12360:4;12349:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12277:104;:::o;6275:254::-;6387:1;6368:21;;:7;:21;;;;6360:30;;;;;;6426:1;6409:19;;:5;:19;;;;6401:28;;;;;;6469:5;6442:8;:15;6451:5;6442:15;;;;;;;;;;;;;;;:24;6458:7;6442:24;;;;;;;;;;;;;;;:32;;;;6506:7;6490:31;;6499:5;6490:31;;;6515:5;6490:31;;;;;;;;;;;;;;;;;;6275:254;;;:::o;14571:165::-;14628:4;14645:9;14696:4;14684:17;14676:25;;14727:1;14720:4;:8;14713:15;;;14571:165;;;:::o;5060:228::-;5139:4;5156:26;5166:4;5172:2;5176:5;5156:9;:26::i;:::-;5193:65;5202:4;5208:10;5220:37;5251:5;5220:8;:14;5229:4;5220:14;;;;;;;;;;;;;;;:26;5235:10;5220:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;5193:8;:65::i;:::-;5276:4;5269:11;;5060:228;;;;;:::o;2029:183::-;2109:18;2113:4;2119:7;2109:3;:18::i;:::-;2101:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:5;2176:4;:11;;:20;2188:7;2176:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2029:183;;:::o;316:150::-;374:7;394:9;410:1;406;:5;394:17;;435:1;430;:6;;422:15;;;;;;457:1;450:8;;;316:150;;;;:::o;5998:269::-;6092:1;6073:21;;:7;:21;;;;6065:30;;;;;;6123:23;6140:5;6123:12;;:16;;:23;;;;:::i;:::-;6108:12;:38;;;;6178:29;6201:5;6178:9;:18;6188:7;6178:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6157:9;:18;6167:7;6157:18;;;;;;;;;;;;;;;:50;;;;6244:7;6223:36;;6240:1;6223:36;;;6253:5;6223:36;;;;;;;;;;;;;;;;;;5998:269;;:::o;6537:273::-;6632:1;6613:21;;:7;:21;;;;6605:30;;;;;;6669;6692:6;6669:9;:18;6679:7;6669:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6648:9;:18;6658:7;6648:18;;;;;;;;;;;;;;;:51;;;;6725:24;6742:6;6725:12;;:16;;:24;;;;:::i;:::-;6710:12;:39;;;;6791:1;6765:37;;6774:7;6765:37;;;6795:6;6765:37;;;;;;;;;;;;;;;;;;6537:273;;:::o;6818:185::-;6890:22;6896:7;6905:6;6890:5;:22::i;:::-;6923:72;6932:7;6941:10;6953:41;6987:6;6953:8;:17;6962:7;6953:17;;;;;;;;;;;;;;;:29;6971:10;6953:29;;;;;;;;;;;;;;;;:33;;:41;;;;:::i;:::-;6923:8;:72::i;:::-;6818:185;;:::o;1843:178::-;1921:18;1925:4;1931:7;1921:3;:18::i;:::-;1920:19;1912:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2009:4;1986;:11;;:20;1998:7;1986:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1843:178;;:::o;158:150::-;216:7;249:1;244;:6;;236:15;;;;;;262:9;278:1;274;:5;262:17;;299:1;292:8;;;158:150;;;;:::o;4756:140::-;4817:4;4834:32;4844:10;4856:2;4860:5;4834:9;:32::i;:::-;4884:4;4877:11;;4756:140;;;;:::o;2220:203::-;2292:4;2336:1;2317:21;;:7;:21;;;;2309:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2395:4;:11;;:20;2407:7;2395:20;;;;;;;;;;;;;;;;;;;;;;;;;2388:27;;2220:203;;;;:::o;9963:145::-;10044:4;10050:5;8213:1;8197:7;:13;8205:4;8197:13;;;;;;;;;;;;;;;;:17;8193:102;;;8269:7;:13;8277:4;8269:13;;;;;;;;;;;;;;;;8239:26;8259:5;8239:15;8249:4;8239:9;:15::i;:::-;:19;;:26;;;;:::i;:::-;:43;;8231:52;;;;;;8193:102;10068:32;10084:4;10090:2;10094:5;10068:15;:32::i;:::-;9963:145;;;;;:::o;5728:262::-;5830:1;5816:16;;:2;:16;;;;5808:25;;;;;;5864:26;5884:5;5864:9;:15;5874:4;5864:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5846:9;:15;5856:4;5846:15;;;;;;;;;;;;;;;:44;;;;5917:24;5935:5;5917:9;:13;5927:2;5917:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5901:9;:13;5911:2;5901:13;;;;;;;;;;;;;;;:40;;;;5972:2;5957:25;;5966:4;5957:25;;;5976:5;5957:25;;;;;;;;;;;;;;;;;;5728:262;;;:::o

Swarm Source

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